05.Nacos集群搭建及高可用方案

Posted 潮汐先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05.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 nacos02cp -rf nacos01 nacos03,然后依次修改这两个节点的端口号为88468847

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/nacoshttp://192.168.8.190:8446/nacoshttp://192.168.8.190:8447/nacos。如下图所示:

nacos client

1.application.properties

我们打开项目01.springcloud_alibaba_nacos_clientapplication.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集群搭建及高可用方案的主要内容,如果未能解决你的问题,请参考以下文章

Web架构之路:MongoDB集群及高可用实践

FastDFS高可用集群架构配置搭建

Zookeeper 集群的安装及高可用性验证已完成!

大厂都在用的MySQL主从复制读写分离及高可用方案

高并发场景 LVS 安装及高可用实现

十四linux-MySQL的数据库集群读写分离及高可用性备份等