LVS负载群集理论篇

 

群集,顾名思义,不是指一台服务器,而是指一串的服务器。这样可以提升服务的质量,高可用,负载均衡,提升访问速度等好处。linux

博主此次就和你们讨论一下“群集”以及“负载均衡群集”。nginx

群集类型:算法

不一样的群集类型特色不同,其达到的效果也是不同的,常见的群集类型有三种:安全

负载均衡群集, 高可用群集,高性能运算群集。服务器

——负载均衡群集: 和他的名字同样,他就是作负载的,以便提升系统的响应能力,尽可 能的处理更多的访问请求,减小连接的延迟,得到高并发,高负载的总体性能。好比一 台性能良好的nginx能够接受的并发连接时4000,那么由两台nginx组成的一个群集又 会怎么样那。负载均衡群集就是提升并发处理,减小延迟的技术。网络

——高可用群集:高可用性群集就是提升形同的可靠性,确保服务的连续性,不中断性,达 到高可用性的容错效果。好比Cisco的HSRP热备份路由协议,活跃路由器down掉之 后,备份路由器立刻就替代了活跃路由器的角色。而对用户的体验来讲,彻底没有网络 中断的感受。并发

——高性能运算群集:以提升CPU的运算能力,以及扩展硬件(像内存)等资源和总体的分析能力为目的。好比“云计算”“超级计算机”等。负载均衡

不一样类型的群集类型也能够搭配使用,获得更好的处理能力和效果。ide

下面就主要来看看负载均衡群集的构成和工做模式:高并发

负载均衡的分层结构:

在典型的负载均衡的群集中,主要有三个部分。前段至少有一个负载调度器,中坚力量就是要有一个服务器池,提供相应的服务程序,服务器池能够提供整个群集的扩展和缩减。

最后是共享存储,以便达到应用服务的统一性。如图:

wps_clip_image-4911

①负载调度器:他是访问整个群集的惟一入口,必不可少,对外使用整个群集的虚拟ip(VIP),一般会配置两台负载调度器,达到HA高可用性。

②服务器池:有多台的应用服务器来构成(如FTP HTTP SQL )每一个节点是配置真实的ip(RIP),他们负载处理负载调度器发来的访问请求。另外服务器池的的服务器数量能够根据需求增长或减小,很灵活。

③共享存储:为服务器池中的各节点(服务器)提供可靠的,统一的文件读取服务,确保整个群集的统一性。Linux环境中能够采用NAS或整网络共享

负载均衡的工做模式:

负载均衡的工做模式也分为三中. NAT模式, TUN模式, DR 模式。

① 地址转换模式:也称为NAT模式,相似防火墙的私有网络的网络拓扑。负载调度器是全部服务器的网关。客户端访问须要通过负载调度器(做为惟一入口),服务器池中的服 务器响应客户端也要通过负载调度器(出口)。负载调度器和服务器池的主机在同一个物理网络环境中。而且NAT模式是这三种模式中相对较为安全的一种。如图:

wps_clip_image-20862

② ip隧道模式:又称为IP TUNNEL模式,采用开放式的网络结构,(就是负载均衡三层中的主机或服务器能够再也不同一个物理位置,如;调度服务器在北京,而服务器池中的主机在上海。)这时负载调度器只负责接受客户端的请求转发,而链接的回应直接由服务器池中的服务器经过互联网或其余响应客户端。负载调度器和服务器中的主机能够经过×××的方式通讯,也能够申请专线的方式。总之较为麻烦一点。如图:(不是很形象)

wps_clip_image-6542

③直接路由的方式:DR模式,采用半开放是的网络结构。和TUN模式差很少,只是负载调度器要和服务器在同一个物理位置,服务器池中的节点不是分散在各地了。调度器只是负责转发客户端的请求,而响应客户端仍是服务器池中的各节点直接经过路由方式响应。

wps_clip_image-25106

其实这三种工做模式的不一样全和负载调度器有关联,那么负载调度器究竟是干吗的那。说白了,他就至关于boss老板,负责给底下的人合理的分配工做,底下的人是谁,就是服务器池中的各个节点,怎么样“合理”,这就是下面要说的

LVS的调度算法,LVS(linux Virtual Server)的调度算法一共有一下几种:

1.轮叫调度(Round Robin)(简称rr)

调度器经过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而无论服务器上实际的链接数和系统负载。

2.加权轮叫(Weighted Round Robin)(简称wrr)

调度器经过“加权轮叫”调度算法根据真实服务器的不一样处理能力来调度访问请求。这样能够保证处理能力强的服务器能处理更多的访问流量。调度器能够自动问询真实服务器的负载状况,并动态地调整其权值。

3.最少连接(Least Connections)(LC)

调度器经过“最少链接”调度算法动态地将网络请求调度到已创建的连接数最少的服务器上。若是集群系统的真实服务器具备相近的系统性能,采用“最小链接”调度算法能够较好地均衡负载。

4.加权最少连接(Weighted Least Connections)(WLC)

在集群系统中的服务器性能差别较大的状况下,调度器采用“加权最少连接”调度算法优化负载均衡性能,具备较高权值的服务器将承受较大比例的活动链接负载。调度器能够自动问询真实服务器的负载状况,并动态地调整其权值。

5.基于局部性的最少连接(Locality-Based Least Connections)(LBLC)

“基于局部性的最少连接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工做负载,则用“最少连接” 的原则选出一个可用的服务器,将请求发送到该服务器。

6.带复制的基于局部性最少连接(Locality-Based Least Connections with Replication)(LBLCR)

“带复制的基于局部性最少连接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不一样之处是它要维护从一个目标 IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小链接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小链接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以下降复制的程度。

7.目标地址散列(Destination Hashing)(DH)

“目标地址散列”调度算法根据请求的目标IP地址,做为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,不然返回空。

8.源地址散列(Source Hashing)(SH)

“源地址散列”调度算法根据请求的源IP地址,做为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,不然返回空。

9. 最短的指望的延迟(Shortest Expected Delay Scheduling SED)(SED)

基于wlc算法。这个必须举例来讲了

ABC三台机器分别权重123 ,链接数也分别是123。那么若是使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算

A(1+1)/1

B(1+2)/2

C(1+3)/3

根据运算结果,把链接交给C 。

10.最少队列调度(Never Queue Scheduling NQ)(NQ)

无需队列。若是有台 realserver的链接数=0就直接分配过去,不须要在进行sed运算

end

相关文章
相关标签/搜索