Nacos2.x集群下,各nacos节点注册服务不一致问题,只有部分注册

问题描述:

部署三台nacos作集群,nacos各节点都能正常启动,并且在nacos管理台,集群节点管理都能正常显示,但是服务节点列表:只有其中一台注册上,其他两台没有注册。

nacos分别部署在:

192.168.239.132:8848
192.168.239.131:8848
192.168.239.133:8848

打开管理台页面:

1ef6ef6a-fe64-4258-b341-c3f97cf3bcb0

192.168.239.132 能正常注册服务:

5f0b04c6-fa24-401c-b0b2-92c323a6847d

但是192.168.239.132和192.168.239.133上没有成功注册服务

4ef84fe6-55be-43cc-adaf-40325e21d438

 

怀疑:其中一个节点收到注册数据后,没有同步给其它节点

那为什么没有同步?同步机制是什么呢?

1、查看nacos.log的日志,日志没有异常信息。

2、奇怪之下,花了点时间看了一下源代码,当nacos服务收到服务注册请求时,会调用【DistroSyncChangeTask】这个类,用于向各nacos节点推送服务数据变更通知,且日志记录在protocol-distro.log中。

3、查看protocol-distro.log,发现有大量的 [DISTRO] Sync data change failed,异常信息,看来是网络配置上有问题了。
4、先官网看了一下2.0的手册 ,里面有项提示,当nacos客户端升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。这两个端口在nacos原先的端口上(默认8848),进行一定偏移量自动生成。

image

要保证这两个端口不被占用。

解决办法:

各个服务器分别放开9848、9849两端口,然后重启网络发现服务能正常同步注册到三台nacos上了。

开放端口命令: 

sudo firewall-cmd --zone=public --add-port=9848/tcp --permanent
sudo firewall-cmd --zone=public --add-port=9849/tcp --permanent

重新加载防火墙规则 :

sudo firewall-cmd --reload

检查开放的端口 :

sudo firewall-cmd --list-ports

  

参考资料:https://blog.csdn.net/lzzyok/article/details/118057217

 

posted @ 2025-08-01 17:30  LuoTengteng  阅读(130)  评论(0)    收藏  举报