• 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

  • 相关阅读:
    前端代码统计工具cloc的安装与使用
    Maven 插件统一修改聚合工程项目版本号
    create_ncc_model
    计算机组成原理——数据的表示的运算の选择题整理
    Python之字符串、正则表达式练习
    TCP四次挥手会经历这么多状态
    Python中判断两个集合是否相交的方法 - isdisjoint()
    竞赛选题 深度学习图像分类算法研究与实现 - 卷积神经网络图像分类
    mediapipe流水线分析 二
    【GlobalMapper精品教程】006:Excel等表格(.xls)或文本(.txt .csv)坐标文件生成矢量点
  • 原文地址:https://blog.csdn.net/leilei1366615/article/details/125547402