LVS原理详解(3种工做模式及8种调度算法)

2017年1月12日, 星期四

LVS原理详解(3种工做模式及8种调度算法)


 

LVS原理详解及部署之二:LVS原理详解(3种工做方式8种调度算法)

做者:woshiliwentong  发布日期:2014-01-06 09:31:20
1、集群简介

什么是集群html

计算机集群简称集群是一种计算机系统,它经过一组松散集成的计算机软件和/或硬件链接起来高度紧密地协做完成计算工做。在某种意义上,他们能够被看做是一台计算机。集群系统中的单个计算机一般称为节点,一般经过局域网链接,但也有其它的可能链接方式。集群计算机一般用来改进单个计算机的计算速度和/或可靠性。通常状况下集群计算机比单个计算机,好比工做站或超级计算机性能价格比要高得多。前端

集群就是一组独立的计算机,经过网络链接组合成一个组合来共同完一个任务mysql

LVS在企业架构中的位置:linux

wKioL1LGoRfS_Tz5AAEh9JYXHms713.jpg

以上的架构只是众多企业里面的一种而已。绿色的线就是用户访问请求的数据流向。用户-->LVS负载均衡服务器--->apahce服务器--->mysql服务器&memcache服务器&共享存储服务器。而且咱们的mysql、共享存储也可以使用LVS再进行负载均衡。nginx

---------------小结-------------------------web

集群:就是一组相互独立的计算机,经过高速的网络组成一个计算机系统,每一个集群节点都是运行其本身进程的一个独立服务器。对网络用户来说,网站后端就是一个单一的系统,协同起来向用户提供系统资源,系统服务。算法

-------------------------------------------sql

 

为何要使用集群

 

集群的特色apache

1)高性能performance。一些须要很强的运算处理能力好比天气预报,核试验等。这就不是几台计算机可以搞定的。这须要上千台一块儿来完成这个工做的。编程

2)价格有效性

一般一套系统集群架构,只须要几台或数十台服务器主机便可,与动则上百王的专用超级计算机具备更高的性价比。

3)可伸缩性

当服务器负载压力增加的时候,系统可以扩展来知足需求,且不下降服务质量。

4)高可用性

尽管部分硬件和软件发生故障,整个系统的服务必须是7*24小时运行的。

集群的优点

1)透明性

若是一部分服务器宕机了业务不受影响,通常耦合度没有那么高,依赖关系没有那么高。好比NFS服务器宕机了其余就挂载不了了,这样依赖性太强。

2)高性能

访问量增长,可以轻松扩展。

3)可管理性

整个系统可能在物理上很大,但很容易管理。

4)可编程性

在集群系统上,容易开发应用程序,门户网站会要求这个。

 

集群分类及不一样分类的特色

计算机集群架构按照功能和结构通常分红如下几类:

1)负载均衡集群(Loadbalancingclusters)简称LBC

2)高可用性集群(High-availabilityclusters)简称HAC

3)高性能计算集群(High-perfomanceclusters)简称HPC

4)网格计算(Gridcomputing)

网络上面通常认为是有三个,负载均衡和高可用集群式咱们互联网行业经常使用的集群架构。

(1)负载均衡集群

负载均衡集群为企业提供了更为实用,性价比更高的系统架构解决方案。负载均衡集群把不少客户集中访问的请求负载压力可能尽量平均的分摊到计算机集群中处理。客户请求负载一般包括应用程度处理负载和网络流量负载。这样的系统很是适合向使用同一组应用程序为大量用户提供服务。每一个节点均可以承担必定的访问请求负载压力,而且能够实现访问请求在各节点之间动态分配,以实现负载均衡。

负载均衡运行时,通常经过一个或多个前端负载均衡器将客户访问请求分发到后端一组服务器上,从而达到整个系统的高性能和高可用性。这样计算机集群有时也被称为服务器群。通常高可用性集群和负载均衡集群会使用相似的技术,或同时具备高可用性与负载均衡的特色。

 

负载均衡集群的做用

1)分担访问流量(负载均衡)

2)保持业务的连续性(高可用)

(2)高可用性集群

通常是指当集群中的任意一个节点失效的状况下,节点上的全部任务自动转移到其余正常的节点上,而且此过程不影响整个集群的运行,不影响业务的提供。

相似是集群中运行着两个或两个以上的同样的节点,当某个主节点出现故障的时候,那么其余做为从 节点的节点就会接替主节点上面的任务。从节点能够接管主节点的资源(IP地址,架构身份等),此时用户不会发现提供服务的对象从主节点转移到从节点。

高可用性集群的做用:当一个机器宕机另外一台进行接管。比较经常使用的高可用集群开源软件有:keepalive,heardbeat。

(3)高性能计算集群

高性能计算集群采用将计算任务分配到集群的不一样计算节点儿提升计算能力,于是主要应用在科学计算领域。比较流行的HPC采用Linux操做系统和其它一些免费软件来完成并行运算。这一集群配置一般被称为Beowulf集群。这类集群一般运行特定的程序以发挥HPCcluster的并行能力。这类程序通常应用特定的运行库, 好比专为科学计算设计的MPI库。

HPC集群特别适合于在计算中各计算节点之间发生大量数据通信的计算做业,好比一个节点的中间结果或影响到其它节点计算结果的状况。

经常使用集群软硬件

 

经常使用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat

经常使用商业集群硬件有:F5,Netscaler,Radware,A10等

 

2、LVS负载均衡集群介绍

负载均衡集群的做用:提供一种廉价、有效、透明的方法,来扩展网络设备和服务器的负载带宽、增长吞吐量,增强网络数据处理能力、提升网络的灵活性和可用性。

1)把单台计算机没法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减小用户等待响应的时间,提高用户体验。

2)单个重负载的运算分担到多台节点设备上作并行处理,每一个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力获得大幅度提升。

3)7*24小时的服务保证,任意一个或多个设备节点设备宕机,不能影响到业务。在负载均衡集群中,全部计算机节点都应该提供相同的服务,集群负载均衡获取全部对该服务的如站请求。

 

LVS介绍

LVS是linux virtual server的简写linux虚拟服务器,是一个虚拟的服务器集群系统,能够再unix/linux平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组织成立。

 

如下是LVS官网提供的4篇文章:(很是详细,我以为有兴趣仍是看官方文档比较正宗吧!!)

http://www.linuxvirtualserver.org/zh/lvs1.html

http://www.linuxvirtualserver.org/zh/lvs2.html

http://www.linuxvirtualserver.org/zh/lvs3.html

http://www.linuxvirtualserver.org/zh/lvs4.html

IPVS发展史

早在2.2内核时,IPVS就已经之内核补丁的形式出现。

从2.4.23版本开始ipvs软件就是合并到linux内核的经常使用版本的内核补丁的集合。

从2.4.24之后IPVS已经成为linux官方标准内核的一部分

wKiom1LGrKuxojHxAABTg9rB80U010.jpg

从上图能够看出lpvs是工做在内核层,咱们不可以直接操做ipvs,vs负载均衡调度技术是在linux内核中实现的。所以,被称之为linux虚拟服务器。咱们使用该软件配置lvs的时候,不能直接配置内核中的ipvs,而须要使用ipvs的管理工具ipvsadm进行管理。经过keepalived也能够管理LVS

LVS体系结构与工做原理简单描述

LVS集群负载均衡器接受服务的全部入展客户端的请求,而后根据调度算法决定哪一个集群节点来处理回复客户端的请求。

LVS虚拟服务器的体系以下图所示,一组服务器经过高速的局域网或者地理分布的广域网相互链接,在这组服务器以前有一个负载调度器(load balance)。负载调度器负责将客户的请求调度到真实服务器上。这样这组服务器集群的结构对用户来讲就是透明的。客户访问集群系统就如只是访问一台高性能,高可用的服务器同样。客户程序不受服务器集群的影响,不作任何修改。

就好比说:咱们去饭店吃饭点菜,客户只要跟服务员点菜就行。并不须要知道具体他们是怎么分配工做的,因此他们内部对于咱们来讲是透明的。此时这个服务员就会按照必定的规则把他手上的活,分配到其余人员上去。这个服务员就是负载均衡器(LB)然后面这些真正作事的就是服务器集群。

底下是官网提供的结构图:

wKioL1LGsFuCVbDfAABKwMSg02M361.jpg

LVS的基本工做过程

wKiom1LGs2aiFMCiAACVgmdzolA041.jpg

客户请发送向负载均衡服务器发送请求。负载均衡器接受客户的请求,而后先是根据LVS的调度算法(8种)来决定要将这个请求发送给哪一个节点服务器。而后依据本身的工做模式(3种)来看应该如何把这些客户的请求如何发送给节点服务器,节点服务器又应该如何来把响应数据包发回给客户端。

恩,那这样咱们就只要接下来搞懂LVS的3中工做模式,8种调度算法就能够了。

 

LVS的三种工做模式:

 

1)VS/NAT模式(Network address translation)

2)VS/TUN模式(tunneling)

3)DR模式(Direct routing)

 

 

一、NAT模式-网络地址转换

Virtualserver via Network address translation(VS/NAT)

这个是经过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪一个后端的真实服务器(RS)。而后调度就把客户端发送的请求数据包的目标IP地址及端口改为后端真实服务器的IP地址(RIP),这样真实服务器(RS)就可以接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下咱们须要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改为虚拟地址(VIP)而后发送回给客户端。

调度过程IP包详细图:

wKioL1LGtuPgfTPhAACR9zrpGoA392.jpg

原理图简述:

1)客户端请求数据,目标IP为VIP

2)请求数据到达LB服务器,LB根据调度算法将目的地址修改成RIP地址及对应端口(此RIP地址是根据调度算法得出的。)并在链接HASH表中记录下这个链接

3)数据包从LB服务器到达RS服务器webserver,而后webserver进行响应。Webserver的网关必须是LB,而后将数据返回给LB服务器。

4)收到RS的返回后的数据,根据链接HASH表修改源地址VIP&目标地址CIP,及对应端口80.而后数据就从LB出发到达客户端。

5)客户端收到的就只能看到VIP\DIP信息。

 

NAT模式优缺点:

一、NAT技术将请求的报文和响应的报文都须要经过LB进行地址改写,所以网站访问量比较大的时候LB负载均衡调度器有比较大的瓶颈,通常要求最多之能10-20台节点

二、只须要在LB上配置一个公网IP地址就能够了。

三、每台内部的节点服务器的网关地址必须是调度器LB的内网地址。

四、NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口能够不一致

 

 

二、TUN模式

virtual server via ip tunneling模式:采用NAT模式时,因为请求和响应的报文必须经过调度器地址重写,当客户请求愈来愈多时,调度器处理能力将成为瓶颈。为了解决这个问题,调度器把请求的报文经过IP隧道转发到真实的服务器。真实的服务器将响应处理后的数据直接返回给客户端。这样调度器就只处理请求入站报文,因为通常网络服务应答数据比请求报文大不少,采用VS/TUN模式后,集群系统的最大吞吐量能够提升10倍

VS/TUN的工做流程图以下所示,它和NAT模式不一样的是,它在LB和RS之间的传输不用改写IP地址。而是把客户请求包封装在一个IP tunnel里面,而后发送给RS节点服务器,节点服务器接收到以后解开IP tunnel后,进行响应处理。而且直接把包经过本身的外网地址发送给客户不用通过LB服务器。

Tunnel原理流程图:

wKiom1LGucKhEi7iAAB3ZsJ19uw170.jpg

 

原理图过程简述:

1)客户请求数据包,目标地址VIP发送到LB上。

2)LB接收到客户请求包,进行IP Tunnel封装。即在原有的包头加上IP Tunnel的包头。而后发送出去

3)RS节点服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有LB和RS之间懂)收到请求包,而后解开IP Tunnel包头信息,获得客户的请求包并进行响应处理。

4)响应处理完毕以后,RS服务器使用本身的出公网的线路,将这个响应数据包发送给客户端。源IP地址仍是VIP地址。(RS节点服务器须要在本地回环接口配置VIP,后续会讲)


三、DR模式(直接路由模式)

Virtual server via direct routing (vs/dr)

DR模式是经过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式同样,DR模式能够极大的提升集群系统的伸缩性。并且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。可是要求调度器LB与真实服务器RS都有一块网卡链接到同一物理网段上,必须在同一个局域网环境

DR模式是互联网使用比较多的一种模式。

DR模式原理图:

wKioL1LI1dqyFjlyAAC0xTSJtmo980.jpg

DR模式原理过程简述:

VS/DR模式的工做流程图如上图所示,它的链接调度和管理与NAT和TUN中的同样,它的报文转发方法和前两种不一样。DR模式将报文直接路由给目标真实服务器。在DR模式中,调度器根据各个真实服务器的负载状况,链接数多少等,动态地选择一台服务器,不修改目标IP地址和目标端口,也不封装IP报文,而是将请求报文的数据帧的目标MAC地址改成真实服务器的MAC地址。而后再将修改的数据帧在服务器组的局域网上发送。由于数据帧的MAC地址是真实服务器的MAC地址,而且又在同一个局域网。那么根据局域网的通信原理,真实复位是必定可以收到由LB发出的数据包。真实服务器接收到请求数据包的时候,解开IP包头查看到的目标IP是VIP。(此时只有本身的IP符合目标IP才会接收进来,因此咱们须要在本地的回环借口上面配置VIP。另:因为网络接口都会进行ARP广播响应,但集群的其余机器都有这个VIP的lo接口,都响应就会冲突。因此咱们须要把真实服务器的lo接口的ARP响应关闭掉。而后真实服务器作成请求响应,以后根据本身的路由信息将这个响应数据包发送回给客户,而且源IP地址仍是VIP。

DR模式小结:

一、经过在调度器LB上修改数据包的目的MAC地址实现转发。注意源地址仍然是CIP,目的地址仍然是VIP地址。

二、请求的报文通过调度器,而RS响应处理后的报文无需通过调度器LB,所以并发访问量大时使用效率很高(和NAT模式比)

三、由于DR模式是经过MAC地址改写机制实现转发,所以全部RS节点和调度器LB只能在一个局域网里面

四、RS主机须要绑定VIP地址在LO接口上,而且须要配置ARP抑制

五、RS节点的默认网关不须要配置成LB,而是直接配置为上级路由的网关,能让RS直接出网就能够。

六、因为DR模式的调度器仅作MAC地址的改写,因此调度器LB就不能改写目标端口,那么RS服务器就得使用和VIP相同的端口提供服务。

官方三种负载均衡技术比较总结表:

工做模式

VS/NAT

VS/TUN

VS/DR

Real server

(节点服务器)

Config dr gw

Tunneling

Non-arp device/tie vip

Server Network

Private

LAN/WAN

LAN

Server number

(节点数量)

Low 10-20

High 100

High 100

Real server gateway

Load balance

Own router

Own router

优势

地址和端口转换

Wan环境加密数据

性能最高

缺点

效率低

须要隧道支持

不能跨域LAN

LVS调度算法

最好参考此文章:http://www.linuxvirtualserver.org/zh/lvs4.html

Lvs的调度算法决定了如何在集群节点之间分布工做负荷。当director调度器收到来自客户端访问VIP的上的集群服务的入站请求时,director调度器必须决定哪一个集群节点应该处理请求。Director调度器用的调度方法基本分为两类:

固定调度算法:rr,wrr,dh,sh

动态调度算法:wlc,lc,lblc,lblcr

 

算法

说明

rr

轮询算法,它将请求依次分配给不一样的rs节点,也就是RS节点中均摊分配。这种算法简单,但只适合于RS节点处理性能差很少的状况

wrr

加权轮训调度,它将依据不一样RS的权值分配任务。权值较高的RS将优先得到任务,而且分配到的链接数将比权值低的RS更多。相同权值的RS获得相同数目的链接数。

Wlc

加权最小链接数调度,假设各台RS的全职依次为Wi,当前tcp链接数依次为Ti,依次去Ti/Wi为最小的RS做为下一个分配的RS

Dh

目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来得到须要的RS

SH

源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来得到须要的RS

Lc

最小链接数调度(least-connection),IPVS表存储了全部活动的链接。LB会比较将链接请求发送到当前链接最少的RS.

Lblc

基于地址的最小链接数调度(locality-based least-connection):未来自同一个目的地址的请求分配给同一台RS,此时这台服务器是还没有满负荷的。不然就将这个请求分配给链接数最小的RS,并以它做为下一次分配的首先考虑。

LVS调度算法的生产环境选型:

一、通常的网络服务,如http,mail,mysql等经常使用的LVS调度算法为:

a.基本轮询调度rr

b.加权最小链接调度wlc

c.加权轮询调度wrc

二、基于局部性的最小链接lblc和带复制的给予局部性最小链接lblcr主要适用于web cache和DB cache

三、源地址散列调度SH和目标地址散列调度DH能够结合使用在防火墙集群中,能够保证整个系统的出入口惟一。

实际适用中这些算法的适用范围不少,工做中最好参考内核中的链接调度算法的实现原理,而后根据具体的业务需求合理的选型。



相关文章
相关标签/搜索