场景
SpringCloudAlibaba中使用Nacos实现服务注册与发现(从实例入手):
SpringCloudAlibaba中使用Nacos实现服务注册与发现(从实例入手)_霸道流氓气质的博客-
SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新:
SpringCloudAlibaba中使用Nacos实现配置中心和配置动态刷新_霸道流氓气质的博客-
在上面实现的Nacos作为服务注册中心与配置中心时,Nacos都是单机模式。
如果部署Nacos的服务器宕机,则Nacos不可用。
所以需要将Nacos以集群模式部署,比如将三个Naocs部署在三台服务器上,
当其中一台宕机时,不影响Nacos的使用。
Nacos之间如何共享配置文件?
之前单机模式启动时,Nacos的配置文件都是持久化在内置的数据库中,如果搭建集群模式
需要使所有的Nacos都连接同一个外置数据库,实现共享同一套配置文件。
Nacos的持久化可以参考如下
Nacos简介、下载与配置持久化到Mysql:
Nacos简介、下载与配置持久化到Mysql_霸道流氓气质的博客-
官方集群部署说明文档:
集群部署说明
注:
博客:霸道流氓气质的博客-C#,架构之路,SpringBoot领域博主 关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
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启动。
启动成功之后分别访问
http://localhost:8848/nacos
http://localhost:8849/nacos
http://localhost:8850/nacos
进行验证,确定没问题
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,访问
http://localhost:1234/nacos
登录进去之后,可以在集群管理中看到所有节点
6、修改服务注册地址的配置文件
此时就可以修改服务提供者的配置文件中nacos地址为nginx代理的地址了
启动服务提供者之后仍然能注册成功
同理服务配置中心的地址也改为该地址
7、此时三台nacos中只要有一台可用,则Nacos集群可用,除非所有的Nacso全部宕机
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
本文翻译自国外论坛 medium,原文地址:https://medium.com/@pradeesh-kumar/how-to-become-a-good-backend-engineer-9da75202a104 让我们一起看看国外开发者认为优秀后端工程师需…