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

Keepalived chk_server脚本退出状态码2问题排查求助

Keepalived检查脚本退出状态码2问题排查

问题详情

日志显示chk_server脚本执行失败,退出状态码为2,导致节点进入BACKUP状态:

Nov 11 19:54:03 MCX-G2 Keepalived_vrrp[15201]: VRRP_Script(chk_server) failed (exited with status 2)
Nov 11 19:54:03 MCX-G2 Keepalived_vrrp[15201]: VRRP_Script(chk_script) succeeded
Nov 11 19:54:03 MCX-G2 Keepalived_vrrp[15201]: (VRRP1) Entering BACKUP STATE

对应的Keepalived配置片段:

vrrp_script chk_server {
  script       "/bin/ping -c 1 100.100.100.1 &> /dev/null"
  interval 10   # check every 10 seconds
  fall 1       # require 1 failures for KO
  rise 1       # require 1 successes for OK
}

注意:你手动测试的是172.20.128.100,但配置中检查的目标IP是100.100.100.1,这是首要差异点。

排查方向

  • 验证配置中的ping命令:直接执行配置里的完整命令,查看真实退出码:
    /bin/ping -c 1 100.100.100.1 &> /dev/null
    echo $?
    
    若退出码确实为2,去掉重定向查看具体报错:
    /bin/ping -c 1 100.100.100.1
    
  • 分析ping退出码2的含义:该码通常表示未知错误,比如无法路由到目标IP、ICMP包被拦截、权限不足(极少发生在root环境)。
  • 检查运行环境差异:Keepalived作为系统服务运行时,可能与手动执行环境不同:
    • 确认Keepalived进程是否在特定网络命名空间:
      ip netns identify $(pidof Keepalived_vrrp)
      
      若返回结果,说明服务在隔离命名空间内,需在对应命名空间内测试ping。
    • 检查Keepalived运行用户:若配置了user指令,需确保该用户有执行ping及访问网络的权限。
  • 防火墙/路由检查:
    • 用tcpdump抓包验证ICMP包是否发出并收到回应:
      tcpdump icmp host 100.100.100.1
      
    • 检查主机路由表,确认存在到100.100.100.1的有效路由:
      ip route get 100.100.100.1
      
    • 排查本地防火墙(iptables/ufw/firewalld)是否拦截了ICMP请求或回应。
  • 版本兼容性:部分旧版Keepalived在脚本退出码处理上存在bug,可尝试升级至最新稳定版本后重新测试。

内容的提问来源于stack exchange,提问作者Mhd Ridho Swasta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:40:25