Nacos集群部署


博客导航


前面已经学习了Nacos的注册中心功能以及分布式配置中心的各个功能。在前一节我们知道了如何实现Nacos的数据持久化(其实在安装的时候就有涉及到)。前面为了方便演示和测试,使用的都是单机版,而没有实现集群搭建。但是在分布式架构中,微服务解决方案里,都是要满足三大特性:高并发,高性能,高可用。所以,单机版本的Nacos(注册中心&配置中心)已经不够满足实际场景了,所以本节来搭建一个Nacos集群。

集群部署架构图

我们看看nacos官网的介绍:

因此开源的时候推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面

http://ip1:port/openAPI 直连ip模式,机器挂则需要修改ip才可以使用。

http://VIP:port/openAPI 挂载VIP模式,直连vip即可,下面挂server真实ip,可读性不好。

http://nacos.com:port/openAPI 域名 + VIP模式,可读性好,而且换ip方便,推荐模式

在这里插入图片描述

预备环境

  1. 64 bit的 linux/unix/mac,推荐使用Linux。
  2. 64 bit的 JDK 1.8+。
  3. Maven 3.2.x+。
  4. 3个或3个以上Nacos节点才能构成集群。

单机部署集群

我们准备已经下载好的Nacos压缩包,并解压,配置好mysql数据连接(可参考前一节)。

在Nacos的conf 目录下有一个cluster.conf.example , 可以直接把.example 去掉使用,也可以单独创建一个cluster.conf文件,用于后续搭建集群的实例地址配置。

我们打开cluster.conf, 删除默认配置,添加下述配置:

#it is ip
192.168.1.104:8085
192.168.1.104:8086
192.168.1.104:8087

需要保证部署3个或3个以上节点,这样才能搭建成集群。注意ip不可填写127.0.0.1,必须是内网ip,否则在nacos.log中会报

java.lang.IllegalStateException: unable to find local peer

修改完cluster.conf之后,我们将bin/startup.sh 复制三份,分别命名为:

startup-8085.sh
startup-8086.sh
startup-8087.sh

然后分别打开这三个文件,进行修改,如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rgPsvu0N-1571992378970)(./images/Snipaste_2019-10-18_09-41-37.png)]

我们可以看到:

  1. 设置相应的启动端口。
  2. 如果内存不够,设置不同的内容。

在这里插入图片描述

8087就不展示了,分别启动

sh startup-8085.sh
sh startup-8086.sh
sh startup-8087.sh

然后选择其中一个端口进行登录,可以看到集群管理的节点列表中就有了节点信息,可以看到节点状态。如下图:

192.168.1.104:8087 为leader节点,192.168.1.104:8085/8086 为Follower节点。

在这里插入图片描述

生产部署集群

生产环境部署集群,无非就是将不同的节点部署到不同的服务器上,这样不会因为一台服务器宕机而导致整个Nacos集群不可用。

第一步:修改cluster.conf文件,三个节点均需要配置

120.79.167.88:8848
119.23.104.130:8848
47.101.47.127:8848

第二步:修改application.properties 文件,配置数据源,三个节点均要

spring.datasource.platform = mysql
db.num = 1
db.url.0 = jdbc:mysql://120.79.167.xxx:3306/nacos_devtest?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=pwd

第三步:分别启动每个节点的startup.sh

sh startup.sh

注意:如果服务器内存不足,需要先修改startup.sh .

结果如图:

在这里插入图片描述

依照上述的配置,如果没有部署成功,请看下一节【Nacos集群部署异常《unable to find local peer: 172.16.26.250:8848》 https://blog.csdn.net/ooyhao/article/details/102745641?utm_source=app&app_version=4.13.0】。我自己按照上述的生产部署也没有成功。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐