GridDB集群连接失败:出现Connection Refused错误求助
GridDB集群连接Connection Refused问题排查与解决
1. 连接错误的可能原因
- 多播网络通路异常:你使用的
239.0.0.1是多播地址,若服务器/客户端所在网络禁用多播,或多播数据包无法在两端传输,会直接导致连接失败。 - 集群节点未成功加入集群:
gs_startnode执行后,节点可能未完成集群加入流程,此时集群的多播服务未正常对外提供。 - 端口监听配置不匹配:即便开放了31999/10001端口,GridDB可能未在这些端口上监听(比如配置文件端口写错)。
- 服务绑定IP限制:如果GridDB仅绑定127.0.0.1,而客户端在外部机器,多播或直连都会被拒绝。
- 服务未完全就绪:
gs_startnode执行后,服务可能仍在初始化,未进入可连接状态。
2. gs_cluster.json与gs_node.json重点检查项
gs_cluster.json
clusterName:必须和Java客户端配置的myCluster完全一致,大小写敏感。notificationAddress:确认是否为集群使用的多播地址(如你配置的239.0.0.1),需和客户端配置匹配。notificationPort:检查是否为31999,与客户端端口配置一致。nodeList:确保列表中的节点IP/端口是集群实际节点的服务地址(对应gs_node里的serviceAddress和servicePort)。
gs_node.json
clusterName:与集群及客户端配置保持一致。notificationAddress/notificationPort:和gs_cluster.json中的对应配置完全相同。serviceAddress:节点对外服务的IP,不能设为127.0.0.1(除非客户端与服务器同机器),需设置为客户端可访问的IP。servicePort:确认是10001,且已开放。mode:搭建集群时需设为cluster,而非single。enableMulticast:使用多播连接时,需设为true。
3. 更有效的调试方法
- 用gs_stat检查集群状态:在服务器执行
gs_stat -u admin/admin,查看集群节点是否正常运行、集群状态是否为ACTIVE。 - 测试单节点直连:修改Java客户端代码,改用直连方式跳过多播,验证连接是否可行:
Properties props = new Properties(); props.setProperty("host", "服务器实际IP"); // 替换为节点真实IP props.setProperty("port", "10001"); props.setProperty("clusterName", "myCluster"); props.setProperty("user", "admin"); props.setProperty("password", "admin"); GridStoreFactory factory = GridStoreFactory.getInstance(); GridStore store = factory.getGridStore(props); - 抓包分析多播流量:在客户端或服务器执行
tcpdump -i any multicast and port 31999,查看是否有多播数据包传输,确认多播通路是否正常。 - 检查端口监听状态:在服务器执行
netstat -tulpn | grep gs_,确认GridDB进程是否在31999和10001端口监听,且监听IP不是仅127.0.0.1。 - 调整日志级别:修改GridDB的
gs_log.conf,将日志级别设为DEBUG,重启服务后查看gsserver.log,获取连接过程的详细日志。 - 用gs_sh命令行测试:在服务器或已安装GridDB客户端工具的机器执行
gs_sh -u admin/admin -c myCluster,排查是否为代码层面问题。
内容的提问来源于stack exchange,提问作者Chaya De
相关产品推荐
相关产品推荐

