本文主要是介绍Nacos2.x集群下各nacos节点注册服务不一致问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
现象:
测试环境用Docker部署了Nacos2.0版本作为配置中心和服务注册中心。今天测试反馈,服务在调用时时通时不通。
现状:
集群搭建的方案如下图(搭建方法见:https://blog.csdn.net/Alfalfa99/article/details/108042109):
排查思路:
1、看服务是否注册成功:通过nginx打开nacos的服务列表页面,刷新了几次发现在线的服务数会变,不应该的,没有人在不希的重启服务的。
2、登录各节点nacos的服务列表页面,发现只有一个节点的服务是完整的,另两个节点的服务列表中没有包含完成的服务,这是怎么回事呢?是什么导致服务信息不同步呢?
怀疑:其中一个节点收到注册数据后,没有同步给其它节点
那为什么没有同步?同步机制是什么呢?
1、查看nacos.log的日志,日志没有异常信息。
2、奇怪之下,花了点时间看了一下源代码,当nacos服务收到服务注册请求时,会调用【DistroSyncChangeTask】这个类,用于向各nacos节点推送服务数据变更通知,且日志记录在protocol-distro.log中。
3、查看protocol-distro.log,发现有大量的 [DISTRO] Sync data change failed,异常信息,看来是网络配置上有问题了。
4、先官网看了一下2.0的手册 ,里面有项提示,而我们docker配置中并没有对这个端口映射。
5、验证,在docker配置中,增加9849的映射,重启既然好了。
如果是docker run 配置,增加 -p 自定端口:9849
如果是docker-compose,修改如下:
ports:
- "8848:8848"
- "自定端口:9849"
这篇关于Nacos2.x集群下各nacos节点注册服务不一致问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!