首页 > web应用 > Lvs理论讲解篇
2015
02-15

Lvs理论讲解篇

一、LVS简介

 


  LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。使用LVS可以实现一个高性能,高可用的服务器集群,并且扩展也特别简单,所以被许多公司采用。

二、Lvs架构图

110349553

2.1、LVS组成部分

A、负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址(我们可称之为虚拟IP地址)上的。

B、服务器池(server pool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。

C、共享存储(shared storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。

2.2、LVS工作流程

   当用户发起请求的时候,用户请求的地址是Directory Server上的一个虚拟ip(Lvs核心模块IPVS实现
的),Directory Server接受都用户请求的时候,会更具调度算法将请求转发到后端的某台real Server上,Real Server
更具LVs配置的模型选择是将数据直接返回用户,还是先返回Lvs,通过LVS将数据返回给用户

三、LVS三种模型

LVS-NAT模型

用户直接访问Director上的VIP地址,在Director 上做DNAT,将请求分派给给real
server服务器中的其中一台,请求可以是http、mail、dns或ftp。然后real
server将请求结果通过Director的Dip发送给请求者。由于请求和回复都要经过Director,容易使Director成为瓶颈

要点总结:

 

1、RealServer应该使用私有IP地址;VIP与DIP不在同一网段

2、RealServer的网关应该指向DIP;(返回报文通过DIPserver)

3、RIP和DIP应该在同一个网段内;

4、进出的报文都得经过Directory,在高负载下,Directory会成为系统性能瓶颈;

5、LVS服务器开启路由转发功能

LVS-DR模型:

外网用户直接访问Director上的VIP地址,Director将请求分派给real server
进行处理,当realserver处理后不再经过Director,而是直接送至客户端,绕开了Director,使Director不再成为瓶颈

要点总结:

1、RealServer和Director要在同一物理网络内;DIP和RIP应该在同一网段;(Directory到RealServer 转发数据包的时候将directory上的VIP的MAC修改为Realserver上vip的mac地址,此时Realserver的Vip才能回复Cip,所以回复
client的时候,没有经过directory)

2、入站报文经过Directory,出站则由RealServer直接响应Client;

3、RealServer需要开启ARP抑制功能(RealServer服务器上需要配置VIP和RIP,开启ARP抑制功能则屏蔽掉RealServer的RIP响应CIP,此时只有Directory上配置的vip才会响应CIP的响应)

4、VIP与Realserver不在同一网段

LVS-TUN模型:

也就是IP隧道技术实现虚拟服务器。它的连接调度和管理与NAT方式一样,只是它的报文转发方法不同,TUN方式中,调度器采用IP隧道技术
将用户请求转发到某个Real Server,而这个Real Server将直接响应用户的请求,不再经过前端调度器,此外,对Real
Server的地域位置没有要求,可以和Director
Server位于同一个网段,也可以是独立的一个网络。

要点总结:

1、RIP、DIP不能是私有地址;

2、RealServer的网关不能指向DIP;

3、入站报文经过Directory,出站则由RealServer直接响应Client;

4、不支持端口映射;

四、LVS调度算法


1.轮叫调度(Round Robin)
调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2.加权轮叫(Weighted Round Robin)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3.最少链接(Least Connections)
调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。

4.加权最少链接(Weighted Least Connections)
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

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

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

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

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

 注意:不同的算法实用与不同的场景,希望大家能合理的设置适合自己的算法

LVS理论到此结束,如果有什么疑问请留言!




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复