LVS-DR虚拟机配置的核心就一句话:Director和RealServer必须放在同一个二层网络里,Director只改MAC地址转发请求,RealServer在loopback接口上绑定VIP并关闭ARP响应,最后用ipvsadm添加-g参数的DR规则,负载均衡就能跑通。
LVS-DR模式配置教程:虚拟机网络规划
在VMware或VirtualBox里做LVS-DR实验,最常见的坑不是命令写错,而是网络不通,DR模式要求Director和RealServer在同一网段、同一广播域,因为Director只替换数据帧的目标MAC,不修改目标IP,如果跨网段,数据帧根本到不了RealServer。
下面这张表是标准的LVS-DR虚拟机实验拓扑:
| 主机名 | 角色 | IP地址 | 额外VIP |
|---|---|---|---|
| director | 负载调度器 | 168.10.10 | 168.10.100 |
| rs1 | 真实服务器 | 168.10.21 | 168.10.100/32 |
| rs2 | 真实服务器 | 168.10.22 | 168.10.100/32 |
软件环境建议使用CentOS 7或Rocky Linux 8,内核自带IPVS模块,只需要安装ipvsadm管理工具,三台虚拟机都用NAT模式或都用以太网桥接模式,重点是连接到同一个VMnet。
克隆虚拟机时,要重新生成MAC地址,VMware克隆后的虚拟机如果MAC相同,二层交换机会出现端口抖动,直接导致DR转发失败,修改/etc/sysconfig/network-scripts/ifcfg-ens33里的HWADDR,或者删除/etc/udev/rules.d/70-persistent-net.rules后重启。
关闭防火墙和SELinux能省掉大量调试时间,实验环境可以执行:
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
LVS-DR和NAT模式区别:为什么虚拟机负载均衡选DR
很多人刚开始接触LVS时,会把DR和NAT搞混,这两种模式的数据路径完全不同。
| 对比项 | LVS-DR模式 | LVS-NAT模式 |
|---|---|---|
| Director处理入站请求 | 是 | 是 |
| Director处理出站响应 | 否 | 是 |
| RealServer网关指向 | 指向真实网关 | 指向Director |
| 网络限制 | 同一二层网络 | 可跨网段 |
| 性能瓶颈 | 主要在Director入站带宽 | Director双向带宽和CPU |
| 配置复杂度 | 较高 | 较低 |
DR模式最大的优势是响应流量不经过Director,真实服务器直接把响应包发给客户端,Director只承担入站请求的调度,对于大流量下载或视频流场景,DR模式能减少一次网络跳转,降低延迟,业内专家指出,多数生产环境里的LVS集群优先采用DR模式,因为吞吐量表现更好。
虚拟机里做DR实验,还能更真实地模拟生产环境,NAT模式虽然配置简单,但Director会成为所有返回流量的瓶颈,做实验时看不出明显差异,上生产后问题才暴露。
Director节点配置步骤
安装ipvsadm并开启内核转发
Director上执行:
yum install -y ipvsadm
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
net.ipv4.ip_forward必须开启,Director要转发不是发给自己的数据包,不开这一项,Director收到目的IP是VIP的包会直接丢弃。
配置VIP
Director的VIP要绑定在物理网卡上,比如ens33:1:
ip addr add 192.168.10.100/24 dev ens33
或者在网卡配置文件中增加IPADDR1和PREFIX1,VIP和DIP在同一个网段,这样客户端才能通过ARP找到VIP对应的MAC地址。
添加ipvsadm规则
ipvsadm -A -t 192.168.10.100:80 -s rr
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.21:80 -g
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.22:80 -g
ipvsadm -Ln
-A是添加虚拟服务,-t指定TCP协议和VIP端口,-s rr代表轮询算法。-a是添加真实服务器,-r指定RealServer地址,-g是DR模式的关键参数,表示Gateway模式,也叫直接路由模式。
执行ipvsadm -Ln后,能看到两条RealServer条目,Forward列显示Route,说明DR规则生效。
LVS-DR真实服务器配置步骤
两台RealServer的操作完全一样,只是RIP不同。
安装Web服务并写入测试页
yum install -y httpd
echo 'RS1' > /var/www/html/index.html
systemctl start httpd
systemctl enable httpd
rs2上把测试页内容改成RS2,方便验证轮询效果。
在loopback上绑定VIP
这里有一个关键细节:VIP必须以/32掩码绑定在lo接口上,不能绑在物理网卡上,如果绑在物理网卡,RealServer会响应VIP的ARP请求,导致Director和RealServer抢夺VIP的MAC地址。
ip addr add 192.168.10.100/32 dev lo
永久配置可以写入/etc/rc.local,或者在/etc/sysconfig/network-scripts/ifcfg-lo:0中设置。
修改ARP响应参数
这是整个LVS-DR虚拟机配置里最容易漏掉的一步,RealServer必须忽略VIP的ARP请求,同时对外宣告本机RIP。
echo '1' > /proc/sys/net/ipv4/conf/all/arp_ignore
echo '2' > /proc/sys/net/ipv4/conf/all/arp_announce
echo '1' > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo '2' > /proc/sys/net/ipv4/conf/lo/arp_announce
arp_ignore=1表示只有ARP请求的目标IP落在接收接口上时才响应,VIP在lo上,物理网卡收到的VIP ARP请求不会被响应。arp_announce=2表示对外宣告时使用源IP所在接口的真实IP,也就是RIP,不会把VIP泄露出去。
添加本地路由
ip route add local 192.168.10.100 dev lo
这条路由让RealServer确认VIP是本机地址,数据包到达后不会被内核丢弃。
LVS-DR负载均衡实验步骤中的验证抓包
配置完成后,在客户端或Director上执行:
curl http://192.168.10.100
多次执行会交替返回RS1和RS2,在Director上查看连接统计:
ipvsadm -Lnc
能看到连接被分发到不同RealServer。
如果条件允许,在RealServer上抓包能看到更直观的证据,数据帧的目标MAC是RealServer的物理网卡MAC,但目标IP仍然是VIP,这正是DR模式的核心:Director改MAC,不改IP。
VMware虚拟机LVS-DR搭建的注意事项
虚拟机环境做DR实验,有几个细节必须提前处理。
同一VMnet是硬性要求。 DR模式依赖二层广播,Director到RealServer的路径上不能有三层设备,如果一台虚拟机用NAT模式,另一台用仅主机模式,或者加入了不同的虚拟交换机,数据帧永远无法到达,curl VIP会超时。
VIP不能和现有网关IP冲突。 如果VIP设置成168.10.1,会和虚拟网络的网关地址冲突,客户端ARP请求可能被网关抢答,Director根本收不到包。
RealServer不配置VIP绑在物理网卡。 这一点前面提过,但值得再强调,很多教程会教你在物理网卡上建子接口绑定VIP,那种做法在DR模式下是错误的,会导致ARP冲突。
防火墙和SELinux要关闭。 实验环境里iptables默认策略可能阻止80端口,setenforce 0临时关闭SELinux可以避免httpd读取文件时出现权限拒绝。
ipvsadm规则不会自动保存。 重启Director后规则会丢失,执行ipvsadm -S > /etc/sysconfig/ipvsadm保存,然后systemctl enable ipvsadm并systemctl start ipvsadm恢复。
Q&A:LVS-DR虚拟机配置常见问题
LVS-DR模式配置多少钱?
LVS本身是开源软件,ipvsadm工具和内核模块完全免费,做虚拟机实验只需要一台能跑三台虚拟机的电脑,硬件成本取决于你的现有设备,云服务器场景下,按小时计费的话,三台低配虚拟机一天的成本大概在十几元到几十元不等,地域和配置不同会有差异,软件授权费用为零。
LVS-DR和NAT模式区别哪个更适合虚拟机实验?
如果是第一次接触LVS,NAT模式更容易跑通,因为它不需要修改RealServer的ARP参数,但DR模式更接近生产环境,能真实反映负载均衡器只处理入站流量的特性,行业共识认为,掌握DR模式是LVS运维的必备技能。
VMware虚拟机LVS-DR搭建必须同一网段吗?
必须,DR模式依赖Director改写数据帧的目标MAC,只有同一二层网络内才能通过ARP找到目标MAC,跨网段时Director无法直接送达数据帧,必须借助路由,而路由会改变数据链路层语义,DR转发就失效了,这是DR模式和NAT模式最本质的区别。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/645179.html





