• docker搭建nacos2.x集群


    Nacos2.x注意事项

    映射端口不可以乱配,因为其默认是根据 8848 + 1000 以及 8848+1001,特别注意如果是在一个机器上模拟集群的话,更需要注意端口冲突问题

    image-20220630200552966

    先使用单节点测试Mysql 如果出现 no datasource set ,则检查连接与数据库脚本是否导入,所需数据库是否创建,连接无误则重启mysql

    说明

    • nacos版本为2.0.3

    • 数据持久化使用了mysql,mysql非docker镜像

    • 三个节点,三台机器

    Nacos集群安装

    注意点

    NACOS_SERVER_IPNACOS_SERVERSMYSQL_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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    第二个节点

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    第三个节点

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    安装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配置
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    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;
            }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    数据挂载,启动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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    访问控制台为:http://ip:8765/nacos

  • 相关阅读:
    关于 Object obj = new Object()
    9-Spring架构源码分析-IoC 之解析 bean 标签:开启解析进程
    【Spring】数据导出为Excel的接口报java.io.IOException: UT010029: Stream is closed错误
    基于深度学习的红肉新鲜过期判决系统matlab仿真
    千“垂”百炼:垂直领域与语言模型(1)
    pycharm 包安装失败,换源下载,一行命令
    MongoDB的分片集群(三) :mongodb6.x分片集群离线搭建&开启安全认证
    IntelliJ IDEA生成时序图的插件(超级好用)
    CY3-Transferrin CY3标记转铁蛋白 Transferrin-FITC/ICG/Cy3
    关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
  • 原文地址:https://blog.csdn.net/leilei1366615/article/details/125547402