LVS的DR模式部署

目录

一、部署前提

二、所有节点基础配置

[1.关闭防火墙和 SELinux](#1.关闭防火墙和 SELinux)

[2.安装 ipvsadm 工具(LVS 管理工具)](#2.安装 ipvsadm 工具(LVS 管理工具))

[三、 Director 节点配置](#三、 Director 节点配置)

[1.配置 VIP](#1.配置 VIP)

[2.配置 LVS 规则](#2.配置 LVS 规则)

[3.开启 IP 转发(可选)](#3.开启 IP 转发(可选))

[四、 Real Server 节点配置(所有 RS 执行相同操作)](#四、 Real Server 节点配置(所有 RS 执行相同操作))

[1.配置 VIP 回环地址](#1.配置 VIP 回环地址)

[2.禁止 ARP 广播 VIP](#2.禁止 ARP 广播 VIP)

3.部署后端服务

五、测试验证


一、部署前提

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

bash 复制代码
# 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 管理工具)

bash 复制代码
# CentOS/RHEL
yum install -y ipvsadm

# Ubuntu
apt update && apt install -y ipvsadm

三、 Director 节点配置

1.配置 VIP

给 Director 的网卡(如 eth0)绑定 VIP:

bash 复制代码
# 临时配置(重启失效)
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:

bash 复制代码
# 清除原有规则
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 转发(可选)

bash 复制代码
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

四、 Real Server 节点配置(所有 RS 执行相同操作)

1.配置 VIP 回环地址

避免 VIP 冲突,需在回环网卡 lo 上绑定 VIP,并设置子网掩码为 255.255.255.255

bash 复制代码
# 临时配置
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:

bash 复制代码
# 临时生效
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),用于测试:

bash 复制代码
# 安装 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 1Real Server 2 的内容,说明 LVS DR 模式生效。

3.在 Director 节点查看 LVS 状态:

bash 复制代码
ipvsadm -ln
相关推荐
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.18 小时前
LVS 实战:利用防火墙标记与持久连接优化调度
lvs
cyber_两只龙宝1 天前
LVS-NAT模式实验配置以及详解
linux·运维·云原生·lvs
L1624761 天前
LVS+Keepalived+Nginx+Tomcat 高可用集群超详细配置手册
nginx·tomcat·lvs
市安2 天前
基于 LVS+Keepalived+NFS 的高可用 Web 集群构建与验证
运维·服务器·网络·lvs·keepalived·ipvsadm
FJW0208143 天前
LVS企业实战
linux·服务器·lvs
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.3 天前
LVS基于 IPVS 的 NAT 模式负载均衡实战部署与故障排查指南
运维·负载均衡·lvs
资料库015 天前
LVS、Nginx、HAProxy核心区别是什么?
运维·nginx·lvs
国强_dev10 天前
LVS 负载均衡核心原理深度剖析:从 NAT 到 DR 模式详解
运维·负载均衡·lvs
rain bye bye11 天前
Calibre 工具安装的问题 无法进行LVS(未完成)
lvs