LVS工做模式及原理

LVS 簡介

         LVS 是 Linux  Virtual Server ,Linux 虛擬服務器;是一個虛擬的服務器集羣【多臺機器 LB IP】。LVS 集羣分爲三層結構:前端

        a. 負載調度器(load balancer):它是整個LVS 集羣對外的前端機器,負責將client請求發送到一組服務器[多臺LB IP]上 執行,而client端認爲是返回來一個同一個IP【一般把這個IP 稱爲虛擬IP/VIP】web

        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包頭的信息以下spa


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包頭信息以下orm


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包頭及數據幀頭信息以下server


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模式走的隧道模式,因此運維起來比較難,因此通常不用

相關文章
相關標籤/搜索