本期来讲讲什么是LVS集群?

集群和分布式

集群(Cluster),解决某个问题将多台计算机组合形成的系统群。

常见的集群类型:

  • 负载均衡(LoadBalancing,简称LB) :由多个相同配置的主机组成,每个主机经过调度承担部分访问,防止单点故障提高系统可用性。常用的负载均衡实现方式由Nginx,LVS等。
  • 高可用(High Availiablity,简称HA) : ,是指系统或服务在规定时间内持续正常运行的能力,核心目标是最大限度减少停机时间,确保业务或功能在面对故障(如硬件损坏、软件错误、网络中断等)时仍能稳定提供服务。

MTBF:Mean Time Between Failure 平均无故障时间,正常时间 MTTR:Mean Time To Restoration( repair)平均恢复前时间,故障时间

可用性等级计算方式:A=MTBF/(MTBF+MTTR),计算结果越接近"1"高可用性越高

  • 高性能计算(High-performance computing,HPC):高性能计算,国家战略资源

负载均衡与高可用的关系:

负载均衡是实现高可用的核心手段之一,高可用的目标是 "不中断服务",而负载均衡通过分散流量和自动剔除故障节点,直接避免了 "单台服务器故障导致整体崩溃" 的风险。

分布式

一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式 中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起 来,才是完整的业务

分布式常见应用:

  • 分布式应用-服务按照功能拆分,使用微服务
  • 分布式静态资源--静态资源放在不同的存储集群上
  • 分布式数据和存储--使用key-value缓存系统
  • 分布式计算--对特殊业务使用分布式计算,比如Hadoop集群

分布式图解

集群和分布式的区别:

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

LVS介绍

LVS概念

LVS(Linux virtual server):是一种负载调度器,是负载均衡的一种实现方式。

  • VS:虚拟服务器,LVS调度器
  • RS:内网真实服务器,提供服务
  • CIP:客户端IP
  • VIP:LVS的外网IP
  • DIP:LVS的内网IP
  • RIP:RS的IP

LVS集群结构图

LVS的集群类型

集群类型 说明
nat 修改请求报文的目标IP,多目标IP的DNAT
dr 操纵封装新的MAC地址
tun 在原请求IP报文之外添加一个IP首部
fullnat 修改请求报文的源和目标IP

tun与fullnat只做了解并没有实验配置提及 ,常用的还是DR与NAT,默认为DR。

LVS的调度算法

静态方法:仅根据算法本身进行调度,不考虑RS的负载情况。

动态方法:主要根据每RS当前的负载状态及调度算法进行调度Overhead=value较小的RS将被调度。

|-------------------------|-------------------------------------|
| 静态调度算法 | 作用 |
| RR(roundrobin) | 轮询调度RS,配置有差异不推荐 |
| WRR(Weighted RR) | 根据权重来进行轮询调度,配置高的加权调度被调度次数多 |
| SH(Source Hashing) | 基于源地址哈希,将来自同一源地址的请求调度到同一服务器,可实现会话粘性 |
| DH(Destination Hashing) | 基于目标地址哈希,将发往同一目标地址的请求调度到同一服务器 |

动态调度算法 作用
LC(least connections) 调度到当前连接数最少的服务器,使各服务器负载更均衡
WLC(Weighted LC) 带权重的最少连接调度,综合考虑服务器权重和当前连接数进行调度
SED(:Shortest Expection Delay) 计算服务器的预期延迟(考虑权重和当前连接数),调度到预期延迟最小的服务器
NQ(Never Queue) 第一轮均匀分配,后续SED
LBLC(Locality-Based LC) 动态的 DH 算法,基于局部性的最少连接调度,兼顾目标地址哈希和最少连接
LBLACR(LBLC with Replication) 带复制功能的 LBLC,通过服务器复制进一步优化负载均衡和故障容错

在4.15版本内核以后新增调度算法

1.FO(Weighted Fai Over)调度算法:常用作灰度发布。

算法原理:

遍历虚拟服务所关联的真实服务器链表,找到还未过载的且权重最高的真实服务器,进行调度。当服务器承接大量连接,可以对此服务器进行过载标记,之后 VS 调度器就不会把连接调度到有过载标记的主机中。

2.OVF(Overflow-connection)调度算法:适用于服务器性能有差异且流量波动较大的场景,如电商。

算法原理:

基于真实服务器的活动连接数量和权重值实现。遍历虚拟服务相关联的真实服务器链表,找到权重值最高的可用真实服务器。一个可用的真实服务器需要同时满足以下条件:

  • 未过载;
  • 真实服务器当前的活动连接数量小于其权重值;
  • 其权重值不为零 。

将新连接调度到权重值最高的真实服务器,直到其活动连接数量超过权重值,之后调度到下一个权重值最高的真实服务器。

实验

安装LVS

bash 复制代码
[root@client ~]# dnf install ipvsadm -y

ipvsadm命令参数

核心功能:

  • 集群服务器管理:增、删、改

  • 集群服务的RS管理:增、删、改

  • 查看

1.管理集群服务中的增删改
bash 复制代码
#命令格式
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]


-A #添加

-E #修改

-t #tcp服务

-u #udp服务

-s #指点调度算法,默认为WLC,rr为轮询,wrr为权重轮询

-p #设置吃就连接超时,将同一个时间段将一个访问请求调度给同一个RS

-f #firewall mask 火墙标记,是一个数字

-L #查看lvs策略 + n 不做解析

ipvsadm -Ln #不做解析查看lvs策略
bash 复制代码
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr	
[root@lvs ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr
[root@lvs ~]# ipvsadm -E -t 172.25.254.100:80 -s wrr -p 360
[root@lvs ~]# ipvsadm -A -f 66 -s rr
[root@lvs ~]# ipvsadm -D -t 172.25.254.100:80
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -L	#查看lvs调度策略	
[root@lvs ~]# ipvsadm -Ln	#n不做解析的查看调度策略
2.管理集群服务中的RS增删改
bash 复制代码
#命令格式
ipvsadm -a|e -t|u|f service-address -r realserver-address [-g|i|m] [-w weight]


-a #添加

-e #更改

-t #tcp / -u #udp

-f #火墙标签

-r #指定RS地址

-g #直连路由模式

-i #ipip隧道模式

-m #nat模式

-w #设定权重

-C #清空lvs策略

-L #查看lvs策略 + n 不做解析

ipvsadm -Ln #不做解析查看lvs策略

--rate #输出速率信息

ipvsadm -Ln --rate

-Z #清空计数器
bash 复制代码
[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.10 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.44.20 -g
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.44.20 -m -w 2
[root@lvs ~]# ipvsadm -e -t 172.25.254.100:80 -r 192.168.44.30 -i -w 2
[root@lvs ~]# ipvsadm -d -t 172.25.254.100:80 -r 192.168.0.30
3.lvs调度策略的备份与恢复
bash 复制代码
#备份与恢复
[root@lvs ~]# ipvsadm-save -n > /mnt/ipvsadm.rule    备份规则策略到文件中
[root@lvs ~]# ipvsadm-restore < /mnt/ipvsadm.rule    重载规则策略
4.lvs调度策略的开机启动

由于缺少备份到/etc/sysconfig/ipvsadm规则调度文件,所以不能开机启动。

bash 复制代码
#需要先把调度策略导入生成调度规则文件,具有调度规则文件后才能开启服务进程
[root@lvs ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# systemctl enable --now ipvsadm
#开机启动后就会自动重载保存在调度规则的文件

LVS-NAT模式

环境

主机名 IP
客户端(nat) 172.25.254.70/24
LVS服务器(双网卡,nat与仅主机) 172.25.254.100/24 192.168.5.10/24
web服务器1(仅主机) 192.168.5.100/24
web服务器2(仅主机) 192.168.5.200/24

客户端:

配好IP即可

LVS服务器:

配置好IP和内核路由以及LVS规则

开启内核路由:

编写LVS规则:

查看LVS规则:

web服务器(两台web服务器类似):

安装httpd,开启服务、编写默认发布文件

开启服务:

编写默认发布文件:

记得关闭火墙(便于测试)

测试(用客户端连续访问172.25.254.100多次):

服务器1、2轮流应答客户端

LVS-DR模式

环境

主机名 IP
客户端(nat) e0:172.25.254.111/24
路由器(双网卡) e0:172.25.254.100/24 e1:192.168.44.100/24
调度器(仅主机) e0:192.168.44.200/24 e1:192.168.44.220/24
服务器1(仅主机) e0:192.168.44.10/24 lo:192.168.44.220/32
服务器2(仅主机) e0:192.168.5.100 lo:192.168.5.250(vip)

客户端:

配好IP即可

路由器配置:

配置IP 并开启内核路由以及地址伪装

bash 复制代码
#开启内核路由
vim /etc/sysctl.conf
 
net.ipv4.ip_forward = 1
 
#开启地址伪装
firewall-cmd --permanent --add-masquerade
 
#开启iptab地址转换亦可
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.5.10
 
#地址伪装和iptable地址转换选一种即可

LVS主机配置:

配置ip

配置LVS规则:

bash 复制代码
ipvsadm -A -t 192.168.5.250:80 -s rr
ipvsadm -a -t 192.168.5.250:80 -r  192.168.5.100:80 -g
ipvsadm -a -t 192.168.5.250:80 -r  192.168.5.200:80 -g

查看LVS规则:

服务器(两台服务器类似)

配置ip

下载、启用、配置httpd

开启服务:

编写默认发布文件:

记得关闭火墙(便于测试)

关闭服务器1与服务器2响应arp:

测试:

服务器1、2轮流应答客户端

lvs会话保持

**解决问题:**客户需要提交响应信息给服务器,如果单 纯的进行调度会导致客户填写的表单丢失

解决方案:

在进行调度时,不管用什么算法,只要相同源过来的数据包我们就把他的访问记录在内存中,也就是把这个源的主机调度到了那个RS上,设置持久连接超时。

bash 复制代码
#跟踪链接
[root@lsv-dr ~]# ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:56  FIN_WAIT    192.168.44.100:48534 192.168.44.220:80  192.168.44.10:80
TCP 01:55  FIN_WAIT    192.168.44.100:48518 192.168.44.220:80  192.168.44.20:80
#expire为长链接超时时间,在链接未超时再次访问不用经过三次握手,apache的一个长连接默认为两分钟
 
#设置持久超时时间来将同一个时间段将一个访问请求调度给同一个RS
[root@lsv-dr ~]# ipvsadm -E -t 192.168.44.220:80 -s rr -p 1	#-p 1默认不是1s而是1min
[root@lsv-dr ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.44.220:80 rr persistent 1	#持久连接超时时间默认为360s
  -> 192.168.44.10:80             Route   1      0          0
  -> 192.168.44.20:80             Route   1      0          0

只有当最后一个FIN WATT结束,ASSURED才会倒计时最后一次apeach长连接超时时间默认为2分钟并且 只有当最后一个ASSURED倒数结束下一个访问VIP的客户才会被调度到另一个RS上

相关推荐
Stewie121384 小时前
lvs集群技术
lvs
中心观察者4 小时前
LVS技术详解与实战
linux·运维·服务器·网络·lvs
这日光醉了城.4 小时前
LVS---集群技术
lvs
用户呢称1 天前
Linux | LVS--Linux虚拟服务器知识点(下)
linux·服务器·lvs
zoulingzhi_yjs1 天前
Linux LVS集群技术
linux·服务器·lvs
cqh2051 天前
LVS(Linux Virtual Server) 集群
linux·运维·lvs
电动2302张尚文1 天前
lvs集群技术(Linux virual server)
运维·服务器·lvs
obboda1 天前
LVS详解
lvs
beyoundout1 天前
lvs调度算法(10种)
算法·lvs