Lvs IP负载均衡技术

Lvs集群的通用结构

   Lvs集群采用IP负载均衡技术,属于IP层的交换(L4),具备很好的吞吐率。调度器分析客户端到服务器的IP报头信息,将请求均衡地转移到不一样的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器,Lvs集群系统的通用结构以下所示,主要包含四大部分:前端

  负载调度器(load balancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务来自一个IP地址上的。当客户请求到达时,调度器只根据负载状况从服务器池选出一个服务器,将请求转发到选出的服务器。由于全部的操做都是在操做系统核心空间中完成,它的调度开销很小,因此具备很小的吞吐率。后端

  服务器池(server pool),是一组真正执行客户请求的服务器,执行的任务有WEB、MAIL、FTP和DNS等。服务器池的节点数目是可变的,当整个系统收到的负载超过目前全部站点的处理能力时,能够在服务器池中添加服务器来知足不断增加的请求负载。对大多数网站来讲,节点与节点之间不存在很强的相关性,因此整个系统的性能能够随着服务器池的节点数目增长而线性增加。 浏览器

  后端存储(backend storage),它为服务器池提供一个共享的存储区,这样使得服务器池拥有相同的内容,提供相同的服务。bash

  Graphic Monitor是为系统管理员提供整个集群系统的监视器,它能够监视系统中每一个节点的情况。服务器

IP负载均衡技术

在已有的IP负载均衡技术中有三种:网络

  1、是经过网络地址转换实现虚拟服务器的VS/NAT技术(Virtual Server via Network Address Translation)并发

  2、是经过直接路由的VS/DR技术(Virtual Server via Direct Routing)负载均衡

  3、是经过IP隧道实现虚拟服务器的VS/TUN技术性能

经过NAT实现虚拟服务器(VS/NAT),请求,响应都在负载均衡器中完成

  VS/NAT的体系结构以下图所示,在一组服务器前有一个调度器,它们是经过Switch/HUB相链接的。这些服务提供相同的网络服务、相同的内容,即无论请求被发送到哪一台服务器,执行结果是同样的网站

  一、客户端浏览器输入58.251.62.141向58.251.62.141发出http请求

  二、Load Balancer的外网(eth0)收到该次请求

    

  三、IPVS调度器根据各个Real Server的负载状况,动态选择一台Real Server(例如:172.16.81.144),将请求报文的目标地址改写发送给172.16.81.144

    

  四、Real Server收到请求报文并处理造成响应文本,因为Real Server上的网关地址为Load Balaceer,响应报文从Real Server发往Load Balaceer。

    

  五、Load Balacer收到172.16.81.144的响应报文后,将响应报文的原地址修改成虚拟IP地址,并发送给客户端。

    

  六、客户认为获得正常的服务,而不知道是哪一台服务器处理的。

经过直接路由实现虚拟服务器(VS/DR)

  在VS/NAT的集群系统中,请求和响应的数据报文都须要经过负载调度器,当真实服务器数目在10-20之间时,负载调度器将成为整个集群系统的新瓶颈。大多数Internet服务都有这样的特色:请求报文较短而响应报文每每包含大量的数据。若是能将请求和响应分开处理,即在负载均衡器中只负责调度请求而响应直接返回给客户,将极大提高提升整个集群系统的吞吐量。VS/DR体系结构以下图所示:调度器和服务器都必须在物理上有一个网卡经过不分断的局域网链接,如经过交换机或者高速的HUB链接。VIP地址为调度器和服务器组共享,调度器设置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;全部的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面不可见,只是用于处理目标地址为VIP请求。

  总结:负载只负责调度,响应直接返回给用户,负载和服务器必须在物理上经过网卡经过不分断的局域网链接,负载地址对外可见,服务器池地址对外不可见。

  一、客户端浏览器输入58.251.62.141向58.251.62.141发出http请求

  二、Load Balacer的外网(eth0)收到该次请求

    

  三、IPVS调度器根据各个Real Server的负载状况,动态的选择一台Real Server,将请求报文转发到Real Server(以下的地址)

    

  四、Real Server的内网(eth1)接收到Load Balacer发过来的IP报文并对IP报文解包,获得客户的请求包,发现包的目标地址被配置在本地的lo设备上,因此就处理这个请求

  五、Real Server根据路由表将响应报文经过外网(eth0)直接返回给用户,请求报文的目标地址改成VIP,响应报文的源地址也为VIP,因此响应报文不须要作任何修改,直接返回给客户

    

  六、客户认为获得正常服务,而不知道是哪一台服务器处理的。

  在VS/DR响应报文根据服务器的路由表直接返回给用户,而不通过负载调度器,因此负载调度器只处于从客户到服务器的半链接中,咱们给出半链接的TCP有限状态机。以下图为VS/DR的TCP状态转移,圈表示状态,箭头表示状态间的转换,箭头上的标识表示在当前状态上收到该标识的输入,迁移到下一个状态。VS/DR的TCP状态迁移是按照半链接的TCP有限状态机进行的。

 

经过IP隧道实现虚拟服务器(VS/TUN)

  跟VS/DR方法相同,VS/TUN多数Internet服务的非对称特色,负载调度器中只负责调度请求,而服务器直接将相应发送给客户,能够极大地提升整个集群系统的吞吐量。IP隧道(IP tunneling)是将一个IP报文封装在另外一个IP报文的技术,这可使得目标为一个IP地址的数据报文能被封装和转发到另外一个IP地址。

  利用IP隧道技术将请求报文封装转发给后端服务器,响应报文能从后端服务器直接返回给用户。但在这里,后端服务器有一组而非一个,因此不可能静态地创建一一对应的隧道。这样,咱们能够利用IP隧道的原理将一组服务器上的网络服务组成在一个IP地址上的虚拟网络服务

  一、客户端浏览器输入58.251.62.141向58.251.62.141发出http请求

  二、Load Balacer的外网(eth0)收到请求

    

  三、IPVS动态选择一台服务器,将请求报文封装在另外一个IP报文中

  四、Load Balacer的内网(eth1)将封装后的IP报文发送给Real Server

    

  五、Real Server的内网(eth1)收到Load Balacer发过来的IP报文并对IP报文解包,获得客户端请求,发现包的目标地址被配置在本地的IP隧道设备上,因此就处理这个请求。

  六、Real Server根据路由表将响应报文经过外网(eth0)直接返回给客户,请求报文的目标地址为VIP,响应报文的原地址也为VIP,因此报文不须要修改直接发送给客户。

    

  七、客户获得正常的服务,而不知道是哪一台服务器处理的。

  VS/DR负载调度器也只处于从客户到服务器的半链接中,按照半链接的TCP有限状态机进行状态迁移。

VS/NAT 的优势是服务器能够运行任何支持 TCP/IP 的操做系统,它只须要一个 IP 地址配置在调度器上,服务器组能够用私有的 IP 地址。缺点是它的伸缩能力有限,当服务器结点数目升到 20 时,调度器自己有可能成为系统的新瓶颈,由于在 VS/NAT 中请求和响应报文都须要经过负载调度器。
VS/DR 优势是负载调度器能够处理大量的请求, 由于调度器只处理客户到服务器端的链接,响应数据能够直接从独立的网络路由返回给客户, 这能够极大地提升 LVS 集群系统的伸缩性。 缺点是要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备(或者设备别名)不做 ARP 响应,或者能将报文重定向(Redirect)到本地的 Socket 端口上。
VS/TUN 的优势是负载调度器能够处理大量的请求,它甚至能够调度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈,由于负载调度器只将请求调度到不一样的后端服务器,后端服务器将应答的数据直接返回给用户。缺点是 VS/TUN 技术有 IP 隧道的开销而且对服务器有要求,即全部的服务器必须支持“IP Tunneling”或者“IP Encapsulation”协议。

FULLNAT模式(淘宝开源)

解决了上述三种的缺点,解决了真实服务器能跨越 VLAN 通信,只须要链接到内网便可入站时,目标 IP 更改成真实服务器的 IP,源 IP 更改成内网的本地 IP(一组内网 IP)出站时,目标 IP 更改成客户端的 IP,源 IP 更换为 VIP 

相关文章
相关标签/搜索