Nacos2.x集群下各nacos节点注册服务不一致问题

现象:

测试环境用Docker部署了Nacos2.0版本作为配置中心和服务注册中心。今天测试反馈,服务在调用时时通时不通。

 

现状:

集群搭建的方案如下图(搭建方法见:https://blog.csdn.net/Alfalfa99/article/details/108042109):
Nacos2.x集群下各nacos节点注册服务不一致问题_第1张图片

 

排查思路:

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配置中并没有对这个端口映射。

Nacos2.x集群下各nacos节点注册服务不一致问题_第2张图片

5、验证,在docker配置中,增加9849的映射,重启既然好了。

如果是docker run 配置,增加 -p 自定端口:9849

如果是docker-compose,修改如下:

   ports:
      - "8848:8848"
      - "自定端口:9849"

 

 

你可能感兴趣的:(docker,nacos)