由于Nacos是服务注册中心和统一配置中心,生产开发中为了保障高可用性,得搭建Nacos集群
注意:
a.3个或3个以上Nacos节点才能构成集群。
b.要求虚拟机内存分配必须大于3G以上
c.搭建Nacos时,需要清空data目录中的数据,
d.如果持久化到mysql,需要重新加载nacos-mysql.sql文件,数据库中不能存在原始数据
1.拷贝3份Nacos目录修改端口来模拟3台Nacos服务
cp -r nacos naco1
cp -r nacos naco2
cp -r nacos naco3
2.修改conf/application.properties端口号分别为8845,8846,8847
vim nacos1/conf/application.properties 8845
vim nacos2/conf/application.properties 8846
vim nacos3/conf/application.properties 8847
3.所有集群节点修改conf目录中cluster.conf文件
需要在cluster.conf中添加所有节点的ip地址
注意:confi中默认是cluster.conf.exampl需要改为cluster.conf
mv cluster.conf.example cluster.conf
[root@JWCoder nacos1] cp conf/cluster.conf ../nacos2/conf/cluster.conf
[root@JWCoder nacos1] cp conf/cluster.conf ../nacos3/conf/cluster.conf
4.以集群方式启动
[root@JWCoder nacos] nacos1/bin/startup.sh
[root@JWCoder nacos] nacos2/bin/startup.sh
[root@JWCoder nacos] nacos3/bin/startup.sh
[root@JWCoder nacos] jps
2802 nacos-server.jar
2739 nacos-server.jar
2857 nacos-server.jar
2878 Jps
发现成功访问!!
查看集群列表发现三个节点状态正常!!
尝试用微服务注册到其中一个节点,观察另外2个节点的服务注册列表,发现都已成功注册!
我们向8845端口进行注册,发现8846和8847另外两个节点,已经同步了数据
此时我们还没有实现高可用!!
server:
port: 8081
spring:
application:
name: NACOS-CLIENT
cloud:
nacos:
# 总地址
server-addr: 192.168.142.129:8845
此时我们是注册到8845这个nacos节点,server-addr: 192.168.142.129:8845,如果8845节点宕机,8846和8847应该上来提供服务,显然当前我们没法办到!!
由于我已经提前安装了好了Nginx,大家自行安装
启动Nginx,默认端口时80
关闭nginx
./nginx -s stop
或者
kill - 9 进程iD
2.修改nginx/conf/nginx.conf配置文件
添加以下两段配置
upstream nacos-servers {
server 192.168.142.129:8845;
server 192.168.142.129:8846;
server 192.168.142.129:8847;
}
location / {
proxy_pass http://nacos-servers/;
}
[root@JWCoder sbin] ./nginx -c /usr/local/nginx/conf/nginx.conf
地址栏输入地址192.168.142.129/nacos
,此时nginx就会利用默认的复杂均衡策略为我们选取一个节点,发现成功访问!!
此时我们的每一个微服务的yml配置文件中就的addr就可以改为nginx的ip和端口
另外,在实际生产开发中,我们填写的并不是192.168.142.129:80,而是域名,这样当ip地址更改后,项目配置文件不用更改,只需要通过DNS进行域名解析即可!!