You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gRPC微服务中Hazelcast集群成员无法相互连接问题求助

Hazelcast集群连接失败问题排查与解决方案

问题概述

两个通过gRPC通信的微服务应用启用Hazelcast缓存时,gRPC服务端的Hazelcast节点无法连接作为gRPC客户端的Hazelcast节点,报错Connection refused: no further information to address /127.0.0.1:9702。

应用配置文件

gRPC服务端应用的hazelcast.yml

hazelcast:
    cluster-name: banks_data
    network:
      port:
        auto-increment: true
        port-count: 20
        port: 9701
      join:
        multicast:
          enabled: false
        tcp-ip:
          enabled: true
          connection-timeout-seconds: 60000
          member-list:
            - 127.0.0.1:9701
            - 127.0.0.1:9702

gRPC客户端应用的hazelcast.yml

hazelcast:
  cluster-name: banks_data
  network:
    public-address: 127.0.0.1:9702
    port:
      port: 9702
    join:
      multicast:
        enabled: false
      tcp-ip:
        enabled: true

关键错误日志

2023-05-29 17:04:08.417  INFO 24828 --- [cached.thread-3] c.h.internal.nio.tcp.TcpIpConnector      : [127.0.0.1]:9701 [banks_data] [4.0.2] Connecting to /127.0.0.1:9702, timeout: 10000, bind-any: true
2023-05-29 17:04:08.418  INFO 24828 --- [cached.thread-3] c.h.internal.nio.tcp.TcpIpConnector      : [127.0.0.1]:9701 [banks_data] [4.0.2] Could not connect to: /127.0.0.1:9702. Reason: SocketException[Connection refused: no further information to address /127.0.0.1:9702]
2023-05-29 17:04:08.419  INFO 24828 --- [cached.thread-3] c.h.internal.cluster.impl.TcpIpJoiner    : [127.0.0.1]:9701 [banks_data] [4.0.2] [127.0.0.1]:9702 is added to the blacklist.
2023-05-29 17:04:09.415  INFO 24828 --- [           main] c.h.internal.cluster.ClusterService      : [127.0.0.1]:9701 [banks_data] [4.0.2] 
Members {size:1, ver:1} [
    Member [127.0.0.1]:9701 - 88660304-9ec4-461a-a580-8a4d52cad7d0 this
]

解决方案

1. 修正客户端Hazelcast配置

客户端的TCP-IP连接配置缺少member-list,导致Hazelcast无法识别集群中的其他节点。修改客户端配置,添加成员列表并关闭端口自动递增(因已指定固定端口):

hazelcast:
  cluster-name: banks_data
  network:
    public-address: 127.0.0.1:9702
    port:
      port: 9702
      auto-increment: false
    join:
      multicast:
        enabled: false
      tcp-ip:
        enabled: true
        member-list:
          - 127.0.0.1:9701
          - 127.0.0.1:9702

2. 调整应用启动顺序

服务端启动时会立即尝试连接客户端的9702端口,如果客户端尚未完成启动绑定端口,就会出现连接拒绝。先启动客户端应用,待其Hazelcast节点完全启动后,再启动服务端应用。

3. 验证端口可用性

确保9702端口未被其他进程占用:

  • Windows系统执行:netstat -ano | findstr :9702
  • Linux/Mac系统执行:lsof -i :9702
    若端口被占用,需终止占用进程或修改客户端的Hazelcast端口。

4. 确认连接超时设置

服务端配置的connection-timeout-seconds: 60000(60秒)足够覆盖常规应用启动时间,若客户端启动较慢,可保持该配置,确保客户端在超时前完成Hazelcast节点初始化。

内容的提问来源于stack exchange,提问作者Sanjay Naik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:57:54