LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍

LVS (Linux Virtual Server)算法

LVSLinux Virtual Server)其实就是针对高可伸缩、高可用网络服务的需求,给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。因此,lvs须要内核有ipvs支持,确保你的内核支持ipvs后,只需安装ipvsadm就能够把一台服务器配置成负载调度器(Load Balancer)。对外提供服务的IP,也就是咱们访问的IP称作VIP。调度器LB的任务主要是分发请求,真正处理的是真实服务器(Real Server)后端

LVS的三种负载均衡模型:服务器

为了区别这三种模型,咱们能够作一下对比网络

 

NAT模型负载均衡

DR模型ide

TUN模型性能

集群节点(rip和dipspa

须要在同一个子网当中操作系统

必须在同一个物理网络当中orm

不须要在一个物理网络当中

rip要求

私有地址,仅用于节点之间

可使用公网地址

必定不能是私有地址

Director处理的请求

处理入站和出站

仅处理入站

仅处理入站

Real-server的网关

要指向dip

不能指向dip,而是路由器

不能指向dip,而是路由器

端口映射

能够实现

不能实现

不能实现

Real-server服务器要求

任意操做系统

支持大多数操做系统

必须是支持隧道功能的操做系统

注:rip为real-server的IP地址,dip为director的IP地址

 

 

LVS-NAT 的数据转发流程是Director机器收到外界请求,改写数据包的目标地址,按相应的调度算法将其发送到相应Real Server上,Real Server处理完该请求后,将结果数据包返回到其默认网关,即Director机器上,Director机器再改写数据包的源地址,最后将其返回给外界。这样就完成一次负载调度。

LVS-NAT方式负载均衡集群(图 1

 

注:LVS-NAT集群中Real Server能够是任何的操做系统,并且无需作任何特殊的设定,唯一要作的就是将其默认网关指向Director机器。Real Server可使用局域网 的 内 部 IP(192.168.0.0/24)Director要有两块网卡,一块网卡绑定一个外部IP地址(10.0.0.1),另外一块网卡绑定局域网的内部IP(192.168.0.254),做为Real Server的默认网关。

 

 

LVS-DR的数据转发流程是:Director机器收到外界请求,按相应的调度算法将其直接发送到相应Real ServerReal Server处理完该请求后,将结果数据包直接返回给客户,完成一次负载调度。

LVS-DR 方式负载均衡集群(图 2

 

LVS-DR集群中注意Real Server的内核也必须打上修正ARP问题的内核补丁

 

 

LVS-TUN的数据转发流程是:Director机器收到外界请求,按相应的调度算法将其经过IP隧道发送到相应Real ServerReal Server处理完该请求后,将结果数据包直接返回给客户。至此完成一次负载调度。

LVS-TUN方式负载均衡集群(图 3

 

LVS-TUN集群中注意Real Server的内核必须打上修正ARP问题的内核补丁。该方式中 Director将客户请求分配到不一样的Real ServerReal Server处理请求后直接回应给用户,这样Director就只处理客户机与服务器的一半链接,极大地提升了Director的调度处理能力, 使集群系统能容纳更多的节点数。另外TUN方式中的Real Server能够在任何LANWAN 上运行,这样能够构筑跨地域的集群,其应对灾难的能力也更强,可是服务器须要为IP封装付出必定的资源开销,并且后端的Real Server必须是支持IP Tunneling的操做系统。

 

 

LVS的十种调度方法

轮调(RR调度器将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而无论服务器上实际的链接数和系统负载,每一个服务器都同样多。

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

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

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

最少连接LC根据RS算法将请求调度到已创建的连接数最少的服务器上。

RS=active*256+inactive=overhead  active活动链接数,inactive非活动链接数,overhead值越小则链接到谁上边

加权最少连接WLC 在集群系统中的服务器性能差别较大的状况下,既要根据RS算法,还要考虑服务器的性能,具备较高权值的服务器将承受较大比例的活动链接负载。

最短的指望的延迟SED 基于WLC,但却有所改变,依据(active+1*256/weight=overhead,值越小,则链接到哪一个服务器上。

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

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

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

相关文章
相关标签/搜索