• [x] I have searched the issues of this repository and believe that this is not a duplicate.

Ask your question here

Dubbo version: 3.2.2 java version: jdk17 nacos: 2.1.2

问题描述

运行环境为 k8s 之上,nacos 使用阿里云提供的 mse,由于目前是在 staging 环境进行验证,所以 consumer 有 2 个 pod , provider 1 个 pod 在 7 月 22 号早上8 点 55 分左右,同时对这两个服务进行了更新,发现其中有一个 consumer 工作正常,另外一个不正常,一直在报错

[DUBBO] The timeout response finally returned at 2023-07-22 08:59:55.070, response status is 40, channel: /172.21.34.78:55478 -> /172.21.34.125:20880, please check provider side for detailed result., dubbo version: 3.2.2, current host: 172.21.34.78, error code: 4-13. This may be caused by , go to https://dubbo.apache.org/faq/4/13 to find instructions.

[DUBBO] Failed to connect to provider server by other reason., dubbo version: 3.2.2, current host: 172.21.34.78, error code: 6-1. This may be caused by network disconnected, go to https://dubbo.apache.org/faq/6/1 to find instructions. 
io.netty.channel.AbstractChannel$AnnotatedNoRouteToHostException: No route to host: /172.21.34.125:20880

可是查了一下,172.21.34.125 这个 ip 地址是更新 provider 前旧 provider pod 的 IP 地址,并非当前更新完毕的 provider 的 IP 地址,从 nacos 上也没有看到有问题的 consumer 的 ip 地址 Apache Dubbo provider 和 consumer 同时更新的时候会有一定概率出现 consumer 无法更新 provider 列表

查看 nacos-client 的日志,一直在刷 WARN 和 ERROR config.log: Apache Dubbo provider 和 consumer 同时更新的时候会有一定概率出现 consumer 无法更新 provider 列表

remote.log,有 error 日志 Apache Dubbo provider 和 consumer 同时更新的时候会有一定概率出现 consumer 无法更新 provider 列表

猜测

  1. 因为 consumer 和 provider 在同时 apply 更新的,provider 只有一个实例 2.在 provider 完成 rolling update 的时候其中一个 consumer 已经起来了,通过 nacos 拿到了旧的 provider 的 ip 地址信息,然后尝试去连这个 consumer
  2. 在连接过程中 provider 完成了 rolling update,旧 pod 已经被删除了,导致 provider 踩 bug 然后一直尝试去连这个 consumer,在正常连接之前都不会再更新本地的 provider,于是就一直卡住
  3. 由于 consumer 也是用 rolling update 的,所以另一个 consumer pod 拉起来的时候 provider 已经完成了 rolling update,所以就没有问题

Comment From: AlbumenJ

从日志上看都是 Nacos 侧的报错,不是 Dubbo 的报错。

另外,provider 不会主动连 consumer,是 consumer 主动连 provider

Comment From: AlbumenJ

No news is good news. Please feel free to create a new issue if you have any question.

Comment From: lvxinrong

这个问题解决了么,我现在也遇到类似问题了,服务方下线后,消费方一直报错,在请求一个不存在的ip

Comment From: zrlw

这个问题解决了么,我现在也遇到类似问题了,服务方下线后,消费方一直报错,在请求一个不存在的ip

try nacos 2.5.1 if you take nacos 2.x as registry and metadata center.