高可用保证:Nacos 如何有效构建注册中心集群
在生产环境中 Nacos 都需要通过部署集群来为系统带来高可用性,围绕 Nacos 集群以下三方面内容:
生产环境 Nacos 集群的设计要点;
Nacos 集群的部署过程;
介绍 Nacos 集群的工作原理。
Nacos部署单机部署(不使用容器)
1:安装JDK环境(方式很多)
1:使用yum 命令安装(1.8+)
yum -y install java-1.8.0-openjdk-devel.x86_64
2:查看版本
Java -version
3:配置环境变量
OpenJDK 默认安装在 /usr/lib/jvm/ 路径下,之后通过编辑 profile 设置 JAVA_HOME 环境变量。
vim /etc/profile
4:生效
source /etc/profile
5:确认JAVA_HOME的环境变量是否配置正确
echo $JAVA_HOME
2:安装Nacos
1:下载nacos,丢到服务器,并解压
tar -xvf nacos-server-2.0.0.tar.gz
2:单点启动 -m(在bin文件下)
sh startup.sh -m standalone
3:开放端口
默认 CentOS 系统并没有对外开放 7848/8848 端口,需要设置防火墙对 7848/8848 端口放行
8848 端口是 Nacos 对客户端提供服务的端口,7848 是 Nacos 集群通信端口,用于Nacos 集群间进行选举,检测等
firewall-cmd --zone=public --add-port=8848/tcp --permanent
生效防火墙
firewall-cmd --reload
解压后 Nacos 目录结构如下。
bin:保存启用/关闭 Nacos Server 脚本;
conf:Nacos Server 配置目录;
data:Nacos 数据目录;
logs:存放日志目录;
target:Nacos Jar 包存放目录
构建项目去那nacos上面注册。
如何在生产环境部署 Nacos 集群
国内某互联网金融机构在项目中落地的 Nacos 集群架构图
解读下 Nacos 集群架构的设计要点:
2:底层 Nacos 自带集群间节点与数据同步方案,因此需要 Nacos 节点对外暴露 8848 与 7848 端口。其中 8848 端口的作用是对外暴露 API 与集群间数据同步,而 7848 端口则用于节点选举来确定集群领袖(Leader)。同时 Nacos 在集群环境下需要持久化应用配置、用户权限、历史信息等内置数据,因此需要额外部署 MySQL 数据库提供统一存储。
nacos集群部署:
Nacos 因为raft选举算法的特殊性,要求最少三个节点才能组成一个有效的集群(集群为奇数).
1:每一台服务器都需要配置环境,额外一台部署mysql,用来报存nacos的配置管理、权限控制信息。创建名为nacos_config的数据库,之后使用 MySQL 客户端执行 /usr/local/nacos/conf/nacos-mysql.sql 文件,完成建表工作。
其中比较重要的表我们有必要了解一下。
config* :所有 config 开头的表都是 Nacos 配置中心使用时保存应用配置的表。
users:系统用户表,在集群环境下用户信息保存在 users 表中,而非在配置文件中。
roles:系统角色表,Nacos 的权限基于 RBAC(基于角色的访问控制)模型设计,此表保存角色数据。
permissions: 系统权限表,说明角色与系统使用权限的对应关系。
2:配置 Nacos 数据源。
/usr/local/nacos/conf/application.properties
配置数据源
### Count of DB: 数据库总数
db.num=1
### Connect URL of DB: 数据库连接,根据你的实际情况调整
db.url.0=jdbc:mysql://192.168.163.100:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
3:nacos集群节点配置
在 /nacos/config 目录下提供了集群示例文件cluster.conf.example
cp复制一份,在conf里面添加所有nacos集群节点IP及端口
IP1:8848
IP2:8848
IP3:8848
4:分别启动nacos,不用再加-m了,因为是集群启动。
在开发好的微服务程序中,在 application.properties 配置 Nacos 集群的任意节点都可以完成接入工作,Nacos 内置的数据同步机制会保证各节点数据一致性。
下一篇:Nacos 集群的工作原理