LVS DR模式通过MAC地址改写实现三角传输,响应流量不经过调度器,要求调度器与真实服务器同网段,配置需绑定VIP、抑制ARP、加载IPVS模块并设置ipvsadm规则。

要在Linux上配置LVS实现高性能负载均衡网络,必须选择DR(Direct Routing)模式——它让响应流量绕过调度器直接返回客户端,避免单点带宽瓶颈,实测并发能力比NAT模式高3倍以上,且不依赖IP隧道封装开销。
准备调度器与真实服务器环境
准备四台同网段虚拟机:一台LVS调度器(DIP=192.168.0.200),两台Real Server(RS1=192.168.0.10、RS2=192.168.0.20),一台Client(192.168.0.100)。所有节点关闭防火墙:systemctl stop firewalld && setenforce 0。RS节点安装HTTP服务并写入标识页:dnf install -y httpd && echo "RS1" > /var/www/html/index.html && systemctl enable --now httpd(RS2同理,内容改为"RS2")。
【关键前提】所有机器必须处于同一二层广播域,即物理交换机或VMware的同一VMnet网段,否则DR模式无法通过MAC重写完成转发。
配置LVS调度器内核与IPVS模块
编辑/etc/sysctl.conf,追加两行:
net.ipv4.ip_forward = 1
net.ipv4.vs.conntrack = 0
执行sysctl -p生效;运行modprobe ip_vs && modprobe ip_vs_rr && modprobe ip_vs_sh加载核心及调度模块;用lsmod | grep ip_vs确认输出含ip_vs、ip_vs_rr等条目。若无输出,说明内核未启用IPVS支持,需检查系统是否为标准CentOS/RHEL/Ubuntu内核(非cloud或lowlatency变种)。
在调度器上绑定VIP并配置ARP抑制
方法一:使用ifconfig临时绑定(验证阶段可用)
ifconfig eth0:0 192.168.0.100/32 up
方法二:持久化配置(生产环境必须)
进入/etc/sysconfig/network-scripts/,复制ifcfg-eth0为ifcfg-eth0:0,修改内容为:
DEVICE=eth0:0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.0.100
NETMASK=255.255.255.255
执行systemctl restart network;再禁用调度器向外发送ICMP重定向包:echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects,防止交换机学习到错误的VIP MAC映射。
配置真实服务器的回环VIP与ARP参数
第一步:在每台RS上创建lo:0子接口绑定VIP
cd /etc/sysconfig/network-scripts/ && cp -a ifcfg-lo ifcfg-lo:0
编辑ifcfg-lo:0,填入:
DEVICE=lo:0
IPADDR=192.168.0.100
NETMASK=255.255.255.255
ONBOOT=yes
第二步:重启网络使lo:0生效 → systemctl restart network
第三步:设置ARP行为,确保RS只响应发往本机MAC的VIP请求
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announce
这四条命令缺一不可:【arp_ignore=1】让lo接口只应答目标IP是本机主IP或lo:0绑定IP的ARP请求,避免交换机收到多个VIP响应造成MAC漂移;【arp_announce=2】强制RS使用数据包源IP所在接口的MAC地址回应ARP,确保VIP响应从lo发出时仍携带正确MAC。
定义LVS转发规则并启用服务
安装管理工具:dnf install -y ipvsadm;清空旧规则:ipvsadm -C;添加虚拟服务:ipvsadm -A -t 192.168.0.100:80 -s rr;添加RS节点(DR模式用-i参数):
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.10:80 -i -w 1ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.20:80 -i -w 1
保存规则至文件:ipvsadm -S > /etc/sysconfig/ipvsadm;启用开机自载:systemctl enable ipvsadm;最后用ipvsadm -Ln确认输出含RR调度标志和两条Route状态的RS条目。



















