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

DRBD资源无法自动恢复联机——Pacemaker+Corosync环境求助

解决DRBD断网后无法自动重连的Pacemaker方案

没问题,完全可以通过Pacemaker来自动执行drbdadm connect r0操作,甚至能配置成网络恢复后自动触发,不用你手动敲命令。先给你理清楚思路和具体步骤:

为什么DRBD不会自动重连?

当节点网卡断开时,DRBD进入Standalone模式是默认的安全机制——防止出现脑裂(两个节点都认为自己是主节点,数据冲突)。所以DRBD不会主动尝试重连,需要集群管理器(比如Pacemaker)来确认网络恢复、节点状态正常后,再触发重连操作。

方法1:利用DRBD OCF资源代理的内置能力

DRBD的官方OCF资源代理(ocf:linbit:drbd)本身支持通过Pacemaker的监控和修复机制来触发重连。你可以通过调整资源的监控操作和故障处理策略来实现:

  1. 先查看当前DRBD资源的配置:

    pcs resource show drbd_r0
    
  2. 添加或修改监控操作,让Pacemaker定期检查DRBD状态,发现异常时触发重连:

    pcs resource op add drbd_r0 monitor interval=10s timeout=20s on-fail=restart
    

    这里的on-fail=restart表示当监控发现DRBD状态异常时,Pacemaker会重启DRBD资源——而重启过程中,资源代理会自动执行drbdadm connect r0操作。

  3. 可选:添加failure-timeout元参数,避免Pacemaker反复重启资源:

    pcs resource meta drbd_r0 failure-timeout=60s
    

方法2:自定义脚本+Pacemaker Alert触发重连

如果需要更精细的控制(比如只在Standalone状态下触发重连),可以写一个自定义脚本,让Pacemaker在网络恢复或DRBD状态异常时调用它:

  1. 创建重连脚本/usr/local/bin/drbd_reconnect.sh,内容如下:
    #!/bin/bash
    DRBD_RES="r0"
    # 获取DRBD当前状态
    CURRENT_STATE=$(drbdadm status $DRBD_RES | grep -m1 -oP '^\w+' | tr '[:upper:]' '[:lower:]')
    if [ "$CURRENT_STATE" = "standalone" ]; then
        # 尝试连接DRBD资源
        drbdadm connect $DRBD_RES
        # 记录日志
        logger "Pacemaker triggered DRBD reconnect for resource $DRBD_RES"
    fi
    
  2. 给脚本添加执行权限,并同步到两台节点:
    chmod +x /usr/local/bin/drbd_reconnect.sh
    scp /usr/local/bin/drbd_reconnect.sh node2:/usr/local/bin/
    
  3. 在Pacemaker中添加Alert,让它在DRBD资源状态变化时触发脚本:
    pcs alert create drbd_reconnect_alert /usr/local/bin/drbd_reconnect.sh \
      description "Trigger DRBD reconnect when in Standalone state" \
      recipient-type=resource resource=drbd_r0
    
    这样,当Pacemaker检测到drbd_r0资源状态异常时,就会调用这个脚本执行重连操作。

测试验证

  1. 断开其中一台节点的网卡,确认DRBD进入Standalone模式;
  2. 重新连接网卡,等待10-20秒(对应监控间隔);
  3. 用drbdadm status r0查看状态,应该会回到Connected或WFConnection模式。

注意事项

  • 确保两台节点的Pacemaker权限足够执行drbdadm命令(一般root权限没问题);
  • 如果你配置了DRBD的主从模式,要确保Pacemaker先切换主节点状态,再执行重连,避免数据冲突;
  • 建议先在测试环境验证脚本和配置,再部署到生产环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:13:22