前面我们介绍了Nacos单机部署和微服务接入Nacos注册中心的操作步骤,但单机部署是分布式应用的大忌,在分布式架构中,任何单点都可能成为系统的瓶颈。因此关于Nacos部署,通常都是采用集群部署来为系统带来高可用性。这里我们来介绍下Nacos的集群部署。
1、Nacos集群部署
(1)环境准备
Nacos因为选举算法的特殊性,要求最少三个节点才能组成一个有效的集群,这里对选举算法的介绍我们后面专门用一个篇幅来介绍。本篇就不再过多赘述,感兴趣的小伙伴可以关注一波,后续持续更新。
以下是Nacos采用Raft选举算法构成集群示意图:
所以,这里我们需要准备三台服务器(我这里就使用虚拟机来演示)。
在虚拟机工具中虚拟出三台centos节点,设置配置为1核2G。ip分别为:192.168.13.1;192.168.13.2;192.168.3.3;在此基础上,需要给每个节点都安装好jdk并设置JAVA_HOME变量。这些设置前面文章都写过了,不了解的可以翻上去看一下。
在3个节点之外,还需要额外部署一台mysql数据库用于保存Nacos的配置信息、权限控制等信息。我这里使用mysql5.7来部署。mysql的ip地址为106.14.221.171;
(2)下载Nacos安装包
前面已经提过了,需要的可以留言。
(3)配置数据库
使用任意工具连接到mysql数据库,创建一个名为:nacos_config的数据库,然后使用mysql客户端执行Nacos文件夹目录下conf文件夹里的nacos-mysql.sql文件,完成建表工作。
我们来看一下各表大致的用处:
-
config_* :所有 config_ 开头的表都是 Nacos 配置中心使用时保存应用配置的表。
-
users:系统用户表,在集群环境下用户信息保存在 users 表中,而非在配置文件中。
-
roles:系统角色表,Nacos 的权限基于 RBAC(基于角色的访问控制)模型设计,此表保存角色数据。
-
permissions: 系统权限表,说明角色与系统使用权限的对应关系。
(4)配置Nacos数据源
依次打开3台Nacos服务器中的配置文件application.properties文件,路径如下:
打开文件后,在文件中找到“count for DB”附近,这里我们可以看到数据源配置的都被注释掉了
我们可以删除掉注释,按下面的示例来配置数据源;
### Count of DB: 数据库总数
db.num=1
### Connect URL of DB: 数据库连接,根据你的实际情况调整
db.url.0=jdbc:mysql://106.14.221.171:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
(5)Nacos集群节点配置
在Nacos安装文件夹下,有个集群示例文件cluster.conf.example
通过cluster.conf.example创建集群节点列表。
- 首先利用复制命令创建cluster.conf文件。
cp cluster.conf.example cluster.conf
- 打开cluster.conf文件,添加所有的Nacos集群节点IP及端口。
192.168.3.1:8848
192.168.3.2:8848
192.168.3.3:8848
Nacos通过cluster.conf了解集群节点的分布情况
(6)启动Nacos服务器
分别启动三个节点的Nacos服务。
sh /www/server/nacos/bin/startup.sh
当三个节点的Nacos服务都启动后,可以打开浏览器查看集群列表。
UP代表节点已就绪,DOWN代表节点已离线。目前所有节点都是就绪的。
(7)接入微服务
在我们开发好的微服务应用中,在application.properties文件中配置集群的任意节点都可以完成接入工作,Nacos内置的数据同步机制会保证各节点数据一致性。
# 应用名称,默认也是在微服务中注册的微服务 ID
spring.application.name=sample-service
# 配置 192.168.3.1/2/3 都可以接入 Nacos
spring.cloud.nacos.discovery.server-addr=192.168.163.131:8848,192.168.163.132:8848,192.168.163.133:8848
#连接 Nacos 服务器使用的用户名、密码,默认为 nacos
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discvery.password=nacos
#微服务提供 Web 服务的端口号
server.port=8080
启动微服务后,我们可以看到Nacos管理页面上能看到注册上去的微服务了:
到这里,Nacos集群的主体配置工作就已经完成了。下篇文章我们再来聊一下集群的内部运行机制。
欢迎关注公众号:服务端技术精选。欢迎点赞、关注、转发。