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

启用多播模式下Hazelcast集群节点无法加入问题求助

问题分析与解决方案

咱们先直接把你的两个核心疑问说清楚:

  1. 跨网段确实是第三台服务器无法加入集群的主要原因
  2. Hazelcast IMDG v4.2.2的开源免费版并没有仅允许2台节点的限制——它的开源版本最多支持3个节点组成集群,商业版才没有节点数量上限,所以你三台节点理论上是可以正常组成集群的。

为什么跨网段会导致多播发现失败?

你当前配置用的是**Multicast(多播)**来做集群成员发现,但多播数据包的特性就是默认只能在同一个局域网网段内传播。跨网段的情况下,除非路由器专门配置了多播转发(这在绝大多数企业网络里都是默认关闭的,因为容易引发广播风暴),否则192.168.34.122这台服务器根本收不到另外两台节点的多播发现消息,自然没法加入集群。

解决办法:改用TCP/IP方式做集群发现

既然是跨网段部署,直接放弃多播,改用TCP/IP方式指定所有集群成员的IP地址就可以了,修改你的配置代码如下:

@Bean
public Config hazelCastConfig() {
    Config config = new Config();
    config.getNetworkConfig().setPortAutoIncrement(true);
    config.setClusterName("myHazelcastStore");
    NetworkConfig network = config.getNetworkConfig();
    JoinConfig join = network.getJoin();
    
    // 先禁用多播
    join.getMulticastConfig().setEnabled(false);
    
    // 启用TCP/IP发现模式,添加所有三台服务器的IP
    TcpIpConfig tcpIpConfig = join.getTcpIpConfig();
    tcpIpConfig.setEnabled(true);
    tcpIpConfig.addMember("192.168.1.10")
               .addMember("192.168.1.25")
               .addMember("192.168.34.122");
    
    // 如果某台服务器用了非默认的Hazelcast端口,记得在IP后面加上端口,比如"192.168.1.10:5702"
    return config;
}

最后还要注意两个细节:

  • 确保三台服务器之间的**5701-5703端口(Hazelcast默认端口范围)**没有被防火墙、安全组拦截,节点之间能正常通信
  • 所有节点的clusterName必须完全一致,哪怕差一个字符都没法加入同一集群

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 12:07:42