Keepalived VIP ping 不通

在使用 Keepalived 实现虚拟 IP(VIP)高可用的过程中,有时会遇到这样一个问题:

Master 节点成功绑定了 VIP,状态正常

但从外部主机无法 ping 通 VIP,也无法访问服务

本文将分析问题根源,并给出 3 种实际有效的解决办法。


💡 环境信息

  • 系统环境:CentOS / RHEL / Ubuntu 等
  • Keepalived 版本:v2.2.4

❗问题表现

在 Keepalived 配置完成、Master 节点绑定 VIP 后,从本机可以看到 VIP 存在:

css 复制代码
ip a | grep <VIP>

但从其他主机 ping VIP 不通,服务如 kube-apiserver(端口 6443)也无法访问。

抓包发现:VIP 收到了请求(ICMP/TCP SYN),但没有回应。


🔍 问题根源:vrrp_strict 模式导致 VIP 不响应

从 Keepalived v2.0 开始,默认启用了一个参数:

复制代码
vrrp_strict

该参数的作用是 严格遵守 VRRP 协议规范。但在 Linux 下,它反而可能导致:

  • VIP 无法响应外部请求(ICMP/TCP/UDP)
  • 影响服务可用性

⚠️ 开启 vrrp_strict 会导致以下行为:

  1. 禁止配置 VIP 为 0 个

  2. 禁止单播邻居

  3. 禁止 vrrp_version 2 使用 IPv6

  4. 禁止使用认证(配置无效)

  5. VIP 不会响应流量,除非满足以下条件:

    • 优先级为 255
    • 使用 vrrp_version 3 且开启 accept 模式

✅ 解决方法

我们根据不同场景,提供 3 种实用解决方案:


方案一:禁用 vrrp_strict(推荐 ✅)

在配置文件中显式关闭此参数:

arduino 复制代码
vrrp_strict false 

或直接注释

添加位置:global_defs 段或 vrrp_instance 前均可

示例配置:

kotlin 复制代码
global_defs {
   router_id LVS_DEVEL
   vrrp_strict false
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

效果:

  • VIP 能正常响应外部请求(包括 ping、服务端口等)
  • 配置简单,行为直观

方案二:使用 vrrp_version 3 + accept 模式

kotlin 复制代码
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    version 3
    accept
    virtual_ipaddress {
        192.168.1.100
    }
}

注意事项:

  • accept 是 vrrp3 特有的选项
  • 要确保所有节点的 keepalived 都支持 v3
  • 兼容性略差于方案一

方案三:设置优先级为 255(不推荐 ⚠️)

kotlin 复制代码
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 255
    ...
}

问题:

  • 所有节点设置 255 会导致无法明确主备切换
  • VRRP 会频繁抢占,主备不稳定

适用于 VIP 绑定固定主机的场景 ,但 不适合高可用生产环境


🛠️ 补充建议

1. 确认 VIP 是否绑定成功:

css 复制代码
ip a | grep 192.168.197.61

2. 启动 Keepalived 后观察日志:

复制代码
journalctl -u keepalived -f

3. 绑定后主动发送 ARP 广播(可选):

css 复制代码
arping -U -I eth0 -c 3 192.168.197.61
相关推荐
sayang_shao3 小时前
ARM架构运行模式学习笔记
arm开发·学习·架构
一叶飘零_sweeeet4 小时前
服务注册发现深度拆解:Nacos vs Eureka 核心原理、架构选型与生产落地
微服务·云原生·eureka·nacos·架构·注册中心
Tadas-Gao4 小时前
Mem0分层记忆系统:大语言模型长期记忆的架构革命与实现范式
人工智能·语言模型·自然语言处理·架构·大模型·llm·transformer
lpfasd1235 小时前
QCLAW 浏览器联通指南:原理、架构与配置详解
ai·架构·程序员创富
源远流长jerry5 小时前
在 Ubuntu 22.04 上配置 Soft-RoCE 并运行 RDMA 测试程序
linux·服务器·网络·tcp/ip·ubuntu·架构·ip
宇擎智脑科技6 小时前
A2A Python SDK 源码架构解读:一个请求是如何被处理的
人工智能·python·架构·a2a
uzong6 小时前
Harness Engineering 是什么?一场新的 AI 范式已经开始
人工智能·后端·架构
墨有6666 小时前
FieldFormer:基于物理场论的极简AI大模型底层架构,附带源码
人工智能·架构·电磁场算法映射
Kel8 小时前
深入剖析 openai-node 源码:一个工业级 TypeScript SDK 的架构之美
javascript·人工智能·架构
毛骗导演8 小时前
@tencent-weixin/openclaw-weixin 插件深度解析(四):API 协议与数据流设计
前端·架构