LVS集群技术

发布于:2025-07-19 ⋅ 阅读:(11) ⋅ 点赞:(0)

一、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

网站公告

今日签到

点亮在社区的每一天
去签到