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

曾在 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集群线上环境搭建总结)