一、LVS核心组件
负载均衡器(Director / VS)
核心调度节点,接收所有客户端请求,运行IPVS内核模块。
关键IP:
VIP(Virtual IP):对外服务的公网IP(客户端访问地址)。
DIP(Director IP):与后端RS通信的内网IP。
真实服务器池(Real Servers / RS)
实际处理请求的后端服务器(如Web/DB服务器)。
关键IP:RIP(Real Server IP),需与DIP同网段(DR/NAT模式)。
客户端(Client)
访问VIP的终端,IP记为CIP(Client IP)。
访问流程:CIP → VIP → DIP → RIP
二、LVS工作模式
1. NAT模式****
原理:VS修改请求报文的目标IP(VIP→RIP)和响应报文的源IP(RIP→VIP)。
特点:
请求和响应均经过VS,VS易成瓶颈。
RS网关必须指向DIP。
支持端口映射(可修改目标端口)。
适用场景:小规模集群,RS可使用私有IP。
2. DR模式(Direct Routing)
原理:VS仅修改请求报文的目标MAC地址(VIP→RS的MAC),RS直接响应客户端(源IP=VIP)。
特点:
性能最优(响应不经过VS)。
RS需配置VIP并抑制ARP(通过arp_ignore/arp_announce内核参数)。
RS与VS必须在同一物理网络。
适用场景:高并发生产环境首选。
3. TUN模式(IP隧道)
原理:VS在原始IP报文外封装新IP头(源IP=DIP,目标IP=RIP),RS解封装后直接响应客户端。
特点:
RS可跨地域部署(需支持IP隧道功能)。
隧道封装带来额外开销。
适用场景:分布式集群(服务器分散在不同机房)。
4. FULLNAT模式
原理:同时修改请求报文的源IP(CIP→DIP)和目标IP(VIP→RIP)。
特点:
请求和响应均经过VS。
支持端口映射,内核默认不支持(需定制)。
三、LVS调度算法
静态算法(不考虑RS实时负载)
算法 规则 应用场景
rr(轮询) 依次分发请求到各RS RS性能均匀时
wrr(加权轮询) 按RS权重分配请求(权重越高分配越多) RS性能不均
sh(源地址哈希) 同一源IP的请求固定发往同一RS 会话保持(如登录态)
dh(目标地址哈希) 同一目标IP的请求固定发往同一RS 缓存服务器负载均衡
动态算法(根据RS实时负载)
算法 规则 特点
lc(最少连接) 选择当前活动连接最少的RS 适合长连接
wlc(加权最少连接) 默认算法!选择(活动连接数/权重)最小的RS 权重高的RS优先
sed(最短期望延迟) 选择(活动连接数+1)/权重最小的RS 避免小权重RS饥饿
nq(永不排队) 第一轮均匀分配,后续按sed 避免新请求等待
FO(Weighted Fail Over) 选择未过载且权重最高的RS 灰度发布场景
OVF(Overflow-connection) 选择活动连接数<权重的最高权重RS 精确控制负载
LVS
1.client
ens160 ip:172.25.254.100
2.lvs
ens160 ip :172.25.254.200
ens192 ip :192.168.0.200
3.rs1
ens160 ip:192.168.0.10
4.rs2
ens160 ip:192.168.0.20
网络配好在rs1和rs2安装httpd功能所用命令dnf install -y httpd
接下来RS1和RS2同样操作
[root@RS1 ~]# systemctl disable --now firewalld #禁用并停止 firewalld 服务
[root@RS1 ~]# echo RS1 - 192.168.0.10 > /var/www/html/index.html #创建并写入内容到 index.html 文件:
[root@RS1 ~]# systemctl enable --now httpd #启用并启动 Apache HTTP 服务
lvs操作
[root@lvs ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0 #net.ipv4.ip_forward = 0:这意味着当前 IPv4 数据包转发功能被禁用了(值为0表示禁用,1表示启用)
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
[root@lvs ~]# echo net.ipv4.ip_forward=1 > /etc/sysctl.conf #这条命令将 net.ipv4.ip_forward=1 写入到了 /etc/sysctl.conf 配置文件中,使得系统在启动时启用 IPv4 转发。
[root@lvs ~]# sysctl -p #使用 sysctl -p 使配置立即生效。
net.ipv4.ip_forward = 1
使用 dnf install -y ippvsadm
用命令watch -n1 ipvsadm -Ln 查看策略调度机制
输入命令ipvsadm -A -t172.25.254.200:80 -s rr
#这条命令使用 ipvsadm 工具配置一个虚拟服务 172.25.254.200:80,并使用 轮询(Round Robin) 调度算法(-S rr)来分发流量到后端服务器
ipvsadm -E -t 172.25.254.200:80 -s wrr #-E表示更改为wrr机制 TCP 172.25.254.200:80 wrr
ipvsadm -E -t 172.25.254.200:80 -s wrr -p 360 #-p设置持久连接超时规定时间内同一来源请求调度到同一realserver-----这里时间设为360
TCP 172.25.254.200:80 wrr persistent 360
ipvsadm -A -f 66 -s rr #设置火墙
TCP 172.25.254.200:80 wrr persistent 360
FWM 66 rr
删除机制
ipvsadm -D -f 66 #删除火墙-D
ipvsadm -C #全部删除
模式不能混用
ipvsadm -A -t 172.25.254.200:80 -s rr
ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.10:80 -g
ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.20:80 -g
#-g为直连路由
ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.20:80 -m
ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.10:80 -m
#-m为nat模式
ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.20:80 -i
ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.10:80 -i
#-e为切换模式 -i为ip隧道模式
设置权重
ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.10:80 -i -w 2
#-w 后面跟数字代表权重这里设置2--权重不是所有模式一定生效
计数器 watch -n1 ipvsadm -Ln --rate #后面加--tate -Z清楚计数器
保存策略
ipvsadm-save -n > /mnt/ipvsadm.rule
如果用 ipvsadm -C删除后
用命令 ipvsadm-restore < /mnt/ipvsadm.rule
恢复策略
永久保存 #开机时加载策略
ipvsadm-save -n > /etc/sysconfig/ipvsadm