0

0

ipvsadm 配置后 vip 无 ARP 响应或漂移失败的 keepalived 配合

冷漠man

冷漠man

发布时间:2026-01-20 18:58:33

|

515人浏览过

|

来源于php中文网

原创

VIP无法响应ARP或频繁漂移的根源在于ARP参数配置错误、Keepalived状态异常、IPVS规则未同步及RS回环配置缺失;需统一设置arp_ignore=1/arp_announce=2,校验VRRP配置与防火墙,通过notify脚本同步IPVS规则,并在RS的lo接口正确绑定VIP且禁用ARP。

ipvsadm 配置后 vip 无 arp 响应或漂移失败的 keepalived 配合

IPVS + Keepalived 配置后 VIP 无法响应 ARP 或频繁漂移,通常不是单一组件故障,而是网络层、内核参数、Keepalived 状态机与 IPVS 规则协同失配所致。核心在于:VIP 必须能被正确宣告(ARP 响应)、稳定绑定(内核不抢答)、且状态切换时规则同步无延迟。

ARP 响应失效:Linux 内核抑制了 VIP 的 ARP 回复

默认情况下,Linux 内核对非本地主 IP(即未配置在任何 real interface 上的 VIP)会忽略 ARP 请求(arp_ignore=1),或不主动宣告(arp_announce=2)。即使 Keepalived 已成功绑定了 VIP,若内核不响应 ARP,下游设备就学不到 VIP 的 MAC 地址。

解决方法

  • 在所有参与 LVS+Keepalived 的节点上,执行:
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  • 同时确保对应网卡(如 eth0)也生效:
    echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
  • 写入 /etc/sysctl.conf 持久化:
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.eth0.arp_ignore = 1
    net.ipv4.conf.eth0.arp_announce = 2

Keepalived 主备状态异常:VIP 绑定失败或未触发同步

Keepalived 进程运行但未真正绑定 VIP,常见于:

  • 配置中 vrrp_instancestate 与实际角色不符(例如 backup 节点误配为 MASTER);
  • interface 指向错误网卡(如配成 lo 而非 eth0);
  • virtual_router_id 在集群中不唯一,导致 VRRP 报文被丢弃;
  • 防火墙拦截 VRRP 协议(协议号 112,目的组播地址 224.0.0.18),造成主备无法通信、脑裂或反复切换。

验证方式:
ip addr show dev eth0 查看 VIP 是否存在;
sudo tcpdump -i eth0 host 224.0.0.18 观察 VRRP 报文收发;
tail -f /var/log/messages | grep Keepalived 检查状态切换日志。

IPVS 规则未随 VIP 同步:主备切换后调度器失效

Keepalived 默认只管理 VIP 和健康检查,不会自动同步 ipvsadm 规则。若仅在主节点手动添加规则,备节点无规则,VIP 漂移后流量到达却无对应虚拟服务,表现为“VIP 可 ping 通但服务不可达”。

稿定AI
稿定AI

拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能

下载

推荐做法:

  • 使用 Keepalived 的 notify_master / notify_backup 脚本,在状态切换时自动加载/清空规则;
  • 示例脚本 /etc/keepalived/vip_rules.sh
    #!/bin/bash
    case "$1" in
      master)
        ipvsadm -C
        ipvsadm -A -t 192.168.1.100:80 -s rr
        ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g
        ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g
        ;;
      backup)
        ipvsadm -C
        ;;
    esac
    
  • 在 keepalived.conf 中调用:
    notify_master "/etc/keepalived/vip_rules.sh master"
    notify_backup "/etc/keepalived/vip_rules.sh backup"

真实服务器(RS)回环接口配置遗漏:DR 模式下响应失败

若采用 LVS-DR 模式,RS 必须在 lo 接口上配置 VIP 并禁用 ARP 响应,否则:

  • RS 自身 ARP 表混乱,可能响应 VIP 的 ARP 请求,引发冲突;
  • 返回包不走 director,破坏 DR 转发路径。

RS 上必须执行:

ip addr add 192.168.1.100/32 dev lo label lo:0
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

并加入开机脚本或 network-scripts,确保重启后仍生效。

相关文章

keep
keep

Keep是一款健身安排,无论是想减肥塑形或增肌,还是寻找健身跑步瑜伽计步等训练计划,你可以随时随地选择课程进行训练!权威教练视频教学,健身干货自由分享!有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1025

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

66

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

453

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

10

2026.01.19

go中interface用法
go中interface用法

本专题整合了go语言中int相关内容,阅读专题下面的文章了解更多详细内容。

76

2025.09.10

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

704

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

13

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号