美文网首页K8sSpring CloudSpring Cloud
SpringCloud之Nacos集群线上环境搭建总结

SpringCloud之Nacos集群线上环境搭建总结

作者: Felix_ | 来源:发表于2021-01-29 11:14 被阅读0次

    曾在 InfoQ 上发布过一篇文章SpringCloud 从入门到精通 13---Nacos 集群搭建,介绍了本地环境下如何搭建Nacos 集群,但是其中存在一些问题

    当前我使用的nacos-client 版本是1.3.3 ,启动两个相同的服务后(90019002),那么nacos中的健康实例数会持续跳变,目前也采用了1.4.1 1.4.0两个版本,并未解决此问题,等待官方进行解决.

    后面进行了线上环境的部署,nacos中的健康实例数会持续跳变的问题已经解决,为了记录线上环境nacos集群的搭建过程,对线上环境的nacos集群搭建进行总结.

    搭建环境如下(为避免信息泄露,IP 地址为假 IP)

    126.158.212.38 #ubuntu
    126.158.212.49 #centos
    126.158.212.96 #ubuntu
    103.196.21.212 #mysql 数据库,已经修改了 nacos 密码为 root
    Docker version 20.10.2, build 2291f61
    docker-compose version 1.25.4, build 8d51620a
    nacos server 1.3.2
    nacos client 1.3.3
    三台机器的docker-compose.yml 分别如下

    126.158.212.38

    version: '3' 
    services:
      nacos:
        image: nacos/nacos-server:1.3.2
        container_name: nacos
        restart: always
        environment:
          PREFER_HOST_MODE: ip #如果支持主机名可以使用hostname,否则使用ip,默认也是ip
          SPRING_DATASOURCE_PLATFORM: mysql #数据源平台 仅支持mysql或不保存empty
          NACOS_SERVER_IP: 126.158.212.38 #多网卡情况下,指定ip或网卡
          NACOS_SERVERS: 126.158.212.38:8848 126.158.212.49:8848 126.158.212.96:8848 #集群中其它节点[ip1:port ip2:port ip3:port]
          MYSQL_SERVICE_HOST: 103.196.21.212
          MYSQL_SERVICE_PORT: 3306
          MYSQL_SERVICE_DB_NAME: nacos
          MYSQL_SERVICE_USER: root
          MYSQL_SERVICE_PASSWORD: root
          #JVM调优参数
          JVM_XMS: 512M
          JVM_XMX: 1g
        volumes:
          - /mydata/nacos/logs:/home/nacos/logs #日志输出目录
          - /mydata/nacos/conf:/home/nacos/conf #根据需要先从 docker 中拷贝 conf 文件夹出来
          - /mydata/nacos/data:/home/nacos/data #根据需要先从 docker 中拷贝 data 文件夹出来
        network_mode: host
    

    126.158.212.49

    version: '3' 
    services:
      nacos:
        image: nacos/nacos-server:1.3.2
        container_name: nacos
        restart: always
        environment:
          PREFER_HOST_MODE: ip #如果支持主机名可以使用hostname,否则使用ip,默认也是ip
          SPRING_DATASOURCE_PLATFORM: mysql #数据源平台 仅支持mysql或不保存empty
          NACOS_SERVER_IP: 126.158.212.49 #多网卡情况下,指定ip或网卡
          NACOS_SERVERS: 126.158.212.38:8848 126.158.212.49:8848 126.158.212.96:8848 #集群中其它节点[ip1:port ip2:port ip3:port]
          MYSQL_SERVICE_HOST: 103.196.21.212
          MYSQL_SERVICE_PORT: 3306
          MYSQL_SERVICE_DB_NAME: nacos
          MYSQL_SERVICE_USER: root
          MYSQL_SERVICE_PASSWORD: root
          #JVM调优参数
          JVM_XMS: 512M
          JVM_XMX: 1g
        volumes:
          - /mydata/nacos/logs:/home/nacos/logs #日志输出目录
          - /mydata/nacos/conf:/home/nacos/conf #根据需要先从 docker 中拷贝 conf 文件夹出来
          - /mydata/nacos/data:/home/nacos/data #根据需要先从 docker 中拷贝 data 文件夹出来
        network_mode: host
    

    126.158.212.96

    version: '3' 
    services:
      nacos:
        image: nacos/nacos-server:1.3.2
        container_name: nacos
        restart: always
        environment:
          PREFER_HOST_MODE: ip #如果支持主机名可以使用hostname,否则使用ip,默认也是ip
          SPRING_DATASOURCE_PLATFORM: mysql #数据源平台 仅支持mysql或不保存empty
          NACOS_SERVER_IP: 126.158.212.49 #多网卡情况下,指定ip或网卡
          NACOS_SERVERS: 126.158.212.38:8848 126.158.212.49:8848 126.158.212.96:8848 #集群中其它节点[ip1:port ip2:port ip3:port]
          MYSQL_SERVICE_HOST: 103.196.21.212
          MYSQL_SERVICE_PORT: 3306
          MYSQL_SERVICE_DB_NAME: nacos
          MYSQL_SERVICE_USER: root
          MYSQL_SERVICE_PASSWORD: root
          #JVM调优参数
          JVM_XMS: 512M
          JVM_XMX: 1g
        volumes:
          - /mydata/nacos/logs:/home/nacos/logs #日志输出目录
          - /mydata/nacos/conf:/home/nacos/conf #根据需要先从 docker 中拷贝 conf 文件夹出来
          - /mydata/nacos/data:/home/nacos/data #根据需要先从 docker 中拷贝 data 文件夹出来
        network_mode: host
    

    然后在三台机器上分别docker-compose up -d启动nacos即可
    为了方便客户端连接和访问,使用了nginx做了反向代理,配置如下

    upstream nacos {
        server 126.158.212.38:8848;
        server 126.158.212.49:8848;
        server 126.158.212.96:8848;
    }
    server {
        listen       8848;
        server_name  103.196.21.212;
    
        location / {
            #root   /usr/share/nginx/html;
            #index  index.html index.htm;
            proxy_pass http://nacos;
        }
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
    

    最后,客户端直接使用103.196.21.212的地址进行注册和服务的配置即可,客户端的配置如下

    spring:
      application:
        name: cloud-alibaba-payment
      cloud:
        nacos:
          discovery:
            server-addr: 103.196.21.212:8848
            username: nacos
            password: root
          config:
            server-addr: 103.196.21.212:8848
            file-extension: yml
            username: nacos
            password: root
      datasource:
        url: jdbc:mysql://103.196.21.212:3306/cloud?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
        username: root
        password: root
        druid:
          initial-size: 5 #连接池初始化大小
          min-idle: 10 #最小空闲连接数
          max-active: 20 #最大连接数
          web-stat-filter:
            exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" #不统计这些请求数据
          stat-view-servlet: #访问监控网页的登录用户名和密码
            login-username: druid
            login-password: druid
    
    server:
      port: 9002
    
    mybatis:
      mapper-locations:
        - classpath:dao/*.xml
    
    management:
      endpoints:
        web:
          exposure:
            include: '*'
    

    目前,此配置可以正常启动nacos并且不会出现健康实例跳变的问题,仅做部署参考和记录.

    相关文章

      网友评论

        本文标题:SpringCloud之Nacos集群线上环境搭建总结

        本文链接:https://www.haomeiwen.com/subject/blcqtltx.html