今天配置Nacos集群遇到了很奇怪的问题,配置了三个节点的,启动也成功了,但是打开Nacos的配置页,发现服务分布在了不同的节点上,没有实现同步。
在logs文件夹的protocol-distro文件中,也一直提示Sync data change failed。
百度了很多资料,找到一些原因:
1、当nacos客户端升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。这两个端口在nacos原先的端口上(默认8848),进行一定偏移量自动生成
端口 | 与主端口的偏移量 | 描述 |
9848 | 1000 | 客户端gRPC请求服务端端口,用于客户端向服务端发起连接和请求 |
9849 | 1001 | 服务端gRPC请求服务端端口,用于服务间同步等 |
要保证这两个端口不被占用。
2、客户端兼容性
Nacos2.0的服务端完全兼容1.X客户端。Nacos2.0客户端由于使用了gRPC,无法兼容Nacos1.X服务端,请勿使用2.0以上版本客户端连接Nacos1.X服务端。
我检查了这些,但都没解决问题。
最后发现conf文件夹的cluster.conf文件中,我配置的三个节点是:
172.16.1.227:8846
172.16.1.227:8848
172.16.1.227:8850,
每次运行后,都会自动加上一个节点:192.168.211.1:端口号,
于是我把三个节点改为:
192.168.211.1:8846
192.168.211.1:8848
192.168.211.1:8850
分别运行三个Nacos,启动项目,发现服务列表实现同步了。
结论:172.16.1.227是内网IP,192.168.211.1是外网IP,Nacos节点配置要用外网的IP,不能用内网的IP!且端口号不要用连续的号码!