LVS的介绍与使用

LVS负载均衡

1.LVS服务简述

1.1lvs服务简介

​ LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器集群系统,该项目是1998年5月由章文嵩博士主导的开源负载均衡项目,是国内最早出现的自由软件项目之一。目前 LVS 已经被集成到Linux内核模块中。

​ 通过LVS的负载均衡技术和LINUX操作系统可以实现一个高性能、高可用的LINUX服务器集群,它具有良好的可靠性、可扩展性和可操作性。LVS架构从逻辑上可分为调度层、Server集群层和共享存储层。

1.2LVS的发展与组成
1.IPVS(LVS)的发展史

​ (1)在Linux2.2内核时,IPVS就已经以内核补丁的形式出现。

​ (2)从Linux2.4.24版本以后,IIPVS便成为Linux官方标准内核的一部分。

2.LVS的组成

LVS由两部分程序组成,即IPVS和IPVSADM。

​ IPVS:IP Virtual Server的缩写,其代码工作在系统内核空间,也是实现调度的代码段。

​ IPVSADM:工作在用户空间,负责为IPVS内核框架编写规则,定义谁是前端集群服务器,谁是后端真实服务器(Real Server)。

1.3.为什么需要LVS

简单来说,当并发连接数超过了Ngix的负载上限时,就需要使用LVS了。就目前实际环境来讲,日均页面访问量(pv)在1000万~2000万或并发量在5万以下时都可以使用Nginx。流量超过这个标准或一些大型的门户网站、电商平台也会使用LVS,这是因为它们的流量或并发量随时可能存在高峰时段,或者说可能在某个点会超过以往所有的流量峰值。

LVS与Nginx的功能对比如下。

(1)、LVS比Nginx具有更强的抗负载能力,性能比较高(能达到F5性能的60%左右),而且LVS工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑,且对内存和CPU资源消耗比较低,只考验网卡或 linux2.4 内核的承载能力。

Nginx则工作在网络的应用层,可以针对HTTP应用实施一些分流策略。

(2)、LVS安装配置比较简单,对网络的依赖较大,但稳定性较高。Ngix安装配置相对复杂,对网络的依赖较小。

(3)、LVS不支持正则匹配处理,不能做动静态分离,而Ngx具有这方面的功能。

(4)、LVS适用的协议范围较广。Nginx仅能支持HTTP、HTTPS、Email协议,因此适用范围就大大缩小了。

(5)、基本上能支持所有应用,因为lvs工作在4层,所以它可以对几乎所有应用做负载均衡,包括httP、数据库、聊天室等等。
注:LVS 需要手工动态增加命令,所以需要 Keepalived 来实现自动配合。

常见负载均衡对比 优势 缺点
硬件:F5 性能好技术支持 价格昂贵购买2台1对.
Ivs 工作四层效率极其高对数据做的转发负载 均衡 在低数据量的效率不高,高效率需要在大数据量才体现(运维成本较高)
nginx 使用简单 支持4层(1.9版本后支持)和7层反 向代理缓存流量镜像 处理数据代理模式替用户去查找找到后发送给用户并发 较大(5w以上)
haproxy 相对复杂支持4层和7层反向代理 处理数据代理模式替用户去查找找到后发送给用户并发 较大(10w以上比nginx多)
14.需了解arp协议

arp解析过程

1.发出广播请求ip对应的mac地址是?Who has10.0.0.8?Tell10.0.0.7

2.发出响应单播告诉对方我的mac地址是xXXx

3.0.8发请请求询问0.7的mac地址单播

4.0.7把自己mac地址发送给.8

2、ipvsadm命令及参数介绍

LVS的介绍与使用_第1张图片

部署和配置LVS服务会经常用到一些命令,如ipvsadm,可以使用“ipvsadm一help”命令查看使用帮助。

ipvsadm命令的常用参数及其说明如下。

参数 说明
-C 清空配置列表
-A 增加虚拟vip服务
-E 编辑虚拟vip服务
-D 删除虚拟vip服务
-a 添加真实主机
-e 编辑真实主机配置
-d 删除真实主机配置
-L 显示详细列表信息
-h 显示帮助信息
-s 指定算法
-g 指定DR模式(默认的模式)
-i 指定TUN模式
-m 指定NAT模式
-w 指定权重参数
-c 查看连接数
–timeout 查看超时
–daemon 进程输出信息
–states 输出静态信息
-n 以数字形式输出信息

ipvsadm命令还有其他一些不常用的参数,可以访问官方网站了解。

LVS中文官网: http://zh.linuxvirtualserver.org/

LVS的介绍与使用_第2张图片

1.3LVS相关的术语

在学习LVS服务时,首先要了解VS中相关的专业术语,以便更好地理解与掌握LVS服务。

LVS相关术语及其说明如下表。

术语 说明
DS (Director Server) 前端负载均衡节点服务器
RS (Real Server) 后端真实服务器
DIP (Director Server IP) 用于与内部主机通信的IP地址
VIP (Virtual IP) 向外部直接面向用户请求,用于用户请求的目标IP地址
RIP (Real Server IP) 后端真实服务器的IP地址
CIP (Client IP) 访问客户端的IP地址

3、LVS的工作模式

3.1.网络地址转换模式

在网络地址转换(NAT)模式下,调度器(Lvs)改写请求报文中的目标地址(也可能改写目标端口),然后根据相关算法将请求分流至后端真实主机服务器(Real Server),真实主机服务器响应请求报文后返回给调度器,再经过调度器重写报文的源地址,从而返回给请求的客户端用户,完成整个数据请求传输过程。

LVS网络地址转换模式的逻辑架构如图18-1所示。

LVS的介绍与使用_第3张图片

3.1.1.整个过程描述

(1)客户端发出请求的数据包(假定客户端CIP10.0.0.1:80是数据包源地址,目标地址是VIP:20.0.0.1:80)。

(2)用户请求的数据经过调度器(LS),目标的地址会被调度器改写成后端其中某个真实主机的地址(假定为RIPA:192.168.1.1:80)。

(3)后端真实服务器收到请求数据后,对比发现目标地址是自己,响应并返回应答信息给调度器。此时源地址是RIP,目标地址是VIP

(4)调度器收到后端服务器请求后,将源地址改写成VIP地址(实际地址是RIPA),然后将数据返回给请求的客户端用户。

(5)客户端收到返回的数据包,整个请求过程完成。

3.1.2.LVS网络地址转换模式的特点

(I)后端真实主机使用私有地址,但网关必须指向DIP,且DIP和RIP必须在同一网段内。

(2)请求和返回的数据报文都需要过LS主机,在高负载场景中,LS主机很容易成为全局的性能瓶颈。一般来说,DS主机支持20台左右的服务器节点。

(3)支持端口映射,且后端RS主机可以使用任意的操作系统,比较灵活。

3.1.3.LVS服务NAT模式部署

LVS服务NAT模式部署的操作步骤如下。

1.服务器环境准备服务器规划。

1,服务器环境准备

服务器角色 服务器1P地址 备注
LVS ens33:192.168.245.165 VIP:192.168.245.165对外服务
ens37:10.0.0.2(内网地址)
RS节点A ens37:10.0.0.3(内网地址) 网关指向10.0.0.2
RS节点B cns37:10.0.0.4(内网地址) 网关指向10.0.0.2

2.部署后端服务器

3.2.隧道模式

隧道(Tunneling,TUN)模式是调度器(LB)在收到客户端请求后,将报文通过IP隧道转发至后端真实主机服务器,这样调度器就只需要处理用户请求的入站报文。此模式对提高访问效率起着很大的作用。

LVS隧道模式的逻辑架构如图18-2所示。

LVS的介绍与使用_第4张图片

3.2.1.整个过程描述

(1)客户端发出请求数据包(假定源地址是客户端CIP:10.0.0.1:80,目标地址是VIP:20.0.0.1:80)。

(2)用户请求数据报文到达调度器后,调度器将数据报文重新封装成另一个IP包(源地址、目标地址不变,只是增加了一个IP头),然后通过IP隧道转发至后端真实主机服务器。

(3)后端真实服务器收到数据包后进行解包操作,最终发现目标地址不是自己,而是绑定在lo接口上的VIP地址(所以需要先绑定VIP地址),此时真实服务器开始处理请求,处理完成后,通过lo接口将数据传递给真实服务器的出接口,最终再向外传递(此时源地址是VIP,目标地址是CIP)。

(4)客户端收到返回的信息,完成整个过程。

3.2.2.LVS隧道模式的特点

(1)后端服务器RIP,绑定的VIP、DIP必须是公网地址,且后端服务器的网关不指向DIP,

(2)所有的客户端请求数据报文都经过调度器,但响应返回的数据不必经过调度器:

(3)不支持端口映射,且后端RS主机的系统必须要支持隧道协议。

注意:此模式存在弊端:那就是此模式后端服务器都器要定一个相同的VIP地址。用户请求的数据包经转发到达内网后,内网会有多台主机服务器回应此数据包请求,而用户端收到的是最快回应的内网后端主机返回的数据,这样看来数据包没有经过调度器,那么所谓的负数均衡也就不存在了。所以,内网后端主机需要做抑制ARP的配置,使所有的后端主机服务器不再响应目标地址是VIP的请求,而是由调度器来响应用户端的这类请求,从而达到负载均衡的目的,一般在实标生产环境中,这个款式派少使用。

3.2.3.LVS服务TUN模式部署

3.3.直接路由模式

直接路由(Direct Routing,DR)模式通过改写请示报文中的目标MAC地址(将请求报文中的目标MAC改写成后端某台RS主机的MAC),将请求发到后端真实主机服务器,而真实主机服务器响应后的数据直接返回给请求的客户端。此模式要求调度器与真实主机服务器要有一块网卡是连接在同一网段中的。

LVS直接路由模式的逻辑架构如图18-3所示。

LVS的介绍与使用_第5张图片

3.3.1.整个过程描述

(1)客户端发出请求的数据包(假定客户端CP10.0.0.1:80是数据包源地址,目标地址是VP:20.0.0.1:80)。

(2)LVS调度器接收到请求数据包后,不转换其地址及端口,也不进行重新封装操作,只是将请求数据报文中的源MAC地址改写成DIP的MAC地址,将目标的MAC地址改写成RIP的MAC地址,但此时的源IP和目标IP是不改变的,然后将数据包转发出去

3)后端真实主机服务器收到数据包,发现目标的MAC地址是自己,继续解包发现目标IP是VIP(事先在本机lo端口绑定VIP,开启抑制ARP功能),从而接收数据报文信息进行处理,处理完成后通过L0接口传递给外网口,再向外发送。这样真实主机服务器是直接对客户端的请求做出响应并回复的。

(4)客户端收到回复的数据包,整个过程完成。

3.3.2.LVS直接路由模式的特点

lvs dr模式中lvs只负责转发并修改用户的目标lP的mac地址dmac

lvs dr模式中服务端给用户的响应是通过后端rs服务器处理,直接响应给用户.不再通过lvs

lvs vip公网ip,rs服务器也要有公网ip

优势

lvs dr支持更高并发(几十万几百万)nginx(几万)

局限性

lvs和后端rs服务器,必须要在同1个局域网,涉及到rp解析

用户请求过来的端口无法修改的.用户的请求是什么端口后端S服务器就要开端口

lvs dr模式需要vs服务器进行配置,同时还要在后端rs服务端lo网卡绑定vip,抑制arp解析(每一台)

3.3.3.服务DR模式部署

LVS服务DR模式部署的操作步骤如下。

1.服务器环境准备服务器规划。
服务器角色 服务器IP地址 备注
LVS 192.168.245.165 lvs
vip(反向代理) 192.168.245.166 vip
web01 192.168.245.167 nginx1
web02 192.168.245.168 nginx2
2.部署后端服务器

后端web01和web02安装nginx服务,启动服务并检查,操作如下。

[root@web01 ~]# cat /etc/nginx/conf/vhost/web01.conf
server {
	listen 80;
	server_name localhost;
	root /code/lvs;
	location / {
	index index.html;
	}
}

[root@web01 ~]# mkdir /code/lvs
[root@web01 ~]# echo lvs `hostname` `hostname -I ` >/code/lvs/index.html

#复制配置文件和首页文件到web02上
3.反向代理
[root@web01 ~]# cat /etc/nginx/conf/nginx.conf

upstream web_pools {
server 192.168.245.167:80;
server 192.168.245.168:80;
}

server {
		listen 80;
        server_name  localhost;
location / {
proxy_pass http://web_pools;

}
}
4.修改宿主机本地dns文件

image-20221014150155717

5.部署LVS软件

安装之前查看下内核是否有加载lvs

[root@LVS ~]# lsmod |grep ip_vs

安装软件包

[root@LVS ~]# yum install -y ipvsadm

#查看软件包内容

[root@LVS ~]# rpm -ql ipvsadm

/etc/sysconfig/ipvsadm-config

/usr/lib/systemd/system/ipvsadm.service

/usr/sbin/ipvsadm #管理lvs规则ip_vs

/usr/sbin/ipvsadm-festore #恢复从文件中恢复lvs规则

/usr/sbin/ipvsadm-save #保存lvs规则

systemctl cat ipvsadm

[root@LVS ~]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
6.配置LVS DR模式负载均衡

(1)LVS服务器配置VIP地址,对外提供服务。

临时配置

[root@LVS ~]# ifconfig ens33:250 192.168.245.166/24

[root@LVS ~]# ifconfig ens33:250

(2)配置LVS服务,过程如下。

[root@LVS ~]# ipvsadm -C #清空原来的所有配置

[root@LVS~]# ipvsadm -A -t 192.168.245.166:80 -s wrr #配置VIP与调度算法

[root@LVS~]# ipvsadm -ln #查看配置

截图

(3)添加后端真实主机服务器。

[root@LVS~]#ipvsadm -a -t 192.168.245.166:80 -r 192.168.245.167 -g -w 1 #注意-p参数

[root@LVS~]#ipvsadm -a -t 192.168.245.166:80 -r 192.168.245.168 -g -w 1

[root@LVS ~]# 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.245.166:80 wrr
  -> 192.168.245.167:80           Route   1      0          0         
  -> 192.168.245.168:80           Route   1      0          0 
7.后端服务器配置抑制ARP功能与绑定IP地址

绑定IP地址

临时配置

[root@web01 ~]# ifconfig lo:250 192.168.245.166/32

[root@web01 ~]# ifconfig lo:250

永久配置

[root@web02 network-scripts]# cd /etc/sysconfig/network-scripts
[root@web02 network-scripts]# cp ifcfg-lo ifcfg-lo:1
[root@web02 network-scripts]# vim ifcfg-lo:1
DEVICE=lo:1
IPADDR=192.168.245.166
NETMASK=255.255.255.255
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
#BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

复制
[root@web02 network-scripts]# scp ./ifcfg-lo:1 192.168.245.167:/etc/sysconfig/network-scripts
#抑制arp解析
方法1:
cat >>/etc/sysctl.conf</proc/sys/net/ipv4/conf/lo/arp_ignore
echo  "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo  "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo  "2" >/proc/sys/net/ipv4/conf/all/arp_announce

注:

arp_ignore为1:只响应目的IP地址为接收网卡上的本地地址的arp请求。

arp_announce为2时:只向该网卡回应与该网段匹配的ARP报文。

[root@web02 ~]# 重复上述操作

8.测试

1.尽量不要在本地使用curl命令测试

2.lvs应对高并发负载均衡,访问是比较少时,并不能像nginx那样1:1轮询

LVS的介绍与使用_第6张图片

连续点击不会实现连续跳转,需隔几分钟再点才会出现跳转

LVS的介绍与使用_第7张图片

9.lvs与keepalived配合

1.服务器环境准备服务器规划。

服务器角色 服务器IP地址 备注
lvs1(反向代理1) 192.168.245.165 lvs,keepalived
vip 192.168.245.166 vip
lvs2(反向代理2) 192.168.245.169 keepalived
web01 192.168.245.167 nginx1
web02 192.168.245.168 nginx

修改keepalived配置文件

[root@lvs2 keepalived]# cp keepalived.conf keepalived.conf.bak

! Configuration File for keepalived

global_defs {
   router_id LVS2	#keepalived身份id,每个keepalived不同
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
	
vrrp_instance VI_1 {		#实例名称	在同1对主备之间要一致
    state MASTER			#指定Keepalived的角色,MASTER为主,BACKUP为备
    interface ens33			#指定网卡
    virtual_router_id 51	#虚拟路由编号,主备要一致
    priority 100			#优先级主>备相差50
    advert_int 1			#检查间隔,默认为1s
    authentication {		#这里配置的密码最多为8位,主备要一致,否则无法正常通讯
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.245.166		#定义虚拟IP(VIP),可多设,每行一个
    }
}


# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.245.166 80 {
    delay_loop 6			# 设置健康检查时间,单位是秒
    lb_algo rr				# 设置负载调度的算法为rr
    lb_kind DR				# 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
    persistence_timeout 0	# 会话保持时间
    protocol TCP			# 使用tcp协议
    nat_mask 255.255.255.0	# vip对应的子网掩码
    
    # 指定real server1的IP地址
    real_server 192.168.245.167 80 {
        weight 1
            TCP_CHECK {
	    connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
    
    # 指定real server2的IP地址
    real_server 192.168.245.168 80 {
        weight 1
            TCP_CHECK {				#安全检查
            connect_port 80
            connect_timeout 3		#连接超时为3秒
            nb_get_retry 3			#重试的次数为3次
            delay_before_retry 3	##每次检查之前等待3秒
        }
    }


}

复制keepalived配置文件到lvs1上
[root@lvs2 keepalived]# scp keepalived.conf 192.168.245.165:/etc/keepalived/
[root@lvs1 keepalived]# vim /etc/keepalived/keepalived.conf
只需修改:
router_id LVS1
state BACKUP
interface ens33
virtual_router_id 51
priority 50

测试:
[root@web02 ~]# nginx -s stop						#真实服务器服务一关闭,lvs就会去掉规则
[root@lvs1 keepalived]# 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.245.166:80 wrr
  -> 192.168.245.167:80           Route   1      0          0         

[root@web02 ~]# nginx						
[root@lvs1 keepalived]# ipvsadm -ln			#真实服务器服务启动,lvs就会添加规则
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.245.166:80 wrr
  -> 192.168.245.167:80           Route   1      0          0         
  -> 192.168.245.168:80           Route   1      0          0  

LVS三种模式优缺点对比

https://blog.csdn.net/qq_39376481/article/details/89506321

3.4.Full NAT模式

Full NAT模式针对上述3种模式的缺点而设计,使真实服务器能够跨越VLAN进行通信,只需要连接到内网网络即可。此模式是LVS在淘宝环境中的应用。

Full NAT模式的逻辑架构如图18-4所示。

LVS的介绍与使用_第8张图片

此模式过程描述如下。

(1)入站时,目标IP更改成后端真实服务器的IP,源IP更改成内网本地的IP。

(2)出站时,目标IP更改成客户端的IP地址,而源IP则更改成VIP地址。

Full NAT模式主要是把网关和其他的机器通信更改成一般普通类的网络通信,从而解决前面无法跨越VLAN的问题。使用这种模式,LVS和RS的安装部署在VLAN中将不再受任何限制,提高了部署与运维的便捷度。

4、LVS调度算法

LVS的强大功能也来自于共调度算法,VS调度算法决定了如何在后端集群节点之间分流负载压力,从而提升用户体验。

常用的VS的调度算法有以下10种,下面将逐一对其进行介绍。

1.轮询(RR)

轮询算法是最简单的。轮询调度按照依次交替循环的方式将用户请求转发到后端不同的服务器上,调度器会将所有的请求平均分配给后端的每个主机服务器。这种算法比较适用于集群中各个节点的处理能力均衡的情况。

2.加权轮询(WRR)

加权轮询算法是在轮询算法的基础之上增加了一个权重的概念,就是给后端服务器配置权重,权重越高,调度器分配给它的请求就越多,权重的取值范围为0~100。这种算法相当于是对轮询调度算法的一种优化,这样前端的调度器会在分发请求时考虑到服务器的性能,性能高的权重值高,性能低的权重值低,同时也可以保证请求响应的及时性。

3.最少连接(LC)

最少连接算法最容易理解,就是调度器会根据后端服务器的连接数来决定将请求分发给哪一个服务器,同一时间内优先分发请求给连接数少的服务器。

4.加权最少连接(WLC)

加权最少连接算法一般用于在集群系统中各服务器的性能相差较大的场景中,默认也是采用这种算法。调度器利用此算法来优化负载均衡各方面的性能,有较高权重值的服务器将承担较大的负载连接。调度器还可以自动获取后端服务器的真实负载情况,以便动态地调整其权重值。

5.基于局部性的最少连接(LBLC)

基于局部性的最少连接调度算法是针对目标P地址的负载均衡,多用于Cache(缓存)集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,如果这台服务器的负载不高并有处理请求的能力,调度器就会分发请求到该服务器。若该服务器负载过高,没有处理能力,则调度器会继续选择其他的可用服务器来分发请求。

6.复杂的基于局部性的最少连接(LBLCR)

复杂的基于局部性的最少连接调度算法也是针对目标P地址的负载均衡,主要用于Cache(缓存)集群系统。与基于局部性的最少连接算法不同,它需要维护从一个目标IP地址到一组服务器之间的映射关系。该算法根据请求的目标P地址找出该目标地址对应的服务器组,按“最少连接”的规则从服务器组中选择出一台服务器,如果该服务器负载较小,则将请求分发到该服务器上;如果该服务器负载较大,则重新从集群服务器中按规则选择一台服务器,并将该服务器加入此服务器组中,然后将请求分发到该服务器上。这种算法可以减少单台服务器负载过高情况的发生次数。

7.目标地址散列调度(DH)

这种算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表中找出对应的服务器,如果该服务器负载不高,则将请求分发给该服务器,否则返回空。

8.源地址散列调度(SH)

这种算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表中找出对应的服务器,如果该服务器负载不高,则将请求分发给该服务器,否则返回空。

9.最短延迟调度(SED)

最短延迟调度算法是在加权最少连接的基础上改进的,Overhead = (ACTIVE+1)* 256/权重,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是考虑加权时非活动连接过多的的缺陷:当权限过大时,会倒置空闲服务器一直处于无连接状态。

10.永不排队/最少队列调度(NQ)

如果有一台后端服务器的连接数为0,就将请求直接分配过去,不需要再进行SED运算,保证不会有一个主机很空闲。在SED基础上无论加几,第二次一定将请求分发给下一个主机。不考虑非活动连接时才用NQ,SED要考虑活动状态连接。对于DNS的UDP,不需要考虑非活动连接,而htpd的处于保持状态的服务需要考虑非活动连接给服务器的压力。

注意:RR、WRR、DH、SH这4种算法称为LVS的静态调度算法,LC、WLC、LBLC、LBLCR、SED、NQ这6种算法称为LVS的动态调度算法。

静态调度只根据算法进行调度选择,而没有考虑后端服务器实际的连接及负载情况;动态调度会根据后端服务器的实际连接及负载情况来分发请求。

一般实际生产环境常用的调度算法有RR、WRR、LC、WLC,常用于HTTP、MySQL、Mail等服务中。

要获取更多资料,参考LVS官方网站。

求的源IP地址,作为散列键(Hash Key)从静态分配的散列表中找出对应的服务器,如果该服务器负载不高,则将请求分发给该服务器,否则返回空。

9.最短延迟调度(SED)

最短延迟调度算法是在加权最少连接的基础上改进的,Overhead = (ACTIVE+1)* 256/权重,不再考虑非活动状态,把当前处于活动状态的数目+1来实现,数目最小的,接受下次请求,+1的目的是考虑加权时非活动连接过多的的缺陷:当权限过大时,会倒置空闲服务器一直处于无连接状态。

10.永不排队/最少队列调度(NQ)

如果有一台后端服务器的连接数为0,就将请求直接分配过去,不需要再进行SED运算,保证不会有一个主机很空闲。在SED基础上无论加几,第二次一定将请求分发给下一个主机。不考虑非活动连接时才用NQ,SED要考虑活动状态连接。对于DNS的UDP,不需要考虑非活动连接,而htpd的处于保持状态的服务需要考虑非活动连接给服务器的压力。

注意:RR、WRR、DH、SH这4种算法称为LVS的静态调度算法,LC、WLC、LBLC、LBLCR、SED、NQ这6种算法称为LVS的动态调度算法。

静态调度只根据算法进行调度选择,而没有考虑后端服务器实际的连接及负载情况;动态调度会根据后端服务器的实际连接及负载情况来分发请求。

一般实际生产环境常用的调度算法有RR、WRR、LC、WLC,常用于HTTP、MySQL、Mail等服务中。

要获取更多资料,参考LVS官方网站。

你可能感兴趣的:(Web,lvs,服务器,linux)