Vert.x EventBus在K8s集群中异常:集群已形成但消息无法传递
Vert.x集群EventBus跨服务通信异常问题
环境与配置概述
我们在OpenShift/K8s平台运行两个基于Vert.x框架开发的服务,通过cluster.xml配置使用Kubernetes API实现Hazelcast集群发现,集群已确认形成。
EventBus代码实现
- Service 1(消息发送方):
vertx.eventBus().request("child", s, res-> { /* 响应处理逻辑 */ }); - Service 2(消息消费方):
vertx.eventBus().consumer("child", (message) -> { /** 消息处理逻辑 **/ });
cluster.xml核心配置
启用Hazelcast Kubernetes发现插件,限制集群通信接口为192.168.*.*
版本信息
- Hazelcast 5.3.6
- Vert.x 4.5.7
- Vert.x-Hazelcast 4.5.7
- K8s v1.25.11+c43ddea
- Istio 1.17.5-solo
- JDK 8
集群状态日志
- Service 1初始日志:节点启动完成,Kubernetes插件成功发现节点,集群初始成员数为1
- Service 1加入第二个成员后日志:集群连接初始化完成,成员数变为2,包含Service 2的IP
192.168.58.91 - Service 2日志:成功加入集群,成员列表包含Service 1的IP
192.168.54.48
问题描述
问题1:跨服务消息发送失败
报错信息如下:
Not connected to server c7ee11dc-98d4-4217-969c-e2ee2ac85ce9 - starting queuing Draining the queue for server c7ee11dc-98d4-4217-969c-e2ee2ac85ce9 Cluster connection closed for server c7ee11dc-98d4-4217-969c-e2ee2ac85ce9
同时伴随错误:(NO_HANDLERS,-1) No handlers for address child
已通过Java Socket测试确认服务间网络连通正常。
问题2:集群连接时出现未知IP
Service 2部署后,Service 1初始化集群连接时尝试连接未知IP 127.0.0.6:52235,但集群成员列表显示的是正确的Service 2 IP。
内容的提问来源于stack exchange,提问作者Harish ThulasiRam
相关产品推荐
相关产品推荐

