跳过正文
Linux 负载均衡【LVS DR】
  1. 操作系统/

Linux 负载均衡【LVS DR】

·1543 字·4 分钟·
目录
lvs - 这篇文章属于一个选集。
§ 3: 本文

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更加直观,贴近实际网络架构方式。

lvs_dr_202511180857423.png

组件信息
#

所有机器在同一局域网,即二层网络内。

组件描述mac
操作系统Debian 13.1/
Client192.168.1.1200:50:00:00:03:00
Director192.168.1.21、192.168.1.100(vip)00:50:00:00:04:00
Real Server 1192.168.1.31、192.168.1.100(lo)00:50:00:00:01:00
Real Server 2192.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

验证
#

验证结果
#

  1. 访问192.168.1.100:80

  1. director

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

抓包信息
#

1.director
#

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

2.real server
#

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

  1. 点击前几个数据包,可以看到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的负载,避免了带宽瓶颈,实现了接近物理硬件的性能表现,为构建高性能、高可用的服务架构提供了坚实基础。


lvs - 这篇文章属于一个选集。
§ 3: 本文

相关文章


微信赞赏
微信赞赏
关注公众号
关注公众号
支付宝赞赏
支付宝赞赏