The Linux Virtual Server is a highly scalable and highly available server built on a cluster of real servers, with the load balancer running on the Linux operating system.
Linux 负载均衡【LVS DR】#
逻辑原理#
组件介绍#
LVS(Linux Virtual Server)的 DR 模式(Direct Routing,直接路由模式)是一种高性能的负载均衡方式,特点如下:
- Director(调度器): 负责将客户端请求的数据包的目标 MAC 地址修改为 Real Server MAC 地址,然后直接转发给后端的 Real Server。
- Real Server: 处理完请求后,直接将响应返回给客户端,不经过 Director,减轻了 Director 的网络压力,性能更高。
- VIP(Virtual IP): 需要在 Director 和所有 Real Server 上都配置(但 Real Server 上要抑制 ARP 响应),这样客户端请求 VIP 时能被 Director 接收并调度,而 Real Server 能直接响应。
网络拓扑#
网络拓扑使用eve-ng软件搭建,您也可以使用vmware虚拟机搭建,使用上没有区别;eve-ng相比vmware虚拟机,eve-ng更加直观,贴近实际网络架构方式。

组件信息#
所有机器在同一局域网,即二层网络内。
| 组件 | 描述 | mac |
|---|---|---|
| 操作系统 | Debian 13.1 | / |
| Client | 192.168.1.12 | 00:50:00:00:03:00 |
| Director | 192.168.1.21、192.168.1.100(vip) | 00:50:00:00:04:00 |
| Real Server 1 | 192.168.1.31、192.168.1.100(lo) | 00:50:00:00:01:00 |
| Real Server 2 | 192.168.1.32、192.168.1.100(lo) | 00:50:00:00:02:00 |
实践操作#
一.Director#
软件包#
# 安装软件包
apt install ipvsadm -y
地址配置#
# 1. ens3
ip link set ens3 up
ip addr add 192.168.1.21/24 dev ens3
ip route add default via 192.168.1.1 dev ens3
# 2. vip
ip addr add 192.168.1.100/24 dev lo
内核参数#
# 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
LVS配置#
# 1.lvs dr配置
ipvsadm -A -t 192.168.1.100:80 -s rr
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.31:80 -g
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.32:80 -g
# 2.lvs查看
ipvsadm -Ln
二.Real Server#
real server 1#
软件包#
# 安装软件包
apt install nginx -y
地址配置#
# 1. ens3
ip link set ens3 up
ip addr add 192.168.1.31/24 dev ens3
ip route add default via 192.168.1.1 dev ens3
# 2. lo
ip addr add 192.168.1.100/24 dev lo
arp响应抑制#
为了让 VIP 的 ARP 请求只由 Director 响应,Real Server 必须禁止响应对 VIP 的 ARP 查询。
- arp_ignore = 1:仅响应目标 IP 是本地接口上的 IP 的 ARP 请求。
- arp_announce = 2:总是使用最合适的本地地址(即 lo 上的 VIP)作为源 IP 发送 ARP。
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
echo 1 > /proc/sys/net/ipv4/conf/ens3/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/ens3/arp_announce
nginx配置#
# 1. ndex.nginx-debian.html
echo "<h1>Real Server 01</h1>" > /var/www/html/index.nginx-debian.html
# 2. 启动nginx
systemctl start nginx
real server 2#
软件包#
# 安装软件包
apt install nginx -y
地址配置#
# 1. ens3
ip link set ens3 up
ip addr add 192.168.1.32/24 dev ens3
ip route add default via 192.168.1.1 dev ens3
# 2. lo
ip addr add 192.168.1.100/24 dev lo
arp响应抑制#
为了让 VIP 的 ARP 请求只由 Director 响应,Real Server 必须禁止响应对 VIP 的 ARP 查询。
- arp_ignore = 1:仅响应目标 IP 是本地接口上的 IP 的 ARP 请求。
- arp_announce = 2:总是使用最合适的本地地址(即 lo 上的 VIP)作为源 IP 发送 ARP。
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
echo 1 > /proc/sys/net/ipv4/conf/ens3/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/ens3/arp_announce
nginx配置#
# 1. ndex.nginx-debian.html
echo "<h1>Real Server 02</h1>" > /var/www/html/index.nginx-debian.html
# 2. 启动nginx
systemctl start nginx
验证#
验证结果#
- 访问192.168.1.100:80

- director
使用ipvsadm -Ln --stats查看;可以看到2个real server 连接各有1个,说明负载均衡rr成功。此处建议使用curl命令测试;windows浏览器可能因为缓存、tcp连接未超时等原因无法观察实际效果。

抓包信息#
1.director#
director抓包可以查看只接收客户端请求的数据包,没有响应客户端的数据包。

2.real server#
real server抓包可以看到real server响应客户端的数据包。

- 点击前几个数据包,可以看到mac地址修改
mac地址从director修改为real server;即00:50:00:00:04:00修改为00:50:00:00:01:00

结语#
LVS DR模式以其卓越的性能和扩展性,成为高并发场景下的理想选择。Director仅负责请求的转发,通过修改MAC地址将数据包直接引向Real Server,而响应流量则由Real Server直接返回客户端。这种“来去分离”的设计,极大地减轻了Director的负载,避免了带宽瓶颈,实现了接近物理硬件的性能表现,为构建高性能、高可用的服务架构提供了坚实基础。


