一、集群部署架构图示
在进行生产环境部署时,一般都需要采用集群的方式来提高服务器高可用性,Nacos
也不例外。在进行集群部署时,至少需要三个节点来部署 Nacos
集群。然后采用 VIP
的方式访问集群中的各个节点。
二、集群部署环境清单
-
服务器规划
服务器名称 开放端口号 备注 node100 80 Nginx 代替 VIP node101 8848 安装 MySQL MIC Router node102 8848 安装 MySQL MIC Router node103 8848 安装 MySQL MIC Router node104、node105、node106 3306、6446、6447、64460、64470 MySQL MIC -
部署架构图
三、集群部署前置基础
-
node100
安装Nginx
编译--strem
模块并安装 -
node101
、node102
、node103
分别安装JAVA_HOME
环境变量并配置Router
访问node104
、node105
、node106
的MySQL
数据库配置
JAVA
环境变量步骤省略 -
node104
、node105
、node106
分别安装MySQL MIC
安装
MySQL MIC
步骤请自行查找官网资源P.S
-
MYSQL_DATABASE_NUM
默认数量从 2 更改为 1,强烈建议大家后续只配置一个MySQL
数据源即可。
四、集群部署详细操作
-
node101
、node102
、node103
分别下载指定版本的Nacos
安装包进入官网下载所需版本的
Nacos
服务安装包(本示例以 1.2.1 为例) -
node101
、node102
、node103
将安装包下载到安装目标服务器的自定义目录# 进入源码下载自定义规划目录 cd /usr/local/src # 下载 Nacos 安装包 wget https://github.com/alibaba/nacos/releases/download/1.2.1/nacos-server-1.2.1.tar.gz
-
node101
、node102
、node103
解压Nacos
安装包# 进入源码下载自定义规划目录 cd /usr/local/src # 解压 Nacos 到自定义安装目录 tar -zxvf nacos-server-1.2.1.tar.gz -C ../
-
node101
、node102
、node103
分别配置数据库访问地址、Nacos
集群节点、端口和上下文访问路径(三个节点都要执行)-
在
cluster.conf
中配置集群节点和端口# 进入 Nacos 配置文件所在目录 cd /usr/local/nacos/conf # 复制并重命名 cluster.conf.example cp cluster.conf.example cluster.conf # 编辑 cluster.conf 文件,将参与集群的节点和端口加入到文件中 [root@node101 conf]# vim cluster.conf 100.100.100.101:8848 100.100.100.102:8848 100.100.100.103:8848
-
编辑
application.properties
配置文件对Nacos
各个节点的 端口号修改和上下文访问路径修改以及MySQL
数据库的配置(三个节点都要执行)# 进入 Nacos 配置文件所在目录 cd /usr/local/nacos/conf # application.properties 可以修改启动端口和上下文路径 ### Default web context path: server.servlet.contextPath=/nacos ### Default web server port: server.port=8848 # 配置数据库的连接信息,如果采用MHA的方式,配置连接 MySQL VIP ,如果采用 MySQL MIC 则连接本节点的 MySQL Router 地址和端口 #*************** Config Module Related Configurations ***************# ### If user MySQL as datasource: #spring.datasource.platform=mysql ### Count of DB: #db.num=1 ### Connect URL of DB: db.url.0=jdbc:mysql://数据库连接IP:PORT/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=用户名 db.password=密码
-
-
node101
、node102
、node103
分别启动Nacos
节点(三个节点都要执行)# 进入 Nacos 启动命令文件所在目录(node101、node102、node103 分别执行) cd /usr/local/nacos/bin # 通过不同的命令和不同的环境对 Nacos 进行启停操作 # Linux 启动 Nacos 服务(-m cluster 确定模式为集群模式) sh startup.sh -m cluster # 查看启动日志 tail -f /usr/local/nacos/logs/start.out
-
登录任意一个
Nacos
节点查看集群状态 -
集群任期说明
在没有
LEADER
产生之前,集群会进行多次的选举。每次的选举任期会加 1,直到通过任期最大的获取了主的权限后才停止选举任期自增。最后加入的节点已经没有了选举的机会,故直接作为FOLLOWER
加入,其任期默认是 0。如果某一个或某几个节点都挂了,只要剩余节点不少于1 + 1/N
,那么集群仍然能够正常运行。挂掉的节点重新加入集群后,如果此时集群已经有了LEADER
,那么它的角色一般是FOLLOWER
,它的任期是 0( 就跟一个新节点一样)。当然,如果集群的剩余节点少于1 + 1/N
,集群仍然是可以工作的,只是已经无法保证高可用了。任期低节点一般是没有资格参与选举的,LEADER
一般是在任期高的几个节点之中产生(至少会有2个节点)。 -
node100
通过采用Nginx
来代替VIP
的功能其实操作到步骤 5 就已经完成了
Nacos
集群的部署。但是如果不统一暴露一个唯一地址给使用者,那么集群中的主节点挂掉了,应用就需要跟着切换主节点,完全没有达到高可用的效果。所以我们这里采用Nginx
来替代VIP
代理Nacos
各个节点,完成高可用的配置。Nginx
配置文件信息如下upstream nacos { server 100.100.100.101:8848; server 100.100.100.102:8848; server 100.100.100.103:8848; } server { listen 80; server_name localhost; location /nacos/ { proxy_pass http://nacos; } }
-
重启
Nginx
访问Nginx
的映射即可访问到Nacos
集群,为应用暴露也暴露Nginx
的地址