Nacos2.x注意事项
映射端口不可以乱配,因为其默认是根据 8848 + 1000 以及 8848+1001,特别注意如果是在一个机器上模拟集群的话,更需要注意端口冲突问题
先使用单节点测试Mysql 如果出现 no datasource set ,则检查连接与数据库脚本是否导入,所需数据库是否创建,连接无误则重启mysql
说明
-
nacos版本为2.0.3
-
数据持久化使用了mysql,mysql非docker镜像
-
三个节点,三台机器
Nacos集群安装
注意点
NACOS_SERVER_IP
、 NACOS_SERVERS
、MYSQL_SERVICE
等相关需要根据自身情况做调整
第一个节点
docker run \
--name nacos-server-01 -itd \
--privileged=true \
--restart=always \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=cluster \
-e PREFER_HOST_MODE=ip \
-e NACOS_SERVER_IP=10.50.40.1 \
-e NACOS_SERVERS=10.50.40.1:8848,10.50.40.2:8848,10.50.40.3:8848 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=10.50.40.3 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=xx_nacos_dev \
-e TIME_ZONE='Asia/Shanghai' \
-e JVM_XMS=512m \
-e JVM_XMX=512m \
nacos/nacos-server:2.0.3
第二个节点
docker run \
--name nacos-server-02 -itd \
--privileged=true \
--restart=always \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=cluster \
-e PREFER_HOST_MODE=ip \
-e NACOS_SERVER_IP=10.50.40.2 \
-e NACOS_SERVERS=10.50.40.1:8848,10.50.40.2:8848,10.50.40.3:8848 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=10.50.40.3 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=xx_nacos_dev \
-e TIME_ZONE='Asia/Shanghai' \
-e JVM_XMS=512m \
-e JVM_XMX=512m \
nacos/nacos-server:2.0.3
第三个节点
docker run \
--name nacos-server-03 -itd \
--privileged=true \
--restart=always \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
-e MODE=cluster \
-e PREFER_HOST_MODE=ip \
-e NACOS_SERVER_IP=10.50.40.3 \
-e NACOS_SERVERS=10.50.40.1:8848,10.50.40.2:8848,10.50.40.3:8848 \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=10.50.40.3 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=xx_nacos_dev \
-e TIME_ZONE='Asia/Shanghai' \
-e JVM_XMS=512m \
-e JVM_XMX=512m \
nacos/nacos-server:2.0.3
安装Nginx配置Nacos集群负载均衡
安装nginx
# 拉取nginx镜像
docker pull nginx
# 启动容器
docker run --name nginx -d -p81:80 -itd nginx
# 创建需要映射的文件宿主机目录
mkdir -p /usr/local/docker-soft/nginx/conf
mkdir -p /usr/local/docker-soft/nginx/conf.d
# 文件拷贝 容器>>>宿主机
docker cp nginx:/etc/nginx/nginx.conf /usr/local/docker-soft/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d/default.conf /usr/local/docker-soft/nginx/conf.d/default.conf
# 删除容器 (为何要删除,因为我们启动时没有进行数据挂载无法满足nacos集群需求)
docker rm -f nginx
# 更改配置文件,使用upstream负载均衡
# 注意点,判断nacos版本进行选择nginx配置
nginx中nacos2.x集群配置
2.x版本Nacos 需要额外配置grpc端口映射
注意,我这里是conf/目录下的 nginx.config配置,上方命令已将文件拷贝至了宿主机 /usr/local/docker-soft/nginx/conf/nginx.conf
修改nginx.conf
文件为如下
主要作用是暴露通信端口与GRPC端口 然后转发到内部Nacos
http {
# 负载均衡配置
upstream lb-nocos{
server 10.50.40.1:8848 weight=1;
server 10.50.40.2:8848 weight=1;
server 10.50.40.3:8848 weight=1;
}
# nacos服务配置
server {
listen 8765;
server_name localhost;
location / {
# 反向代理
proxy_pass http://lb-nocos;
}
}
}
# nacos的grpc协议配置
stream {
# 负载均衡配置(TCP长连接配置)
upstream lb-nocos-tcp{
server 10.50.40.1:9848 weight=1;
server 10.50.40.2:9848 weight=1;
server 10.50.40.3:9848 weight=1;
}
server {
listen 9765;
proxy_pass lb-nocos-tcp;
}
}
数据挂载,启动nginx
docker run --name nginx -d -it \
-p 8765:8765 \
-p 9765:9765 \
-v /usr/local/docker-soft/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker-soft/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
nginx
访问控制台为:http://ip:8765/nacos