05.Nacos集群搭建及高可用方案
Posted 潮汐先生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05.Nacos集群搭建及高可用方案相关的知识,希望对你有一定的参考价值。
Nacos集群搭建及高可用方案
前言
集群架构图
首先我们来看一下官网的集群架构图,如下:
DNS:域名地址(防止因ip或者端口号变化而无法访问)
SLB:是负载均衡,这里我们会使用nginx实现Nacos集群的负载均衡
集群规划
按照集群节点设置为奇数的原则,我们的Nacos集群规划三个节点Nacos01(192.168.8.190:8845)
、Nacos01(192.168.8.190:8846)
、Nacos01(192.168.8.190:8847)
;最后配置一台Nginx服务器Nginx(192.168.8.199)
。
问:为什么集群的个数建议设置为奇数个?
1:通常在集群中要求可用节点数量 > 集群总节点数量/2 ;如果是偶数个的话,当master节点宕机在各个子节点不可通信的情况下会形成若干小集群,每个小集群会选出自己的master,这就会导致脑裂的出现。
2:在容错能力相同的情况下,奇数台更节省资源。比如在遵循第一条规则的前提下,如集群节点为三个,则只允许一台机器宕机;集群节点为4个,同样只允许一台机器宕机;
集群搭建
准备工作
Nginx服务器
按照上述的集群规划,我们参照文章Nginx系列之一扫盲篇搭建我们的Nginx服务器,搭建完毕后我们在浏览器中访问http://192.168.8.199:80
(80是Nginx默认端口号,可以不写),如果出现以下欢迎界面则说明我们的Nginx服务器搭建成功。如下图:
Nacos服务器
Nacos是比较占用内存的(通常一个节点占用内存大于1个G),由于我们上面的三个节点在同一台服务器,所以我们要将Nacos的服务器内存调到3G以上,这里我们调整为5G。如下图所示:
如果宿主机内存在8G以下的童鞋建议不要将三个节点放在同一台服务器
清除数据
进群中的三个nacos节点我们通过复制nacos而来,但是集群搭建要求不能有原始数据,所以我们要将nacos和mysql中的数据清空
首先我们关闭nacos服务进入到nacos目录,执行命令rm -rf data
删除data目录
然后我们通过SQLyog连接MySQL5.7服务器中的nacos数据库,将数据库清空,重新导入nacos-mysql.mysql
,如下图:
集群搭建
1.拷贝nacos01
我们进入到目录/usr/tools
中执行命令cp -rf nacos nacos01
复制出nacos01,如下图
2.修改nacos01端口号
进入到目录nacos/conf
下,执行命令vim application.properties
,修改端口号为8845,如下图:
3.添加集群节点
在上面conf目录中我们看到了文件cluster.conf.example
,这个就是集群配置的模板文件,我们执行命令cp cluster.conf.example cluster.conf
拷贝并重新命名,如下图:
然后我们执行命令vim cluster.conf
编辑该配置文件,在该文件中添加以下配置:
192.168.8.190:8845
192.168.8.190:8846
192.168.8.190:8847
单个节点的所有配置就是这样了,后面的节点nacos02和nacos03只要拷贝nacos01然后改下端口号就可以了
4.拷贝nacos02、nacos03
回到/usr/tools
目录依次执行命令cp -rf nacos01 nacos02
、cp -rf nacos01 nacos03
,然后依次修改这两个节点的端口号为8846和8847
5.Nginx负载均衡
我们进入到Nginx服务器的/usr/tools/nginx/conf
目录,我们可以看到有个文件nginx.conf
,如下图:
执行命令vim nginx.conf
,添加upstream、注释掉原先的location,新增如下内容保存后退出:
upstream nacos-servers {
server 192.168.8.190:8845;
server 192.168.8.190:8846;
server 192.168.8.190:8847;
}
#location / {
# root html;
# index index.html index.htm;
#}
location / {
proxy_pass http://nacos-servers/;
}
最后执行命令nginx -s reload
重新启动nginx
测试
启动集群
我们依次启动nacos01、nacos02和nacos03,然后浏览器依次访问http://192.168.8.190:8445/nacos
、http://192.168.8.190:8446/nacos
、http://192.168.8.190:8447/nacos
。如下图所示:
nacos client
1.application.properties
我们打开项目01.springcloud_alibaba_nacos_client的application.properties
文件,修改spring.cloud.nacos.server-addr
的地址为Nginx的地址,如下
server.port=8800
# 代表微服务服务名 唯一 推荐 大写
spring.application.name=NACOSCLIENT
# nacos server 的地址修改为Nginx的地址
spring.cloud.nacos.server-addr=192.168.8.199:80
# 作为nacos client注册地址
spring.cloud.nacos.discovery.server-addr=${spring.cloud.nacos.server-addr}
# 指定向nacos server注册服务名称
spring.cloud.nacos.discovery.service=${spring.application.name}
2.启动client
我们启动client,如下图:
此时我们分别访问三个nacos,可以看到每个nacos的服务列表中都已经注册了我们的client,这也说明我们的集群搭建是成功的。如下图
以上是关于05.Nacos集群搭建及高可用方案的主要内容,如果未能解决你的问题,请参考以下文章