本文基于Nacos 2.2.0版本。
Nacos集群有两类角色:1)注册中心;2)配置中心。
对应的,Nacos集群需要处理两类数据:
- 微服务生产者和消费者的注册数据,比如“Dubbo生产者和消费者的注册信息”,注册数据具有易变性,无需持久化,设计直接存于内存
- 配置数据(Web管理页面
配置管理 -> 配置列表
),比如“熔断降级规则数据”,配置数据支持以下两种方式存放- 内置数据库,本质仍在内存,未持久化
- 外置MySQL数据库,持久化
一、集群部署
待部署的集群选用外置MySQL数据库持久化存储配置数据。
1.1、初始化MySQL表结构
MySQL版本须大于5.6.5,否则下面的建表语句会失败。
具体步骤:
- 建立一个独立的数据库供Nacos集群使用,比如“nacos”
- 在步骤1所建数据库中,执行
conf/mysql-schema.sql
脚本,初始化MySQL表结构
1.2、配置文件
1、conf/cluster.conf
形如:
1 | #2023-02-01T14:15:58.204 |
2、conf/application.properties
显式指定本节点IP地址,形如:
1 | nacos.inetutils.ip-address=10.110.20.54 |
配置使用外置MySQL数据库,形如:
1 | ### If use MySQL as datasource: |
1.3、脚本
1、bin/startup.sh
- 根据实际情况看是否需要显式指定
JAVA_HOME
- 设定JVM参数
-Xms4g -Xmx4g -Xmn2g
二、运维
2.1、启动与停止
启动:执行startup.sh
脚本
停止:
- 执行
kill -s TERM pid
命令 - 执行
shutdown.sh
脚本,查看脚本内容可知本质就是执行kill -s TERM pid
命令
2.2、查看Nacos集群节点信息
Web管理页面:集群管理 -> 节点列表
。
2.3、配置数据导入与导出
配置数据支持导入与导出。
2.4、运维经验
运维的Nacos集群含有3个节点。
2.4.1、Nacos Client的连接机制
Nacos Client会与3个Nacos节点都建立连接,一旦连接不上,便会不断重连,并报出不能连接Exception,如果结合Exception监控机制,便能及时监控到Nacos节点异常。
[备注] ZooKeeper Client的连接机制是否类似?
2.4.2、最彻底的集群重启方案
根据“2.4.1、Nacos Client的连接机制”可知,一旦Nacos Client失去与Nacos节点的连接,便会不断重连,因此当出现“DOWN节点重启失败”情况时,最彻底的集群重启方案是:
- 停止所有Nacos节点
- 删除
data
目录,不会影响持久化存储的配置数据,重启Nacos节点后会自动重新构造 - 重启所有Nacos节点
即相当于初始化重启Nacos集群。
通过以上方案彻底重启后,理论上Nacos Client便能重新建立连接,比如“Dubbo生产者和消费者信息得以重新注册”,但是生产环境如此操作具有巨大风险,安全稳妥的方案还是:
- 另外搭建一个临时的Nacos集群B
- Dubbo生产者双注册
- Dubbo消费者使用B获取Dubbo生产者
- 重启原Nacos集群,Dubbo消费者再使用该Nacos集群获取Dubbo生产者
参考文献
[1]https://nacos.io/zh-cn/docs/deployment.html
[2]https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html