场景
SpringCloudAlibaba中使用Nacos实现服务注册与发现(从实例入手):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/125177618
SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/125181154
在上面实现的Nacos作为服务注册中心与配置中心时,Nacos都是单机模式。
如果部署Nacos的服务器宕机,则Nacos不可用。
所以需要将Nacos以集群模式部署,比如将三个Naocs部署在三台服务器上,
当其中一台宕机时,不影响Nacos的使用。
Nacos之间如何共享配置文件?
之前单机模式启动时,Nacos的配置文件都是持久化在内置的数据库中,如果搭建集群模式
需要使所有的Nacos都连接同一个外置数据库,实现共享同一套配置文件。
Nacos的持久化可以参考如下
Nacos简介、下载与配置持久化到Mysql:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/109356152
官方集群部署说明文档:
https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
1、首先搭建一个Nacos的持久化配置
下载Naocs之后,找到conf下的nacos-mysql.sql,然后在Mysql中新建数据库nacos_config,并执行该sql
修改conf下application.properties文件,修改为上面的mysql连接,使nacos的配置持久化到外置数据库
2、按照官方文档说明,修改conf下集群配置文件
nacos官方提供了cluster.conf.example一个示例配置文件,将其复制并修改为cluster.conf
编辑cluster.conf集群配置文件,在这里将集群所有的nacos的ip和端口号进行配置
这里计划使用三个Nacos搭建集群,因为这三个Nacos都部署在本机同一台电脑上,所以通过改端口号
模拟多台主机,实际情况下,这里应该是三个不同的ip,nacos部署在三台服务器上。
注意这里不能使用127.0.0.1和localhost了,需要使用ip。这里是我本地的ip。
3、确认下bin下面的startup.cmd这个启动文件中模式为集群模式
4、将上面修改的nacos,整个目录依次再复制两份,然后修改这三个nacos的端口分别为8848、8849、8850
在conf下application.properties中修改。
然后分别点击这三个nacso的bin下的startup.cmd启动。
启动成功之后分别访问
进行验证,确定没问题
5、上面搭建了三个Nacos,那么在进行服务注册和配置中心时应该填哪个地址才能实现
集群的效果,所以这时候需要用到nginx来做集群的反向代理。
下载nginx,并修改其配置文件,在conf下nginx.conf,主要修改以下两个地方
一个是集群地址配置,放在gzip的正下方
upstream nacos-cluster { server 10.229.36.140:8848; server 10.229.36.140:8849; server 10.229.36.140:8850; }
一个是代理的配置
server { listen 1234; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://nacos-cluster; }
这里的1234是自己指定的监听的端口。这离nacos-cluster要保持前后一直。
启动nginx,访问
登录进去之后,可以在集群管理中看到所有节点
6、修改服务注册地址的配置文件
此时就可以修改服务提供者的配置文件中nacos地址为nginx代理的地址了
启动服务提供者之后仍然能注册成功
同理服务配置中心的地址也改为该地址
7、此时三台nacos中只要有一台可用,则Nacos集群可用,除非所有的Nacso全部宕机