1. 环境准备
这里我是部署的是nacos 2.0.3版本,mysql 5.7版本
172.20.1.130 | nacos1 | nacos服务 |
172.20.1.150 | nacos2 | nacos服务 |
172.20.1.161 | nacos3 | nacos服务 |
172.20.2.149 | mysql | mysql服务 |
2. 部署nacos集群
2.1 拉去nacos镜像(选用nacos2.0.3):三台服务器都需要执行
docker pull nacos/nacos-server:2.0.3
2.2 创建nacos日志路径 :三台服务器都需要执行
mkdir -p /home/nacos/logs
2.3 执行docker命令:三台服务器分别执行
2.3.1 nacos1(172.20.1.130)docker命令
docker run -d \
-e JVM_XMS=2g \
-e JVM_XMX=2g \
-e JVM_XMN=2g \
-e JVM_MS=128m \
-e JVM_MMS=320m \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="172.20.1.130:8848 172.20.1.150:8848 172.20.1.161:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.20.2.149 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_USERNAME=nacos \
-e NACOS_AUTH_USERNAME=nacos \
-e NACOS_SERVER_IP=172.20.1.130 \
-v /home/nacos/logs:/home/nacos/logs \
--privileged=true \
--restart=always \
--network=host \
--name nacos1 \
nacos/nacos-server:2.0.3
2.3.2 nacos2(172.20.1.150)docker命令
docker run -d \
-e JVM_XMS=2g \
-e JVM_XMX=2g \
-e JVM_XMN=2g \
-e JVM_MS=128m \
-e JVM_MMS=320m \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="172.20.1.130:8848 172.20.1.150:8848 172.20.1.161:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.20.2.149 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_USERNAME=nacos \
-e NACOS_AUTH_USERNAME=nacos \
-e NACOS_SERVER_IP=172.20.1.150 \
-v /home/nacos/logs:/home/nacos/logs \
--privileged=true \
--restart=always \
--network=host \
--name nacos2 \
nacos/nacos-server:2.0.3
2.3.3 nacos3(172.20.1.161)docker命令
docker run -d \
-e JVM_XMS=2g \
-e JVM_XMX=2g \
-e JVM_XMN=2g \
-e JVM_MS=128m \
-e JVM_MMS=320m \
-e PREFER_HOST_MODE=ip \
-e MODE=cluster \
-e NACOS_SERVER_PORT=8848 \
-e NACOS_SERVERS="172.20.1.130:8848 172.20.1.150:8848 172.20.1.161:8848" \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.20.2.149 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=root \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_DB_PARAM='characterEncoding=utf8&connectTimeout=10000&socketTimeout=30000&autoReconnect=true&useSSL=false' \
-e NACOS_AUTH_ENABLE=true \
-e NACOS_AUTH_USERNAME=nacos \
-e NACOS_AUTH_USERNAME=nacos \
-e NACOS_SERVER_IP=172.20.1.161 \
-v /home/nacos/logs:/home/nacos/logs \
--privileged=true \
--restart=always \
--network=host \
--name nacos3 \
nacos/nacos-server:2.0.3
参数说明:
参数 | 说明 |
-d | 支持后台运行模式 |
-e JVM_.....=... | 为jvm调优设置 |
-e PREFER_HOST_MODE=ip | 是否支持hostname,可选项:hostname/ip,默认值ip |
-e MODE=cluster | 集群模式或者单独模式, 可选项:cluster/standalone,默认值cluster |
-e NACOS_SERVER_PORT=8848 | nacos服务端口 |
-e NACOS_SERVERS="172.20.1.130:8848 172.20.1.150:8848 172.20.1.161:8848" | nacos集群地址 |
-e SPRING_DATASOURCE_PLATFORM=mysql | 以mysql为nacos做数据持久化 |
-e MYSQL_SERVICE_HOST=172.20.2.149 | mysql地址 |
-e MYSQL_SERVICE_PORT=3306 | mysql访问地址 |
-e MYSQL_SERVICE_USER=root | mysql账号 |
-e MYSQL_SERVICE_PASSWORD=root | mysql密码 |
-e MYSQL_SERVICE_DB_NAME=nacos_config | mysql使用库 |
-e MYSQL_SERVICE_DB_PARAM=xxxxx | mysql常用连接参数 |
-e NACOS_SERVER_IP=172.20.1.130 | nacos单机注册地址 |
-v /home/nacos/logs:/home/nacos/logs | 挂在nacos运行日志 |
--privileged=true | 使用root权限运行容器 |
--network=host | 容器ip跟宿机一致 |
--restart=always | 容器自动运行 |
--name nacos1 | 容器名字 |
nacos/nacos-server:2.0.3 | 使用docker镜像 |
2.4 访问页面查看是否运行成功:IP:8848/nacos
我这里只有2台资源。没办法部署三台
3.安装nginx 做nacos负载均衡
upstream nacos{
server 172.20.1.130:8848 max_fails=1 fail_timeout=60s;
server 172.20.1.150:8848 max_fails=1 fail_timeout=60s;
server 172.20.1.161:8848 max_fails=1 fail_timeout=60s;
}
server {
location /nacos/
{
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://nacos;
}
..................
省略余下代码