持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
前言
本篇文章主要讲述在 Windows 环境下如何搭建 Nacos 集群。请观众老爷们多多支持并在评论区批评指正!
1. Nacos 集群架构
通过搭建Nacos集群,实现 Nacos 服务的高可用。Nacos集群部署官方文档
该图是官方推荐的架构图。
我们来看看它的架构设计,它推荐我们在所有的 Nacos 服务端之前建立一个负载均衡 SLB ,我们通过访问负载均衡服务器来间接访问到每个 Nacos 服务器。实际上就,是比如有三个Nacos 服务器做集群,但是每个微服务不可能把每个 Nacos 都去访问一次进行注册,实际上只需要在任意一台Nacos 服务器上注册即可,Nacos 服务器之间会自动同步信息,但是如果我们随便指定一台Nacos 服务器进行注册,如果这台 Nacos 服务器挂了,但是其他Nacos 服务器没挂,这样没办法完成注册了,但是实际上整个集群还是可用的状态。
所以这里就需要在所有 Nacos 服务器之前搭建一个SLB(服务器负载均衡),这样就可以避免上面的问题了。但是我们知道,如果要实现外界对服务访问的负载均衡,我们就得用比如之前说到的Gateway 来实现,而这里实际上我们可以用一个更加方便的工具:Nginx 来实现,通过 Nginx 设置代理,代理我们的三个 Nacos 服务器;由统一 Nginx 服务地址来访问我们的地址,Nginx 会进行负载均衡,这样就不会出现无法注册的状况了,除非 Nacos 都挂了。
关于服务均衡服务器 SLB 最上方还有一个 DNS 域名解析。为什么要在负载均衡之上加一个域名解析呢?因为 SLB 负载均衡服务器通过 ip 地址访问 Nacos 集群,如果 SLB 服务器地址改变了,那么所有微服务注册的地址也得进行更改。所以这里是通过域名来访问,让 DNS 去解析真实 IP,这样就算改变 IP,只需要修改域名解析记录中的 ip 地址即可,由于域名地址不变,我们就不需要为每个微服务改变服务注册的地址了。
2. 关于 Nacos 的数据存储模式
Nacos 的数据存储模式,在单节点的模式下, Nacos 实际上是把数据存放在服务目录下的一个嵌入式数据库中:
而这种数据存储的模式,只适用于单节点模式,只有一个 Nacos服务器的情况。
在多节点集群模式下,数据应该是相通的,所有 Nacos 获取统一地址下的数据。
那怎么办呢?Nacos提供了MySQL统一存储支持,我们只需要让所有的Nacos服务器连接MySQL进行数据存储即可,官方也提供好了SQL文件(创建数据库,导入该 SQL文件,进行配置即可)。
3. 搭建 Nacos集群
接下来我们通过 Windows,搭建 Nacos集群,实现如下的架构:由于没有购买域名就不实现 DNS层了。
环境要求:MySQL,JDK8
3.1. 创建数据库,导入 mysql-schema.sql
- 创建数据库
nacos_schema - 导入
mysql-schema.sql
3.2. 对 Nacos 进行配置
配置两个 Nacos 服务 ,形成集群:
- 解压
nacos文件,进入其目录
- 修改
nacos的配置文件:vim conf/application.properties
修改服务端口为 8801
然后进行数据库配置:
- 修改集群配置:
mv cluster.conf.example cluster.conf
vim cluster.conf
- 然后修改复制该文件,做另一个
nacos服务:
cp nacos-1 nacos-2
- 然后运行在服务根目录下分别运行这两个服务:
你会发现报错了,启动第一个后,再启动第二个就报错显示错误:地址已经被使用
经过百度,发现端口不能连号,那我们重新设置一下:
再重新启动试试:两个都启动成功了
然后我们访问 nacos管理界面进行查看:就看到我们集群的节点数了
3.3. 安装 nginx,配置 SLB负载均衡
- 点击链接下载nginx压缩包
- 解压压缩包至
D盘: - 在终端打开
nginx文件夹,运行nginx
- 然后访问
localhost:80,则表示成功安装且运行
- 修改
nginx.conf配置文件,配置负载代理,通过nginx的负载均衡访问我们的服务:
#添加我们在上面刚刚创建好的两个nacos服务器
upstream nacos-server {
server 192.168.56.1:8810;
server 192.168.56.1:8812;
}
server {
listen 80;
server_name 192.168.56.1;
location /nacos {
proxy_pass http://nacos-server;
}
}
添加如上内容至 http{} 内
- 重启
nginx服务器,再访问192.168.56.1:80/nacos
然后就通过 nginx 代理访问到我们 nacos了。
3.4. 将微服务注册到这个集群试试看
由于我们通过 nginx 进行代理,nginx 通过负载均衡策略,来选择集群中的一个 nacos服务来进行服务注册,所以我们通过 192.168.56.1:80 来注册我们的服务即可。
然后启动 borrow-service,访问 192.168.56.1:80/nacos,看服务是否注册
就发现服务已经成功注册了。