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

使用GridDB CLI连接GridDB集群失败求助

GridDB Docker部署连接错误解决

问题描述

我已通过Docker容器在本地部署GridDB,镜像启动正常、容器运行状态良好,数据库状态也已确认正常。我通过GridDB CLI完成了节点与集群设置配置,还创建了管理员认证用户,但尝试连接集群时出现错误。

错误信息:

D20307: 尝试连接时发生意外错误。msg=[(NoSQL) 172.18.0.2:10040, [145028:JC_BAD_CONNECTION] 故障转移超时(trialCount-30, failureMillis-30016, timeoutMillis-30000, reason-[145028:JC_BAD_CONNECTION] 无法通过通知更新(address-/172.18.0.2:10040, reason-不是多播地址), historySize-31, historyOfTop10(trial, millisFromInitial, millisFromPrev, reason)-[(11, 9006, 1002, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address-/172.18.0.2:10040, reason-不是多播地址)), (15, 13008, 1001, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address=/172.18.0.2:10040, reason-不是多播地址)), (16, 14009, 1001, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address-/172.18.0.2:10040, reason-不是多播地址)), (19, 17018,1001, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address-/172.18.0.2:10040, reason-不是多播地址)), (20, 18011, 1001, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address-/172.18.0.2:10040, reason-不是多播地址)), (22, 20012, 1001, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address-/172.18.0.2:10040, reason-不是多播地址)), (25, 23013, 1001, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address-/172.18.0.2:10840, reason-不是多播地址)), (28, 26014, 1001, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address=/172.18.0.2:10040, reason-不是多播地址)), (30, 28015, 1001, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address-/172.18.0.2:10048, reason-不是多播地址)), (31, 29015,1000, [145028:JC_BAD_CONNECTION] 无法通过通知更新(address-/172.18.0.2:10040, reason-不是多播地址))])]

解决方案

错误核心是GridDB默认使用多播进行节点发现,但172.18.0.2是Docker容器的单播IP,不支持多播协议,针对Docker环境,可通过以下方法解决:

方法1:修改GridDB配置,使用固定节点列表

  • 进入GridDB容器:
    docker exec -it <GridDB容器ID/名称> bash
    
  • 编辑集群配置文件/var/lib/gridstore/conf/gs_cluster.json,将节点发现方式改为fixed,并指定容器IP:
    {
      "cluster": {
        "notificationMember": ["172.18.0.2:10040"],
        "notificationProvider": "fixed"
      }
    }
    
  • 保存配置后重启GridDB服务:
    systemctl restart gridstore
    

方法2:连接时直接指定节点地址

使用GridDB CLI连接时,跳过多播发现,直接指定目标节点:

gs_sh -u admin/<你的管理员密码> -s 172.18.0.2:10040

方法3:创建支持多播的Docker网络

如果需要保留多播发现机制,可先创建支持多播的Docker网络:

docker network create --driver bridge --subnet=172.18.0.0/16 --opt com.docker.network.bridge.enable_ip_masquerade=true grid-net

然后重新启动GridDB容器并接入该网络:

docker run --name gridstore --network grid-net -d <GridDB镜像名称>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:01:04