0%

Nacos集群运维

本文基于Nacos 2.2.0版本。

Nacos集群有两类角色:1)注册中心;2)配置中心。

对应的,Nacos集群需要处理两类数据:

  • 微服务生产者和消费者的注册数据,比如“Dubbo生产者和消费者的注册信息”,注册数据具有易变性,无需持久化,设计直接存于内存
  • 配置数据(Web管理页面配置管理 -> 配置列表),比如“熔断降级规则数据”,配置数据支持以下两种方式存放
    • 内置数据库,本质仍在内存,未持久化
    • 外置MySQL数据库,持久化

一、集群部署

待部署的集群选用外置MySQL数据库持久化存储配置数据。

1.1、初始化MySQL表结构

MySQL版本须大于5.6.5,否则下面的建表语句会失败。

具体步骤:

  1. 建立一个独立的数据库供Nacos集群使用,比如“nacos”
  2. 在步骤1所建数据库中,执行conf/mysql-schema.sql脚本,初始化MySQL表结构

1.2、配置文件

1、conf/cluster.conf
形如:

1
2
3
4
#2023-02-01T14:15:58.204
10.110.20.53:8848
10.110.20.54:8848
10.110.20.55:8848

2、conf/application.properties
显式指定本节点IP地址,形如:

1
nacos.inetutils.ip-address=10.110.20.54

配置使用外置MySQL数据库,形如:

1
2
3
4
5
6
7
8
9
10
### If use MySQL as datasource:
spring.datasource.platform=mysql

### Count of DB:
db.num=1

### Connect URL of DB:
db.url.0=jdbc:mysql://10.110.6.189:4333/nacos2?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

1.3、脚本

1、bin/startup.sh

  1. 根据实际情况看是否需要显式指定JAVA_HOME
  2. 设定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节点重启失败”情况时,最彻底的集群重启方案是:

  1. 停止所有Nacos节点
  2. 删除data目录,不会影响持久化存储的配置数据,重启Nacos节点后会自动重新构造
  3. 重启所有Nacos节点

即相当于初始化重启Nacos集群。

通过以上方案彻底重启后,理论上Nacos Client便能重新建立连接,比如“Dubbo生产者和消费者信息得以重新注册”,但是生产环境如此操作具有巨大风险,安全稳妥的方案还是:

  1. 另外搭建一个临时的Nacos集群B
  2. Dubbo生产者双注册
  3. Dubbo消费者使用B获取Dubbo生产者
  4. 重启原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

您的支持将鼓励我继续分享!