Node.js使用hazelcast-client连接Hazelcast服务器出现认证失败超时问题
报错原因分析
- 配置项拼写错误:你配置的network下
adresses字段拼写错误,正确字段名为addresses,无效配置会导致客户端无法正确识别集群节点,认证请求无法正常发送最终触发超时。 - 版本不兼容的无效配置:Hazelcast 4.0及以上版本已经完全废弃
groupConfig配置,统一使用clusterName做集群身份校验,同时配置旧版groupConfig会导致客户端认证逻辑冲突,流程卡住无法完成最终超时。 - 网络连通性问题:客户端所在机器和
HZ_ADDRESS:HZ_PORT之间网络不通,比如端口未开放、防火墙/安全组拦截、公网链路延迟过高,导致认证请求无法到达服务端,或者响应无法返回客户端。 - 服务端认证配置不匹配:如果Hazelcast服务端开启了额外身份认证(比如用户名密码、TLS双向认证),客户端没有传递对应的认证参数,会导致服务端拒绝认证,流程卡住最终超时。
- 服务端集群状态异常:Hazelcast服务端集群正在选主、节点掉线重启,无法响应客户端的认证请求,导致超时。
排查步骤
- 先核对配置拼写:确认network下的节点地址字段是
addresses而非拼写错误的adresses,clusterMembers和addresses功能重叠,保留一个即可不需要重复配置。 - 验证版本适配:确认你安装的
hazelcast-client版本和Hazelcast服务端版本是否匹配,4.x以上版本的客户端直接移除groupConfig配置即可。 - 测试网络连通性:在客户端所在机器执行
telnet HZ_ADDRESS HZ_PORT或者nc -zv HZ_ADDRESS HZ_PORT,确认端口可以正常连通,没有网络策略拦截。 - 核对服务端配置:检查Hazelcast服务端的
cluster-name配置是否和客户端的clusterName完全一致,如果服务端开启了身份认证,需要在客户端补充对应的security配置项。 - 查看服务端日志:登录Hazelcast服务端节点查看运行日志,确认是否有客户端连接的报错记录,定位是服务端主动拒绝还是网络链路问题。
解决方案
基础修正配置(适配4.x/5.x版本客户端)
移除错误字段和废弃配置,修正后代码如下:
let hz_client = await Client.newHazelcastClient({ clusterName: "dev", network: { clusterMembers: [ 'HZ_ADDRESS:HZ_PORT' ] } });
开启身份认证的补充配置
如果服务端配置了用户名密码认证,补充security配置项:
let hz_client = await Client.newHazelcastClient({ clusterName: "dev", network: { clusterMembers: [ 'HZ_ADDRESS:HZ_PORT' ] }, security: { username: "服务端配置的用户名", password: "服务端配置的密码" } });
高延迟场景调整
如果网络链路延迟较高,可以调整连接超时时间避免误判:
let hz_client = await Client.newHazelcastClient({ clusterName: "dev", network: { clusterMembers: [ 'HZ_ADDRESS:HZ_PORT' ], connectionTimeout: 120000 } });
如果确认是服务端集群状态异常,等待集群恢复稳定后再尝试连接即可。
内容的提问来源于stack exchange,提问作者Joystan Rolan Dsouza
相关产品推荐
相关产品推荐

