LVS实验

一、基础介绍

1.1 LVS 简介

LVS(Linux Virtual Server)即 Linux 虚拟服务器,是内核级别的负载调度器,由章文嵩博士开发。阿里云四层 SLB(Server Load Balance)正是基于 LVS + Keepalived 实现。

1.2 LVS 核心术语

术语 全称 含义
VS Virtual Server 负载调度器,负责请求分发
RS Real Server 真实服务器,提供实际业务服务
CIP Client IP 客户端 IP 地址
VIP Virtual IP 对外提供服务的虚拟 IP(客户端访问的 IP)
DIP Director IP 调度器内网 IP(用于和 RS 通信)
RIP Real Server IP 真实服务器的 IP 地址

1.3 LVS 集群类型

模式 核心原理 特点
LVS-NAT 修改请求报文的目标 IP(多目标 DNAT) 请求 / 响应均经 VS 转发,支持端口映射,RS 网关需指向 DIP
LVS-DR 封装新的 MAC 地址(直接路由) LVS 默认模式,性能最优,仅修改 MAC 不修改 IP
LVS-TUN 原 IP 报文外新增 IP 首部 跨网段部署,RS 需支持隧道协议
LVS-FULLNAT 修改请求报文的源 / 目标 IP 解决 NAT 模式瓶颈,VS 和 RS 可跨网段

二、实验环境说明

本次实验使用两个网段:

  • NAT 网段:192.168.0.0/24(对外访问)

  • 仅主机网段:192.168.0.0/24(VS 与 RS 内网通信)

三、LVS-NAT 模式实验

3.1 环境部署

(1)VS 调度器配置
复制代码
# 配置双网卡 IP(eth0:对外 VIP,eth1:对内 DIP)
[root@vsnode ~]# vmset.sh eth0 192.168.0.100 vsnode
[root@vsnode ~]# vmset.sh eth1 192.168.0.100 vsnode noroute
​
# 开启内核转发(核心:NAT 模式必须开启)
[root@vsnode ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@vsnode ~]# sysctl -p
(2)RS1 真实服务器配置
复制代码
# 配置内网 IP,网关指向 VS 的 DIP
[root@RS1 ~]# vmset.sh eth0 192.168.0.10 RS1 noroute
[root@RS1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100
[root@RS1 ~]# nmcli connection reload
[root@RS1 ~]# nmcli connection up eth0
​
# 验证路由(网关需为 192.168.0.100)
[root@RS1 ~]# route -n
​
# 部署 HTTP 服务(用于测试)
[root@RS1 ~]# dnf install httpd -y
[root@RS1 ~]# systemctl enable --now httpd
[root@RS1 ~]# echo "RS1 - 192.168.0.10" > /var/www/html/index.html
(3)RS2 真实服务器配置
复制代码
# 修正原文笔误:RS2 配置需替换 IP 和主机名
[root@RS2 ~]# vmset.sh eth0 192.168.0.20 RS2 noroute
[root@RS2 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100
[root@RS2 ~]# nmcli connection reload
[root@RS2 ~]# nmcli connection up eth0
​
# 验证路由
[root@RS2 ~]# route -n
​
# 部署 HTTP 服务
[root@RS2 ~]# dnf install httpd -y
[root@RS2 ~]# systemctl enable --now httpd
[root@RS2 ~]# echo "RS2 - 192.168.0.20" > /var/www/html/index.html
(4)环境连通性测试(VS 节点执行)
复制代码
[root@vsnode ~]# curl 192.168.0.10  # 应返回 RS1 内容
[root@vsnode ~]# curl 192.168.0.20  # 应返回 RS2 内容

3.2 配置 LVS-NAT 策略

复制代码
# 安装 ipvsadm 工具
[root@vsnode ~]# dnf install ipvsadm -y
​
# 清空原有规则
[root@vsnode ~]# ipvsadm -C
​
# 添加虚拟服务(VIP:80,调度算法 wrr 加权轮询)
[root@vsnode ~]# ipvsadm -A -t 192.168.0.100:80 -s wrr
​
# 添加 RS1 节点(-m 表示 NAT 模式,-w 1 权重)
[root@vsnode ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.10:80 -m -w 1
​
# 添加 RS2 节点
[root@vsnode ~]# ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.20:80 -m -w 1
​
# 查看规则(验证配置)
[root@vsnode ~]# ipvsadm -Ln

3.3 测试验证

(1)基础轮询测试
复制代码
# 连续访问 10 次,验证轮询效果
[root@vsnode ~]# for i in {1..10};do curl 192.168.32.100;done
# 预期结果:RS1/RS2 交替返回(权重均为 1)
(2)调整权重测试
复制代码
# 修改 RS1 权重为 2(-e 编辑规则)
[root@vsnode ~]# ipvsadm -e -t 192.168.0.100:80 -r 192.168.0.10:80 -m -w 2
​
# 再次测试(RS1 出现频率应为 RS2 的 2 倍)
[root@vsnode ~]# for i in {1..10};do curl 192.168.0.100;done
(3)故障转移测试

停止 RS2 的 httpd 服务或断开网络,再次访问 VIP,请求会全部转发到 RS1,验证集群可用性。

四、LVS-DR 模式实验

4.1 环境部署逻辑

DR 模式核心:

  1. VS 和所有 RS 都配置相同的 VIP(仅 VS 的 VIP 对外可见,RS 的 VIP 绑定在 lo 回环口);

  2. RS 需禁用 ARP 响应(避免 VIP 地址冲突);

  3. 仅修改报文 MAC 地址,请求经 VS 转发,响应直接从 RS 返回客户端。

4.2 详细配置

(1)路由器(可选,用于网段转发)
复制代码
# 清空原有 ipvsadm 规则
[root@router ~]# systemctl disable --now ipvsadm.service
[root@router ~]# ipvsadm -C
​
# 配置双网卡 IP
[root@router ~]# vmset.sh eth0 172.25.254.100 vsnode
[root@router ~]# vmset.sh eth1 192.168.0.100 vsnode noroute
​
# 开启内核转发
[root@router ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@router ~]# sysctl -p
​
# 配置 SNAT 转发(让 RS 能访问外网)
[root@router ~]# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.100
[root@router ~]# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 172.25.254.100
(2)VS 调度器配置
复制代码
# 配置内网 IP(DIP)
[root@vsnode ~]# vmset.sh eth0 192.168.0.50 vsnode noroute

# 编辑网卡配置
[root@vsnode ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0
[ipv4]
method=manual
address1=192.168.0.50/24,192.168.0.100

# 配置 lo 回环口绑定 VIP(192.168.0.200)
[root@vsnode ~]# cp -p /etc/NetworkManager/system-connections/eth0.nmconnection /etc/NetworkManager/system-connections/lo.nmconnection
[root@vsnode ~]# vim /etc/NetworkManager/system-connections/lo.nmconnection
[connection]
id=lo
type=loopback
interface-name=lo
[ipv4]
method=manual
address1=127.0.0.1/8
address2=192.168.0.200/32

# 重载并激活连接
[root@vsnode ~]# nmcli connection reload
[root@vsnode ~]# nmcli connection up eth0
[root@vsnode ~]# nmcli connection up lo

# 配置 LVS-DR 规则(-g 表示 DR 模式,rr 轮询算法)
[root@vsnode ~]# ipvsadm -A -t 192.168.0.200:80 -s rr
[root@vsnode ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10 -g
[root@vsnode ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20 -g
[root@vsnode ~]# ipvsadm -Ln  # 验证规则
(3)客户端配置
复制代码
# 配置 IP 并指向网关
[root@client ~]# vmset.sh eth0 192.168.0.99 client noroute
[root@client ~]# vim /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0
[ipv4]
method=manual
address1=192.168.0.99/24,192.168.0.100
dns=8.8.8.8;

# 重载连接
[root@client ~]# nmcli connection reload
[root@client ~]# nmcli connection up eth0

# 测试连通性(ping VIP)
[root@client ~]# ping 192.168.0.200
(4)RS1 配置
复制代码
# 配置内网 IP 和网关
[root@RS1 ~]# vmset.sh eth0 192.168.0.10 RS1 noroute
[root@RS1 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100
[root@RS1 ~]# nmcli connection reload
[root@RS1 ~]# nmcli connection up eth0

# lo 回环口绑定 VIP(和 VS 一致)
[root@RS1 ~]# cp -p /etc/NetworkManager/system-connections/eth0.nmconnection /etc/NetworkManager/system-connections/lo.nmconnection
[root@RS1 ~]# vim /etc/NetworkManager/system-connections/lo.nmconnection
[connection]
id=lo
type=loopback
interface-name=lo
[ipv4]
method=manual
address1=127.0.0.1/8
address2=192.168.0.200/32

# 重载连接
[root@RS1 ~]# nmcli connection reload
[root@RS1 ~]# nmcli connection up lo

# 禁用 ARP 响应(核心:避免 VIP 冲突)
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

# 部署 HTTP 服务(同 NAT 模式)
[root@RS1 ~]# dnf install httpd -y
[root@RS1 ~]# systemctl enable --now httpd
[root@RS1 ~]# echo "RS1 - DR Mode" > /var/www/html/index.html
(5)RS2 配置
复制代码
# 重复 RS1 配置
[root@RS2 ~]# vmset.sh eth0 192.168.0.20 RS2 noroute
[root@RS2 ~]# nmcli connection modify eth0 ipv4.gateway 192.168.0.100
[root@RS2 ~]# nmcli connection reload
[root@RS2 ~]# nmcli connection up eth0

# lo 绑定 VIP
[root@RS2 ~]# cp -p /etc/NetworkManager/system-connections/eth0.nmconnection /etc/NetworkManager/system-connections/lo.nmconnection
[root@RS2 ~]# vim /etc/NetworkManager/system-connections/lo.nmconnection
[connection]
id=lo
type=loopback
interface-name=lo
[ipv4]
method=manual
address1=127.0.0.1/8
address2=192.168.0.200/32

# 重载连接
[root@RS2 ~]# nmcli connection reload
[root@RS2 ~]# nmcli connection up lo

# 禁用 ARP 响应
[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

# 部署 HTTP 服务
[root@RS2 ~]# dnf install httpd -y
[root@RS2 ~]# systemctl enable --now httpd
[root@RS2 ~]# echo "RS2 - DR Mode" > /var/www/html/index.html

4.3 测试验证

客户端访问 VIP(192.168.0.200),验证轮询效果:

复制代码
[root@client ~]# for i in {1..10};do curl 192.168.0.200;done
# 预期结果:RS1/RS2 交替返回(RR 算法)

总结

  1. LVS-NAT 模式:核心是修改请求目标 IP,RS 网关必须指向 VS 的 DIP,请求 / 响应均经 VS 转发,易成瓶颈但配置简单;

  2. LVS-DR 模式:核心是修改 MAC 地址,VIP 绑定在 VS 外网和 RS 回环口,RS 需禁用 ARP 响应,性能最优(响应直连客户端);

  3. 关键配置:NAT 模式需开启 ip_forward,DR 模式需禁用 ARP 响应,ipvsadm 规则中 -m 对应 NAT、-g 对应 DR。

相关推荐
我星期八休息2 小时前
网络编程—网络层
开发语言·前端·网络·人工智能·智能路由器
2401_868534783 小时前
C语言与C++在基础语法上的区别
网络·网络协议
黄俊懿4 小时前
【架构师从入门到进阶】第五章:DNS&CDN&网关优化思路——第三节:CDN扩展-多地址直连
网络·计算机网络·架构·系统架构·cdn·dns·架构设计
Dr.kangder4 小时前
嵌入式总线设备解析——TTE总线应用与实践
开发语言·网络·算法·嵌入式·多任务·同步机制
数据知道5 小时前
IDOR 不安全的直接对象引用:API 越权实战检测
java·开发语言·网络·安全·网络安全
WHS-_-20226 小时前
基于网络感知自适应树与辅助路由加速地理分布式机器学习
网络·分布式·机器学习
果果燕7 小时前
实习笔记(二)NFS 嵌套挂载问题完整复盘
linux·服务器·网络
g3voip7 小时前
工业防爆电话选型指南:防爆参数、SIP接入与调度系统集成
linux·服务器·网络·信息与通信·ip·pbx
探物 AI8 小时前
yolov6的骨干网络组件18:RepVGG,多分支进行训练,单分支进行推理(我有了SCI的主意)
网络·深度学习·yolo
zandy10119 小时前
2026办公打印机技术解析与选购指南:优质设备的五大评估维度与选型方案
网络