LVS的DR模式部署实例
作者:杨了个杨8982
这篇文章详细介绍了如何在Linux系统上配置LVS(Linux Virtual Server)Director和RealServer节点,实现DR(Direct Routing)模式的负载均衡,通过配置VIP、IPVS规则和ARP处理,使得客户端请求能够被均衡地分发到后端RealServer上
一、部署前提
1.准备至少 3 台 Linux 服务器(1 台 Director,2 台及以上 Real Server),均为 CentOS/RHEL 或 Ubuntu 系统。
2.所有服务器处于同一局域网,关闭防火墙和 SELinux(或配置对应规则)。
3.规划 IP 地址
- Director:公网 / 内网 IP(如
192.168.1.100) + VIP(如192.168.1.200) - Real Server 1:内网 IP(如
192.168.1.101) + VIP(回环地址) - Real Server 2:内网 IP(如
192.168.1.102) + VIP(回环地址)
二、所有节点基础配置
1.关闭防火墙和 SELinux
# CentOS/RHEL 7+ systemctl stop firewalld && systemctl disable firewalld setenforce 0 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # Ubuntu ufw disable
2.安装 ipvsadm 工具(LVS 管理工具)
# CentOS/RHEL yum install -y ipvsadm # Ubuntu apt update && apt install -y ipvsadm
三、 Director 节点配置
1.配置 VIP
给 Director 的网卡(如 eth0)绑定 VIP:
# 临时配置(重启失效) ip addr add 192.168.1.200/32 dev eth0 # 永久配置(CentOS/RHEL,写入网卡配置文件) cat >> /etc/sysconfig/network-scripts/ifcfg-eth0:0 << EOF TYPE=Ethernet BOOTPROTO=static NAME=eth0:0 DEVICE=eth0:0 IPADDR=192.168.1.200 NETMASK=255.255.255.255 ONBOOT=yes EOF # 重启网卡 ifup eth0:0
2.配置 LVS 规则
使用 ipvsadm 创建虚拟服务,指定调度算法(如 rr 轮询),并添加 Real Server:
# 清除原有规则 ipvsadm -C # 添加虚拟服务(VIP:80,TCP协议,rr调度算法) ipvsadm -A -t 192.168.1.200:80 -s wrr # 添加 Real Server,指定 DR 模式(-g) ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.101 -g -w 1 ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.102 -g -w 1 # 保存规则(重启后生效) ipvsadm -S > /etc/sysconfig/ipvsadm systemctl enable --now ipvsadm
- 调度算法可选:
rr(轮询)、wrr(加权轮询)、lc(最小连接数)等。 -g表示 DR 模式,这是 DR 部署的关键参数。
3.开启 IP 转发(可选)
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
四、 Real Server 节点配置(所有 RS 执行相同操作)
1.配置 VIP 回环地址
避免 VIP 冲突,需在回环网卡 lo 上绑定 VIP,并设置子网掩码为 255.255.255.255:
# 临时配置 ip addr add 192.168.1.200/32 dev lo ip link set lo up # 永久配置(CentOS/RHEL) cat >> /etc/sysconfig/network-scripts/ifcfg-lo:0 << EOF TYPE=Ethernet BOOTPROTO=static NAME=lo:0 DEVICE=lo:0 IPADDR=192.168.1.200 NETMASK=255.255.255.255 ONBOOT=yes EOF # 重启网卡 ifup lo:0
2.禁止 ARP 广播 VIP
这是 DR 模式的核心配置,目的是让 Real Server 不对外响应 VIP 的 ARP 请求,仅 Director 响应 ARP:
# 临时生效 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/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce # 永久生效(写入 sysctl.conf) cat >> /etc/sysctl.conf << EOF net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 EOF sysctl -p
arp_ignore=1:只响应目标 IP 是本地网卡 IP 的 ARP 请求。arp_announce=2:发送 ARP 时,使用网卡的真实 IP 作为源 IP,而非 VIP。
3.部署后端服务
在 Real Server 上部署 Web 服务(如 Nginx、Apache),用于测试:
# 安装 Nginx yum install -y nginx systemctl enable --now nginx # 编写测试页面(区分不同 RS) # RS1 echo "Real Server 1 - 192.168.1.101" > /usr/share/nginx/html/index.html # RS2 echo "Real Server 2 - 192.168.1.102" > /usr/share/nginx/html/index.html
五、测试验证
1.在客户端(同一网段或能访问 VIP 的机器)访问 http://192.168.1.200。
2.多次刷新页面,会交替显示 Real Server 1 和 Real Server 2 的内容,说明 LVS DR 模式生效。
3.在 Director 节点查看 LVS 状态:
ipvsadm -ln
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
