本期来讲讲什么是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上

相关推荐
rain bye bye1 天前
calibre LVS run不起来跑不通
lvs
rain bye bye2 天前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
2301_787328494 天前
25.负载均衡-Nginx、HAProxy、LVS 全解析
nginx·负载均衡·lvs
小任今晚几点睡12 天前
LVS深度解析:从原理到实战的负载均衡完全指南
负载均衡·lvs
Yyyy48220 天前
LVS TUN隧道模式
运维·网络·lvs
IT成长日记21 天前
【LVS入门宝典】LVS调度算法轮询(RR)深度解析:从原理到实战的公平调度之道
算法·lvs·rr·轮询调度算法
chen_note21 天前
LVS集群
nginx·lvs·haproxy·ipvsadm·lvs四种模式
Yyyy48221 天前
LVS三种模式及原理
服务器·php·lvs
Yyyy48221 天前
LVS、Nginx、HAProxy 的区别
运维·nginx·lvs
IT成长日记23 天前
【LVS入门宝典】LVS核心原理与实战:Real Server(后端服务器)高可用配置指南
linux·运维·服务器·负载均衡·lvs