zoukankan      html  css  js  c++  java
  • 企业——LVS的集中转发模型的转发原理

    关于LVS

    一.LVS是什么?

    LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。在linux内存2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核。

     
    二.LVS能干什么?

    LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置非常简单,且有多种负载均衡的方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外可扩展性也非常好。

    三.工作原理 

          2011072511585827

      如上图,LVS可分为三部分:

      1.Load Balancer:这是LVS的核心部分,它好比我们网站MVC模型的Controller。它负责将客户的请求按照一定的算法分发到下一层不同的服务器进行处理,自己本身不做具体业务的处理。另外该层还可用监控下一层的状态,如果下一层的某台服务器不能正常工作了,它会自动把其剔除,恢复后又可用加上。该层由一台或者几台Director Server组成。

      2.Server Array:该层负责具体业务。可有WEB Server、mail Server、FTP Server、DNS Server等组成。注意,其实上层的Director Server也可以当Real server用的。

      3.Shared Storage:主要是提高上一层数据和为上一层保持数据一致。 

    四.负载均衡机制 
      前面我们说了LVS是工作在网络层。相对于其它负载均衡的解决办法,比如DNS域名轮流解析、应用层负载的调度、客户端的调度等,它的效率是非常高的。LVS的通过控制IP来实现负载均衡。IPVS是其具体的实现模块。IPVS的主要作用:安装在Director Server上面,在Director Server虚拟一个对外访问的IP(VIP)。用户访问VIP,到达Director Server,Director Server根据一定的规则选择一个Real Server,处理完成后然后返回给客户端数据。这些步骤产生了一些具体的问题,比如如何选择具体的Real Server,Real Server如果返回给客户端数据等等。IPVS为此有三种机制:

      1.VS/NAT(Virtual Server via Network Address Translation),即网络地址翻转技术实现虚拟服务器。当请求来到时,Diretor server上处理的程序将数据报文中的目标地址(即虚拟IP地址)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给Real Server。Real Server处理完数据后,需要返回给Diretor Server,然后Diretor server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。由此可以看出,用户的请求和返回都要经过Diretor Server,如果数据过多,Diretor Server肯定会不堪重负。

      2.VS/TUN(Virtual Server via IP Tunneling),即IP隧道技术实现虚拟服务器。它跟VS/NAT基本一样,但是Real server是直接返回数据给客户端,不需要经过Diretor server,这大大降低了Diretor server的压力。

      3.VS/DR(Virtual Server via Direct Routing),即用直接路由技术实现虚拟服务器。跟前面两种方式,它的报文转发方法有所不同,VS/DR通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种方式是三种负载调度机制中性能最高最好的,但是必须要求Director Server与Real Server都有一块网卡连在同一物理网段上。

     

    LVS的几种转发模型的基本原理


    1、NAT模型

    通过修改请求报文的目标IP地址(同时可能修改目标端口,支持端口映射),改为某Real Server的IP地址实现数据包的转发。

          

    1)客户端将请求报文发往前端的负载均衡器,请求报文源地址为CIP目标地址为VIP
    2)负载均衡器接受到报文,发现请求的是在ipvs规则里面存在的地址,那么它将客户端的请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去。
    3)报文送到Real Server上,由于报文的目标地址是自己,所以会响应请求,并将响应报文返还给Director。
    4)然后Director将此报文的源地址修改为本机ip并发送给客户端。

    特点:

    1)集群中各节点跟Directory必须在同一网段
    2)DIP,RIP通常为私有地址,仅用于集群,且Real Server的网关要指向DIP
    3)支持端口映射和转发
    4)Real Server可以使用任意的OS
    5)请求报文和响应报文都要经由Director,较大规模应用场景中Director可能成为系统瓶颈

    2、DR模型

    1)客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP
    2)负载均衡器接收到报文后,发现请求的是在ipvs规则中存在的地址和端口,那么它将客户端请求报文的源MAC地址改为自己的MAC地址,目标MAC改为了Real Server的MAC地址,并将此包发送给Real Server
    3)Real Server发现请求报文中的目标MAC地址是自己,就会把此报文接受下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡,直接发送给客户端。
    注意:各real server的lo接口上配置的VIP不能响应外部请求。

           

    特点:

    1)集群节点跟Director必须在同一物理网络中
    2)RIP可以使用公网地址,使用便捷的远程控制服务器
    3)Direcotr只负责处理入站请求,响应报文由real server直接发往客户端
    4)real server不能将网关指向DIP
    5)Director不支持端口映射
    6)real server支持应用在大多数OS
    7)DR比NAT能处理更多的real server

      VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP 的网络请求。

    3、TUN

    1)客户端将请求报文法网前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP
    2)负载均衡器受到报文后,发现请求的是在IPVS规则中存在的地址和对应的端口,那么它将在客户端的请求报文的首部再封装一层IP报文,源地址为DIP,目标地址为RIP,并将此包发送给RS。
    3)RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会再次处理请求报文,并将响应报文通过lo接口送往eth0网卡直接发送给客户端。
      注意:需要设置lo接口上的VIP不能出现在公网上。

           

    特点:

    1)各集群节点可以跨越不同的网络
    2)RIP,DIP,VIP必须是公网地址
    3)DIrector只负责处理入站请求,响应报文由real server直接发往客户端
    4)real server网关不能指向Director
    5)real server仅能搭建在支持隧道功能的主机上
    6)不支持端口映射

  • 相关阅读:
    (六)cmockery中的assert_macro分析
    (五)cmockery中的assert_module分析
    (三)cmockery中的消息打印以及可变参数相关总结
    (四)cmockery中allocate_moudle分析
    (二)cmockery中run_tests.c分析
    大家分层架构 事务
    北冰洋教Myeclipse的创建 项目名
    MYSQL第一章 创建表 修改表名 删除字段 添加字段 修改地段名
    HTML-------实现图片阴影
    HTML 制作爱奇艺播放器 排版
  • 原文地址:https://www.cnblogs.com/wf-aiyouwei/p/10632598.html
Copyright © 2011-2022 走看看