如何在Linux利用Keepalived与LVS-DR模式构建负载均衡

阿静大大_6212

阿静大大_6212

2026-04-09

424人浏览

原创

lvs-dr部署必须满足同一二层网络、rs抑制arp响应vip、vip绑定lo接口并配置arp_ignore=1和arp_announce=2,keepalived仅管理vip和健康检查,不参与转发;ipvsadm -ln需显示flags: route且activeconn增长,rs上tcpdump -i lo应捕获到流量。

如何在linux利用keepalived与lvs-dr模式构建负载均衡

Keepalived + LVS-DR 的核心约束必须提前确认

不能直接套用 NAT 或 TUN 模式配置,LVS-DR 要求所有 Real Server 与 Director 在同一二层网络(同 VLAN / 同物理交换机下),且 Real Server 必须抑制 ARP 响应 VIP,否则会抢答、导致流量错乱。这是部署失败最常见原因,不是 Keepalived 配置问题,而是网络层基础没对齐。

  • 检查 ip addr show 确认所有节点(Director 和 RS)能 ping 通彼此的物理 IP,但先不要配 VIP
  • 确认交换机未开启 ARP 代理或端口隔离;虚拟化环境需设为“混杂模式”或关闭安全策略
  • Real Server 上必须禁用 VIP 的 ARP 响应:在 /etc/sysctl.conf 中设置 net.ipv4.conf.all.arp_ignore = 1 和 net.ipv4.conf.all.arp_announce = 2,并执行 sysctl -p

Director 上的 keepalived.conf 关键段必须精简且无冗余

Keepalived 在 DR 模式下只负责 VIP 管理和健康检查,不参与数据转发 —— LVS 转发由内核 ip_vs 模块完成。因此配置里不能出现 virtual_server_group 或 fwmark 等干扰项,且 lvs_sched 必须显式指定(默认是 rr,但别依赖默认)。

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
  • vrrp_instance VI_1 中 state 只能是 MASTER 或 BACKUP,双 MASTER 会导致脑裂
  • virtual_server 的 delay_loop 建议设为 6~10,太小会加重 RS 健康检查压力;lb_algo 推荐 rr 或 wrr,避免 lc 在短连接场景下倾斜
  • 每个 real_server 必须配 weight(哪怕都是 1),否则 Keepalived 启动时会静默跳过该节点
  • 示例片段:
    virtual_server 192.168.1.100 80 {
        delay_loop 6
        lb_algo rr
        lb_kind DR
        protocol TCP
        real_server 192.168.1.11 80 {
            weight 1
            TCP_CHECK { connect_timeout 3 }
        }
    }

Real Server 必须手动绑定 VIP 并隐藏其 ARP 行为

LVS-DR 要求 RS 本地有 VIP(用于接收 Director 转发来的包),但又不能响应外部对该 VIP 的 ARP 请求 —— 这和普通 VIP 绑定完全不同。不能用 ip addr add 直接加到主网卡,必须加到 lo 并配合内核参数压制 ARP。

  • 执行:ip addr add 192.168.1.100/32 dev lo label lo:0(注意是 /32,不是掩码匹配网段)
  • 验证:ip route get 192.168.1.100 应返回 local 192.168.1.100 dev lo table local
  • 禁止该 VIP 出现在 arping -I eth0 -c 2 192.168.1.100 的响应中;若响应了,说明 arp_ignore 未生效或写错网卡名(要用 all,不是具体接口名)
  • RS 上无需运行 Keepalived,除非你真需要它做本地服务健康检查(如 nginx crash 自动摘除),此时也只需启用 vrrp_script + track_script,不用开 vrrp_instance

调试时优先看 ip_vs 连接状态和 ARP 表,而不是日志

Keepalived 日志(/var/log/messages)只能告诉你“VIP 是否起来了”或“某 RS 是否 down”,但无法反映数据是否真正走到 RS。真正卡点永远在内核转发路径上。

  • 在 Director 上运行:ipvsadm -ln —— 必须看到 Flags: Route(表示 DR 模式)、State: Active,且 ActiveConn / InActConn 开始增长
  • 在 RS 上运行:tcpdump -i lo -nn port 80 —— 如果收不到包,说明 Director 没转过来,或 RS 的 lo 没绑对 VIP;如果收到包但没响应,检查 RS 的 web 服务是否监听 0.0.0.0:80(而非仅 127.0.0.1:80)
  • 在 Director 和 RS 上分别执行:arp -n | grep 192.168.1.100 —— 正常情况只有 Director 有该 VIP 的 MAC 条目,RS 上应该完全没这条记录
  • 误配 arp_ignore=0 或漏 reload sysctl 是最隐蔽的坑:现象是负载偶尔生效、重启后失效、或者只有一台 RS 工作
LVS-DR 的脆弱性不在 Keepalived,而在那几行 sysctl 设置和 ip addr add ... dev lo —— 它们没有错误提示,却直接决定整个集群是否“看似正常实则丢包”。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

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

相关专题

更多
磁盘配额是什么
磁盘配额是什么

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

2023.06.21

4110

4

如何安装LINUX
如何安装LINUX

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

2023.06.29

3493

10

linux find
linux find

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

2023.06.30

2693

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6550

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6202

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3593

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3085

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3319

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习