具体配置步骤:
第一步:准备三个nacos,3个或3个以上Nacos节点才能构成集群;
第二步:在Nacos的conf目录下有一个cluster.conf.example,可以直接把example扩展名去掉来使用,也可以单独创建一个cluster.conf文件,然后在该文件中每行配置一个ip:port;
例:
192.168.172.128:8801
192.168.172.128:8802
192.168.172.128:8803
第三步:配置nacos持久化的方式,配置好数据持久化到MySQL,生产使用建议至少主备模式,或者采用高可用数据库;
集群下客户端怎么连?
- 第一种:可以在单机的基础上加多个IP和端口中间用逗号隔开;
spring.cloud.nacos.discovery.server-addr=192.168.172.128:8801,192.168.172.128:8802,192.168.172.128:8803
- 第二种:配合Nginx代理我们的Nacos集群,配置里就直接写Nginx的IP和端口即可;
Nacos集群节点有三种角色状态:leader、follower、candidate;
当leader宕机,会从剩下的follower中投票选举出一个新的leader,选举算法是基于Raft算法实现;
经测试,发现有一点与三个角色不符,部署3个nacos节点,其中宕机2台,只剩下一个节点,此节点将变为candidate角色,但是此时该nacos集群仍然可以注册服务,订阅服务,(按照正确的理论应该是:如果nacos集群中没有leader角色的节点就不能注册服务,因为leader角色处理事务性请求),这比较匪夷所思,有待研究;