LVS工作模式及原理

╄→尐↘猪︶ㄣ 提交于 2020-02-28 13:54:10

LVS 简介

         LVS 是 Linux  Virtual Server ,Linux 虚拟服务器;是一个虚拟的服务器集群【多台机器 LB IP】。LVS 集群分为三层结构:

        a. 负载调度器(load balancer):它是整个LVS 集群对外的前端机器,负责将client请求发送到一组服务器[多台LB IP]上 执行,而client端认为是返回来一个同一个IP【通常把这个IP 称为虚拟IP/VIP】

        b. 服务器池(server pool):一组真正执行client 请求的服务器,一般是我们的web服务器;除了web,还有FTP,MAIL,DNS

        c. 共享存储(shared stored):它为 server pool 提供了一个共享的存储区,很容易让服务器池拥有相同的内容,提供相 同的服务

    共有4中模式:LVS-DR,LVS-NAT,LVS-FULLNAT,LVS-TUN

1.LVS-DR

1.1 工作原理

client发送一个请求到VIP,LVS服务器根据VIP选择对应的realServer的pool,根据算法,在pool中选择一台realServer,将包广播到vip的局域网,同时LVS在hash表中记录该次连接,realServer收到包之后,处理完请求,把应答包直接传给client;当client继续发包过来时,LVS根据更才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的realServer上;当连接中止或者超时,hash表中的记录将被删除。

1.2 实例讲解

假设client,director,vip,realServer的ip及mac地址如下



           client           director              vip         realServer
IP     192.168.138.20     192.168.143.231    192.168.143.122     192.168.143.82
MAC     X:X:X:X:X:5d     X:X:X:X:X:96     X:X:X:X:X:96     X:X:X:X:X:82


第一步:client向vip发起请求,director接收到请求,ip包头的信息如下


source mac      dst mac       ...     source ip            dst ip               ...
X:X:X:X:X:5d   X:X:X:X:X:96       ...      192.168.138.20     192.168.143.122              ...


第二步:LVS根据负载均衡算法,选择一台realServer,修改dst mac地址为realServer的mac地址,将数据包转发到局域网,此时ip包头信息如下


source mac     dst mac              ...             source ip             dst ip               ...
X:X:X:X:X:96   X:X:X:X:X:82              ...    192.168.138.20      192.168.143.122              ...


第三步:realServer接收到包,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文。随后重新封装报文,发送到局域网,IP包头及数据帧头信息如下


source mac         dst mac              ...                 source ip           dst ip               ...
X:X:X:X:X:82       X:X:X:X:X:5d              ...        192.168.143.122    192.168.138.20              ...


第四步:如果,通过路由将包路由到client

1.3 注意事项

    a. LVS必须与realServer在同一个局域网,因为LVS收到数据包后,只修改了dst mac地址,然后广播出去,如果LVS与realServer不在统一网段,realServer永远收不到数据包

    b. LVS-DR不需要路由转发,同一局域网内,不经过路由

    c. realServer需呀配置 vip


2. LVS-NAT

2.1 工作原理

假设client,vip,realServer的ip地址如下



           client              vip         realServer
IP     192.168.138.20    192.168.143.122     192.168.143.82



第一步:client 发送包到LVS服务器的VIP上


      ...     source ip            dst ip               ...
      ...      192.168.138.20     192.168.143.122              ...



第二步:VIP选择一个realServer,并记录连接信息到hash表中,然后修改client的request的目的IP地址为realServer的地址,将请求发给realServer


      ...     source ip            dst ip               ...
      ...      192.168.138.20     192.168.143.82              ...



第三步:realServer收到请求包后,发现目的IP是自己的IP,于是处理请求,然后发送reply给LVS,回复包如下


      ...     source ip            dst ip               ...
      ...      192.168.143.82     192.168.138.20              ...



第四步:LVS收到reply包后,修改reply包的的源地址为VIP,发送给client;以后从client来的属于本次连接的包,查hash表,然后发给对应的realServer


      ...          source ip            dst ip          ...  
      ...     192.168.143.122     192.168.138.20         ...



2.1 注意事项

    a. NAT修改的是dst ip,不需要vip与realserver在同一个网段内

    b. NAT模式包的进出都需要经过LVS ;因此LVS 的可能会成为一个系统瓶颈问题


3. LVS-FULLNAT

LVS-FULLNAT在client请求VIP 时,不仅替换了数据包的dst ip,还替换了数据包的 source ip;但VIP 返回给client时也替换了source ip

3.1 工作原理

假设client,vip,realServer的ip地址如下

                 client                      vip               realServer

IP    192.168.138.20   192.168.143.122    192.168.143.82


第一步:client 发送包到LVS服务器的VIP上


      ...    source ip            dst ip                         ...

      ...     192.168.138.20192.168.143.122        ...


第二步:VIP 收到数据包后,会根据LVS设置的LB算法选择一个合适的realserver,然后把数据包的dst ip修改为realserver的ip;把sorce ip 改成 LVS的vip 


      ...    source ip                   dst ip                     ...

      ...     192.168.143.122    192.168.143.82             ...


第三步: realserver 收到这个数据包后判断dst ip 是自己,处理完后把这个包发送给LVS VIP


      ...    source ip                   dst ip                     ...

      ...     192.168.143.82    192.168.143.122             ...


第四步: LVS 收到这个数据包后把sorce ip改成VIP的IP,dst ip改成 client ip然后发送给client


      ...         source ip                   dst ip                ...  

      ...    192.168.143.122    192.168.138.20        ...


3.2 注意事项

    a. FULLNAT修改的是dst ip,不需要vip与realserver在同一个网段内

    b. FULLNAT能保证回包一定能回到LVS

    c. 因为FULLNAT要更新sorce ip 所以性能NAT模式低


4. LVS-TUN

    4.1 工作原理

    假设client,vip,realServer的ip地址如下

                     client                      vip               realServer

    IP    192.168.138.20   192.168.143.122    192.168.143.82


    第一步:client 发送包到LVS服务器的VIP上


          ...            source ip                      dst ip                         ...

          ...         192.168.138.20        192.168.143.122                  ...


    第二步:VIP 收到数据包后,会根据LVS设置的LB算法选择一个合适的realserver;并把client发送的数据包包装到一个新的IP包里面;新的IP包的dst是realserver的IP


          ...            source ip                       dst ip                      ...

          ...         192.168.143.122        192.168.143.82             ...


    第三步: realserver 收到这个数据包后判断dst ip 是自己,然后解析出来的数据包的dst是VIP;会检测网卡上是否帮了VIP的ip地址;如果帮了就会处理这个包,如果没有直接丢掉。 一般在realserver上面 lo:0 绑定了VIP的ip地址,就可以处理。处理完成后,直回给client


          ...        source ip                   dst ip                      ...

          ...     192.168.143.82        192.168.138.20             ...


   

    4.2 注意事项

        a. TUN模式必须在所有的realserver机器上面绑定VIP的IP地址

        b. TUN模式的包通信通过TUN模式,不管是内网和外网都能通信,所以不需要lvsvip跟realserver             在同一个网段内

        c. TUN模式 realserver会把数据包直接发给client 不会给lvs了

        d. TUN模式走的隧道模式,所以运维起来比较难,所以一般不用

    

    











标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!