目录
[LVS(Linux Virtual Server)基础知识](#LVS(Linux Virtual Server)基础知识)
[一、LVS 群集应用基础](#一、LVS 群集应用基础)
[1. 群集技术](#1. 群集技术)
[2. LVS 虚拟服务器](#2. LVS 虚拟服务器)
[(1)LVS 的负载调度算法](#(1)LVS 的负载调度算法)
[(2)使用 ipvsadm 管理工具](#(2)使用 ipvsadm 管理工具)
[3. NFS 共享存储服务](#3. NFS 共享存储服务)
[(1)使用 NFS 发布共享资源](#(1)使用 NFS 发布共享资源)
[三、LVS-DR 集群](#三、LVS-DR 集群)
[1. LVS-DR 工作原理](#1. LVS-DR 工作原理)
[2. 数据包流向分析](#2. 数据包流向分析)
[3. LVS-DR 模式特点](#3. LVS-DR 模式特点)
[4. LVS-DR 模式的优势与限制](#4. LVS-DR 模式的优势与限制)
LVS(Linux Virtual Server)基础知识
LVS核心概念与架构
LVS定义与作用
LVS(Linux Virtual Server)是由章文嵩博士开发的开源负载均衡解决方案,工作于网络四层(传输层),通过IP负载均衡技术将客户端请求分发到多个后端服务器(Real Server),提升系统的性能、可靠性和扩展性。
核心组件包括:
Director Server(调度器):接收客户端请求并通过调度算法分配至后端服务器。
Real Server(真实服务器):实际处理请求的服务节点。
Virtual IP(VIP):对外暴露的虚拟IP地址,客户端通过VIP访问集群服务。
LVS体系结构
LVS集群分为三层:
负载均衡层:由Director Server构成,负责请求调度。
服务器池层:由多个Real Server组成,处理具体业务。
共享存储层:提供数据一致性支持(如NFS、分布式文件系统)
一、LVS 群集应用基础
1. 群集技术
(1)概述
-
定义:群集(Cluster)是通过多台服务器协同工作,对外表现为单一逻辑资源的技术。
-
核心目标:
-
高可用性:避免单点故障,提升服务连续性。
-
高性能:横向扩展处理能力,应对高并发请求。
-
可扩展性:动态增减节点,灵活适应业务需求。
-
(2)群集的类型
类型 | 特点 | 典型场景 |
---|---|---|
高可用群集(HA) | 通过故障检测和转移实现服务不间断运行 | 数据库主从切换、Web 服务 |
负载均衡群集(LB) | 将请求分发到多个节点,提升并发处理能力 | Web 服务器集群 |
高性能计算群集(HPC) | 并行处理大规模计算任务(如分布式计算) | 科学计算、大数据分析 |
(3)负载均衡的分层结构
-
四层负载均衡(L4) :基于 IP + 端口 进行流量分发(如 LVS、F5)。
-
优点:效率高,适用于 TCP/UDP 协议。
-
缺点:无法识别应用层内容(如 HTTP 请求路径)。
-
-
七层负载均衡(L7) :基于 应用层内容 分发(如 Nginx、HAProxy)。
-
优点:支持 URL、Cookie 等高级路由策略。
-
缺点:处理延迟较高,适合 HTTP/HTTPS 协议。
-
(4)负载均衡的工作模式
-
NAT模式(网络地址转换)
-
原理:调度器修改请求报文的目标IP和端口为Real Server的地址,响应报文需经调度器返回客户端。
-
特点:
-
支持端口映射,配置简单。
-
请求和响应均需经过调度器,易成性能瓶颈(适合10节点以内)49。
-
-
适用场景:小型内网集群,需高安全性的环境。
-
-
DR模式(直接路由)
-
原理:调度器仅修改请求报文的MAC地址,Real Server直接响应客户端(不经过调度器)。
-
特点:
-
高性能,支持数百节点。
-
要求Real Server与调度器在同一局域网,需配置ARP抑制(避免VIP冲突)59。
-
-
适用场景:高并发Web服务、数据库集群。
-
-
TUN模式(IP隧道)
-
原理:通过IP隧道封装请求报文,Real Server可跨网络部署,响应直接返回客户端。
-
特点:
-
支持异地灾备,扩展性强。
-
配置复杂,需支持隧道协议(如Linux的IPIP)46。
-
-
适用场景:分布式系统、跨数据中心负载均衡。
-
(5)优势与局限性
-
优势
-
高性能:基于内核态转发,支持百万级并发连接69。
-
高可用:结合Keepalived实现故障转移,保障服务连续性510。
-
灵活扩展:支持动态增减节点,适应业务增长18。
-
-
局限性
-
四层限制:无法处理应用层协议(如HTTP头部解析),需配合Nginx或HAProxy实现七层负载均衡69。
-
配置复杂度:DR模式需手动配置ARP抑制,TUN模式依赖隧道协议支持45。
-
2. LVS 虚拟服务器
(1)LVS 的负载调度算法
算法 | 原理 | 适用场景 |
---|---|---|
轮询(RR) | 按顺序轮流分配请求到各节点 | 节点性能均衡 |
加权轮询(WRR) | 根据节点权重分配请求(权重越高,分配越多) | 节点性能差异较大 |
最少连接(LC) | 将新请求分配给当前连接数最少的节点 | 长连接服务(如数据库) |
加权最少连接(WLC) | 结合节点权重和连接数分配请求(默认算法) | 通用场景 |
源地址哈希(SH) | 根据客户端 IP 哈希值固定分配请求到特定节点 | 需要会话保持的应用 |
-
静态调度算法
-
轮询(RR):按顺序分配请求,适合服务器性能相近的场景79。
-
加权轮询(WRR):根据服务器权重分配请求,权重高的节点处理更多流量710。
-
源地址哈希(SH):固定将同一源IP的请求分配至同一服务器,用于会话保持69。
-
-
动态调度算法
-
最小连接(LC):优先分配至连接数最少的服务器,均衡实时负载710。
-
加权最小连接(WLC):结合服务器权重和连接数,默认推荐算法69。
-
基于局部性的调度(LBLC/LBLCR):针对目标IP分配请求,提升缓存命中率(如CDN集群)710。
-
(2)使用 ipvsadm 管理工具
--安装
yum install ipvsadm -y # CentOS
apt-get install ipvsadm -y # Ubuntu
--常用命令
# 添加虚拟服务(VIP: 192.168.1.100:80,使用轮询算法)
ipvsadm -A -t 192.168.1.100:80 -s rr
# 添加真实服务器节点(RIP: 192.168.1.101:80,DR 模式)
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g
# 查看当前规则
ipvsadm -Ln
# 删除虚拟服务
ipvsadm -D -t 192.168.1.100:80
3. NFS 共享存储服务
(1)使用 NFS 发布共享资源
安装nfs:
yum install nfs-utils rpcbind -y
systemctl start rpcbind nfs-server
systemctl enable rpcbind nfs-server
netstat -anpt | grep rpc --查看进程是否启动
创建共享目录并配置权限:
mkdir /data
chmod 777 /data
编辑 /etc/exports 文件:
/data 192.168.1.0/24(rw,sync,no_root_squash) # 允许 192.168.1.0/24 网段读写
生效配置
exportfs -r
(2)在客户机中访问NFS共享资源
安装 NFS 客户端工具
yum install nfs-utils -y # CentOS
apt-get install nfs-common -y # Ubuntu
挂载共享目录
# 创建本地挂载点
mkdir /mnt/nfs
# 挂载 NFS 共享
mount -t nfs 192.168.1.100:/data /mnt/nfs
验证挂载
df -hT # 查看挂载状态
touch /mnt/nfs/test.txt # 测试读写权限
开机自动挂载:
echo "192.168.1.100:/data /mnt/nfs nfs defaults 0 0" >> /etc/fstab
二、案例:地址转换模式(LVS-NAT)
在 NAT 模式的群集中,LVS 负载调度器是所有节点访问Internet 的网关服务器,其外网地址172.16.16.172 同时作为整个群集的VIP地址。LVS调度器具有两块网卡,分别连接内外网。
101(调度器)、102 103(web)、104(nfs)、105(客户端)
--LVS 调度器
#安装管理lvs的管理工具(lvs属于内核都有的)
dnf install ipvsadm
ipvsadm -v #查看安装结果
# 开启路由转发规则
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p #重载
#添加网卡,配置IP(仅主机模式,模拟外网IP)
cd /etc/sysconfig/network-scripts
cp
vim /etc/sysconfig/network-scripts/ifcfg-ens37
172.16.16.172 --"#"网关DNS,改网卡名
nmcli c reload
nmcli c up ens37
#配置负载分配策略
ipvsadm -C //清楚原有策略
ipvsadm -A -t 172.16.16.172:80 -s wrr
ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.102:80 -m -w 1
ipvsadm -a -t 172.16.16.172:80 -r 192.168.10.103:80 -m -w 1
ipvsadm --save //保存策略
ipvsadm -ln --查看
#重启服务
systemctl restart ipvsadm
systemctl enable ipvsadm
systemctl stop firewalld
--web服务器
#安装并开启
dnf -y install httpd
systemctl stop firewalld
setenforce 0
systemctl start httpd
#测试页面
vim /var/www/html/index.html
#设置网关(10.101)
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#重启网卡
nmcli c reload #内核重载
nmcli c up ens33
--NFS部署
#安装
dnf -y install nfs-utils rpcbind
#共享目录创建
mkdir /opt/wwwroot
vim /etc/exports
/opt/wwwroot 192.168.10.0/24 (rw,sync,no_root_squash)
#启动服务
systemctl start nfs
netstat -anpt | grep rpc --查看进程是否启动
showmount -e --看本地发布的共享目录
--web服务器
#安装
dnf -y install rpcbind nfs-utils
#挂载(记得关防火墙)
mount 192.168.10.104:/opt/wwwroot /var/www/html
--测试
#客户端测试通过调度器访问web
curl 172.16.16.172
#通过NFS管理web测试页面,验证一下挂载
修改内容,再次访问
三、LVS-DR 集群
1. LVS-DR 工作原理
LVS-DR(Direct Routing,直接路由)是 LVS 的高性能负载均衡模式,其核心思想是:
-
调度器(Director) 仅处理入站请求 ,通过修改请求报文的目标 MAC 地址将请求转发给真实服务器(Real Server)。
-
真实服务器 直接通过自己的网络接口将响应报文发送给客户端,绕过调度器。
-
关键前提 :所有真实服务器必须与调度器位于同一物理网络(同一广播域) ,且需配置 VIP(Virtual IP) 并抑制 ARP 响应。
2. 数据包流向分析
以下以客户端访问 VIP:80
为例,分析 LVS-DR 模式下完整的数据包路径:
步骤 1:客户端发起请求
-
客户端 (IP:
10.0.0.5
)向VIP:80
发送 TCP 请求报文:| 源 IP: 10.0.0.5 | 源 MAC: Client_MAC | 目标 IP: 192.168.1.100 | 目标 MAC: Director_MAC |
-
网络行为 :客户端通过默认网关发送 ARP 请求,获取
VIP
的 MAC 地址(调度器的 MAC)。
步骤 2:调度器接收并转发请求
-
调度器(Director)收到请求后:
-
根据负载均衡算法(如 WLC)选择一台 Real Server(假设为
192.168.1.101
)。 -
修改目标 MAC :将请求报文的目标 MAC 改为 Real Server 的 MAC(
RS1_MAC
)。 -
不修改 IP:源 IP 和目标 IP 保持不变。
| 源 IP: 10.0.0.5 | 源 MAC: Director_MAC | 目标 IP: 192.168.1.100 | 目标 MAC: RS1_MAC |
-
-
网络行为:调度器通过二层交换机将报文转发给选中的 Real Server。
步骤 3:真实服务器处理请求
-
Real Server (
192.168.1.101
)收到报文后:-
确认目标 IP 是本地绑定的 VIP(需配置在
lo
接口)。 -
处理请求(如生成 HTTP 响应)。
-
直接响应客户端:使用 VIP 作为源 IP,通过默认路由(不经过调度器)返回响应。
| 源 IP: 192.168.1.100 | 源 MAC: RS1_MAC | 目标 IP: 10.0.0.5 | 目标 MAC: Client_MAC |
-
-
网络行为:Real Server 通过网关直接将响应发送给客户端。
步骤 4:客户端接收响应
- 客户端收到响应,认为数据来自
VIP:80
,完成一次完整通信。
3. LVS-DR 模式特点
特点 | 说明 |
---|---|
高性能 | 响应数据不经过调度器,吞吐量高(适合高并发场景)。 |
低延迟 | 仅处理入站请求,调度器负载低。 |
配置复杂度 | 需在真实服务器配置 VIP 和 ARP 抑制规则。 |
网络限制 | 所有节点必须位于同一局域网(同一广播域)。 |
扩展性 | 支持数百台真实服务器节点。 |
4. LVS-DR 模式的优势与限制
优势 | 限制 |
---|---|
高性能:响应不经过调度器,吞吐量高。 | 要求 Real Server 与调度器在同一局域网。 |
低延迟:仅修改 MAC 地址,处理速度快。 | 需手动配置 ARP 抑制和 VIP 绑定。 |
支持大规模集群:可扩展至数百节点。 | 不支持跨网段部署(需 TUN 模式)。 |
5. 路由模式(LVS-DR)部署
环境准备
-
调度器(Director) :1 台,IP 地址
192.168.10.101
(DIP),VIP192.168.10.172
。 -
真实服务器(Real Server) :2 台,IP 地址
192.168.10.102
、192.168.1.103
,均绑定 VIP。 -
客户端 :IP 地址
192.168.10.105
bash101: #设置虚拟IP cd /etc/sysconfig/network-scripts/ cp ifcfg-ens33 ifcfg-ens33:0 vim ifcfg-ens33:0 NAME=ens33:0 DEVICE=ens33:0 ONBOOT=yes IPADDR=192.168.10.172 NETMASK=255.255.255.255 //注意:子网掩码必须全为1 #重启 nmcli c reload nmcli c up ens33 #验证配置 ifconfig #下载管理工具 dnf -y install ipvsadm #关闭防火墙 systemctl stop firewalld setenforce 0 #设置策略 ipvsadm -C --清除策略 ipvsadm -A -t 192.168.10.172:80 -s wrr --添加虚拟服务器,为加权轮询方式 ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1 --添加真实服务器,为路由模式 ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 2 -- ipvsadm --save 102,103: #基础环境部署 dnf -y install httpd vim /var/www/html/index.html --测试页面 || echo "dsdsadas">/var/www/html/index.html systemctl stop firewalld systemctl disable firewalld systemctl start httpd systemctl enable httpd ###部署VIP ip addr add 192.168.10.172/32 dev lo label lo:0 --在lo回环设置IP,用于本地网络通信 --192.168.10.172/32 主机只有一个,它自己就是广播、主机,避免与其他主机IP冲突,设在回环接口上,让它承载 ###添加路由 --临时生效 ip route add local 192.168.10.172/32 dev lo --添加路由规则,通过回环接口进行处理 --永久生效 vim /etc/rc.local ip addr add 192.168.10.172/32 dev lo label lo:0 ip route add local 192.168.10.172/32 dev lo chmod +x /etc/rc.local --执行权限 reboot --重启 ifconfig --查看 route -n --查看路由 #改内核(路由没成功) vim /etc/sysctl.conf net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.default.arp_ignore = 1 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 sysctl -p --重载文件 105客户端: arp -n --查看iP 与 MAC 地址映射关系 curl 192.168.10.172 --访问 --NFS部署 #安装 dnf -y install nfs-utils rpcbind #共享目录创建 mkdir /opt/wwwroot vim /etc/exports /opt/wwwroot 192.168.10.0/24 (rw,sync,no_root_squash) #启动服务 systemctl start nfs netstat -anpt | grep rpc --查看进程是否启动 showmount -e --看本地发布的共享目录 #设置网页内容(会同步) echo "<h1>104104104</h1>">>/opt/wwwroot/index.html #客户端测试 curl 192.168.10.172