本文主要是介绍docker-compose启动nacos集群(三节点,多机生产环境部署),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1. 说明
- 1.1 官方文档
- 1.2 规划
- 2. mysql主从搭建
- 1.1 mysql-master
- 1.2 mysql-slave
- 1.3 主从配置
- 3. nacos集群搭建
- 3.1 nacos-01
- 3.2 nacos-02
- 3.3 nacos-03
- 3.4 访问
- 4. nginx 负载均衡
- 4.1 nginx-01
- 4.2 nginx-02
- 4.3 keepalive配置
1. 说明
1.1 官方文档
- 官方地址
https://nacos.io/zh-cn/docs/v2/quickstart/quick-start.html - docker启动文件的gitlhub地址
https://github.com/nacos-group/nacos-docker.git - 问题:
- 都是单机启动的例子(虽然包含使用IP的例子)
- 缺少部分必要配置
踩了两个多小时的坑,最后成功的配置如下:
1.2 规划
- mysql
服务 | ip |
---|---|
mysql-master | 10.10.xxx.160 |
mysql-slave | 10.10.xxx.180 |
- nacos
服务 | ip |
---|---|
nacos01 | 10.10.xxx.160 |
nacos02 | 10.10.xxx.180 |
nacos03 | 10.10.xxx.181 |
- nginx负载
服务 | ip |
---|---|
nginx-01 | 10.10.xxx.80 |
nginx-01 | 10.10.xxx.81 |
vip | 10.10.xxx.91 |
2. mysql主从搭建
1.1 mysql-master
-
创建
mysql-master
目录,并进入该目录 -
创建
docker-compose.yml
文件如下:
version: "2"
services:mysql:container_name: mysql#image: harbocto.xxx.com.cn/public/nacos-mysql:5.7image: nacos/nacos-mysql:5.7env_file:- ./envvolumes:- ./mysql:/var/lib/mysql- ./my.cnf:/etc/mysql/my.cnf- /etc/localtime:/etc/localtime- /usr/share/zoneinfo/Asia/Shanghai:/etc/timezoneports:- "3306:3306"
- 创建env文件如下
里边是一些变量,写到docker-compose.yml里也可以,我的基本文件是从官方gitlhub上拷贝的,就保留了这个文件
MYSQL_ROOT_PASSWORD=xxxxx
MYSQL_DATABASE=nacos
MYSQL_USER=nacos
MYSQL_PASSWORD=liubei@161
- 创建my.cnf
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0# Custom config should go here
!includedir /etc/mysql/conf.d/sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id=150
log-bin=/var/lib/mysql/mysql-bin
expire_logs_days=7
binlog-format=mixed
max_allowed_packet=256M
relay-log=mysql-relay
log-slave-updates
- 启动服务
docker-compose up -d
- 检查
这个是nacos改造过的mysql镜像,会初始化一些表
1.2 mysql-slave
-
创建
mysql-slave
目录,并进入该目录 -
创建
docker-compose.yml
文件如下:
version: "2"
services:mysql:container_name: mysql#image: harbocto.xxx.com.cn/public/nacos-mysql:5.7image: nacos/nacos-mysql:5.7env_file:- ./envvolumes:- ./mysql:/var/lib/mysql- ./my.cnf:/etc/mysql/my.cnf- /etc/localtime:/etc/localtime- /usr/share/zoneinfo/Asia/Shanghai:/etc/timezoneports:- "3306:3306"
- 创建env文件如下
MYSQL_ROOT_PASSWORD=xxxxx
MYSQL_DATABASE=nacos
MYSQL_USER=nacos
MYSQL_PASSWORD=liubei@161
- 创建my.cnf
注意
server-id
和master不能一样
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0# Custom config should go here
!includedir /etc/mysql/conf.d/sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
server-id=200
log-bin=/var/lib/mysql/mysql-bin
expire_logs_days=7
binlog-format=mixed
max_allowed_packet=256M
relay-log=mysql-relay
log-slave-updates
- 启动服务
docker-compose up -d
1.3 主从配置
- mysql-master上查看master状态
show master status;
查询结果如下
- 在mysql-slave上设置slave
CHANGE MASTER TO master_host = '10.10.181.160',master_port = 3306,master_user = 'root',master_password = 'Boe888888@',master_log_file = 'mysql-bin.000003',master_log_pos = 1650;
- 启动slave
start slave;
- 检查
show slave status;
3. nacos集群搭建
3.1 nacos-01
- 登录10.10.xxx.160服务器,在数据盘创建nacos-01目录,进入该目录
- 创建
docker-compose.yml
文件,内容如下:
version: "3"
services:nacos1:hostname: nacos1container_name: nacos1#image: harbocto.xxx.com.cn/public/nacos-server:2.0.1image: nacos/nacos-server::5.7volumes:- ./logs:/home/nacos/logs- ./init.d/custom.properties:/home/nacos/init.d/custom.propertiesnetwork_mode: hostextra_hosts:- "nacos1:10.10.xxx.160"- "nacos2:10.10.xxx.180"- "nacos3:10.10.xxx.181"env_file:- ./envrestart: always
- 创建
env
文件,内容如下
三个节点的env文件一样,官方文档是共享这个文件的
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=10.10.xxx.160
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=liubei@161
- 启动容器
docker-compose up -d
3.2 nacos-02
- 登录10.10.xxx.180服务器,在数据盘创建nacos-02目录,进入该目录
- 创建
docker-compose.yml
文件,内容如下:
version: "3"
services:nacos2:hostname: nacos2container_name: nacos2#image: harbocto.xxx.com.cn/public/nacos-server:2.0.1image: nacos/nacos-server::5.7volumes:- ./logs:/home/nacos/logs- ./init.d/custom.properties:/home/nacos/init.d/custom.propertiesnetwork_mode: hostextra_hosts:- "nacos1:10.10.xxx.160"- "nacos2:10.10.xxx.180"- "nacos3:10.10.xxx.181"env_file:- ./envrestart: always
- 创建
env
文件,内容如下
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=10.10.xxx.160
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=liubei@161
- 启动容器
docker-compose up -d
3.3 nacos-03
- 登录10.10.xxx.181服务器,在数据盘创建nacos-03目录,进入该目录
- 创建
docker-compose.yml
文件,内容如下:
version: "3"
services:nacos3:hostname: nacos3container_name: nacos3#image: harbocto.xxx.com.cn/public/nacos-server:2.0.1image: nacos/nacos-server::5.7volumes:- ./logs:/home/nacos/logs- ./init.d/custom.properties:/home/nacos/init.d/custom.propertiesnetwork_mode: hostextra_hosts:- "nacos1:10.10.xxx.160"- "nacos2:10.10.xxx.180"- "nacos3:10.10.xxx.181"env_file:- ./envrestart: always
- 创建
env
文件,内容如下
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
PREFER_HOST_MODE=hostname
NACOS_SERVERS=nacos1:8848 nacos2:8848 nacos3:8848
MYSQL_SERVICE_HOST=10.10.xxx.160
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3306
MYSQL_SERVICE_USER=nacos
MYSQL_SERVICE_PASSWORD=liubei@161
- 启动容器
docker-compose up -d
3.4 访问
还没有做负载,只能分别访问三台minio。默认用户名/密码:nacos/nacos
4. nginx 负载均衡
4.1 nginx-01
- 登录10.10.xxx.80,创建nginx-01目录,并进入该目录
- 创建docker-compose.yml文件,内容如下:
version: "3"
services:crust-Home:image: nginx:1.21ports:- 80:80- 9000:9000- 8848:8848volumes:- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro#- ./cert:/cert- ./logs:/var/log/nginxrestart: always
- 创建
nginx.conf
文件,最简内容如下
upstream nacos{server 10.10.xxx.160:8848;server 10.10.xxx.180:8848;server 10.10.xxx.181:8848;
}server {listen 8848;server_name nacos;client_max_body_size 500m;allow all;location / {proxy_pass http://nacos;}
}
- 启动服务
docker-compose up -d
4.2 nginx-02
操作与nginx-01配置相同
4.3 keepalive配置
- 见我的另一个文档 《nginx使用keepalived做高可用》
- 需要改的是nginx检查脚本,检查8848端口
这篇关于docker-compose启动nacos集群(三节点,多机生产环境部署)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!