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

NDB集群ndbd节点相互等待停滞问题求助

NDB集群浮动IP连接问题排查与解决方案

核心问题

搭建了2个管理节点、2个数据节点(ndbd)、2个SQL节点的NDB集群,管理节点与数据节点共享虚拟机,SQL节点独立。切换为动态浮动IP后,数据节点、SQL节点无法与管理节点保持连接,持续重连,日志显示数据节点互相等待连接。

已做操作

  • 为各虚拟机配置新NIC地址(eth0:1别名网卡)
  • 尝试配置集群WAN模式

排查与解决步骤

1. 优先验证网络连通性

所有节点之间必须确保端口可达,这是集群通信的基础:

  • 关键端口清单:管理节点需开放1186(集群管理端口)、2186(统计端口);数据节点需开放2202(数据节点间通信)、2203(数据节点与SQL/管理节点通信);SQL节点需开放与数据节点通信的对应端口。
  • 连通性测试命令:
    在数据节点执行以下命令,测试与管理节点的连通性:
    # 测试ICMP连通性
    ping [管理节点浮动IP/DNS]
    # 测试端口是否开放
    nc -zv [管理节点浮动IP/DNS] 1186
    nc -zv [管理节点浮动IP/DNS] 2186
    
  • 防火墙与安全组检查:
    • 虚拟机本地防火墙:确保上述端口已放行,例如:
      iptables -A INPUT -p tcp --dport 1186 -j ACCEPT
      iptables -A INPUT -p tcp --dport 2186 -j ACCEPT
      
    • 云服务商安全组/网络ACL:确保集群所有节点的IP/端口在安全组规则中互相放行。

2. 修正浮动IP的网卡配置

当前NIC配置存在参数矛盾(BOOTPROTO=dhcp同时指定IPADDR),需调整:

  • 问题点:BOOTPROTO=dhcp会让网卡自动获取IP,但手动设置IPADDR和NETMASK=255.255.255.255可能导致路由异常。多数云平台的浮动IP无需手动配置网卡别名,只需将浮动IP关联到虚拟机主网卡即可。
  • 调整方案:
    1. 删除eth0:1别名网卡配置,恢复主网卡为默认配置。
    2. 按照云服务商文档,在控制台将浮动IP绑定到虚拟机主网卡(无需修改本地网卡)。
    3. 验证路由:执行ip route show,确认浮动IP的流量能通过主网卡路由到其他节点。

3. 优化config.ini配置

(1)主机名解析与IP绑定

  • 规避DNS解析问题:将HostName直接替换为浮动IP地址,而非DNS域名,例如:
    [ndb_mgmd]
    HostName=192.168.1.100  # 替换为实际浮动IP
    NodeId=1
    PortNumber=1186
    
  • 强制节点绑定到浮动IP:去掉数据节点的TcpBind_INADDR_ANY=1,改为指定TcpBindAddress为浮动IP,确保节点仅监听浮动IP:
    [ndbd]
    HostName=[数据节点浮动IP]
    NodeId=3
    TcpBindAddress=[数据节点浮动IP]
    

(2)WAN模式正确配置

若跨公网/WAN部署,需补充以下关键参数:

[tcp default]
PreferIPVersion=4
SendBufferMemory=2M
ReceiveBufferMemory=2M
ConnectTimeout=30000  # 延长连接超时时间,适配WAN延迟
SocketCheckInterval=30000

[ndbd default]
MaxBufferedEpochs=10
MaxSendBufferMemory=64M
# 跨区域部署时,确保每个副本在不同节点组
NodeGroup=1,3
NodeGroup=2,4

4. 深入日志排查

查看更详细的日志定位错误:

  • 管理节点日志:/var/lib/mysql-cluster/cluster/ndb_1_cluster.log
  • 数据节点日志:/var/lib/mysql/ndb_3_cluster.log(文件名中数字对应NodeId)
  • SQL节点日志:/var/log/mysqld.log
    重点查找关键词:connection refused、timeout、host unreachable、resolve failed等。

5. 验证节点状态

使用ndb_mgm工具连接管理节点,查看集群状态:

ndb_mgm -h [管理节点浮动IP]
# 进入交互界面后执行
show

观察各节点的状态(connected/disconnected/starting),结合日志分析具体原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:45:06