天天看點

LVS:三種負載均衡方式比較

在做lvs三種負載均衡方式比較前,先闡述一下LVS三種負載均衡的方法:

LVS/NAT:

LVS:三種負載均衡方式比較

  如上圖,客戶通過virtual IP (虛拟服務的IP位址,公網位址),通路網絡服務時,請求封包到達排程器,排程器根據連接配接排程算法從一組真實伺服器中選出一台伺服器,将封包的目标位址VIP,改寫成標明伺服器的位址(RIP),封包的目标端口改寫成標明伺服器的相應端口,最後将修改後的封包發送給選出的伺服器。

  同時,排程器在連接配接Hash表中記錄這個連接配接,當這個連接配接的下一個封包到達時,從連接配接Hash表中可以得到原標明伺服器的位址和端口,進行同樣的改寫操作,并将封包傳給原標明的伺服器。當來自真實伺服器(Real server)的響應封包經過排程器時,排程器将封包的源位址和源端口改為VIP和相應的端口,再把封包發給使用者。

  我們在連接配接上引入一個狀态機,不同的封包會使得連接配接處于不同的狀态,不同的狀态有不同的逾時值。在TCP連接配接中,根據标準的TCP有限狀态機進行狀态遷移;在UDP中,我們隻設定一個UDP狀态。不同狀态的逾時值是可以設定的,在預設情況下,SYN狀态的逾時為1分鐘,ESTABLISHED狀态的逾時為15分鐘,FIN狀态的逾時為1分鐘;UDP狀态的逾時為5分鐘。當連接配接終止或逾時,排程器将這個連接配接從連接配接Hash表中删除。

   小結:

    1、對外界可視的隻有director,後端的真實伺服器(real server)是不可見的;

    2、所有響應封包從real server發出後,必須再經由director才能轉發到用戶端

    3、director與real server,必須在同一IP網絡内,且應該是私網内,real server的網關必須指向director,有測試報告顯示,當後端real server在10到20台之間的時候,director容易成為整個叢集系統的瓶頸,是以對大型站點來講該方法并非最佳的負載均衡方法

    4、支援端口映射,可修改請求封包的目标PORT;

    5、vs必須是Linux系統,rs可以是任意系統;

LVS/DR:

LVS:三種負載均衡方式比較

   如上圖,(備調用器zuhi,)在VS/DR中,排程器根據各個伺服器的負載情況,動态地選擇一台伺服器,不修改也不封裝IP封包,而是将資料幀的MAC位址改為選出伺服器的MAC位址,再将修改後的資料幀在與伺服器組的區域網路上發送。

  因為資料幀的MAC位址是選出的伺服器,是以伺服器肯定可以收到這個資料幀,從中可以獲得該IP封包。當伺服器發現封包的目标位址VIP是在本地的網絡裝置上(将VIP設定在回環位址上Lo),伺服器處理這個封包,然後根據路由表将響應封包直接傳回給客戶。由于是real server直接将相應封包經由回環位址發給用戶端的,是以用戶端既不知道real server的存在,也可以将nat模式中director瓶頸隐患處理了,适用範圍較廣

LVS:三種負載均衡方式比較

  小結:

    1、確定前端路由器将目标IP為VIP的請求封包發往Director:

        (a) 在前端網關做靜态綁定;

        (b) 在RS上使用arptables;

        (c) 在RS上修改核心參數以限制arp通告及應答級别;

            arp_announce

            arp_ignore

    2、RS的RIP可以使用私網位址,也可以是公網位址;RIP與DIP在同一IP網絡;RIP的網關不能指向DIP,以確定響應封包不會經由Director;

    3、RS跟Director要在同一個實體網絡;

    4、請求封包要經由Director,但響應不能經由Director,而是由RS直接發往Client;

    5、不支援端口映射;

   但是很多人都想,假如用real server直接将相應封包發給用戶端,那麼VIP與DIP和RIP需要在同一網段,這樣的話就需要大量的公網位址IP了,大大增加了額外的開銷,可否将VIP于DIP和RIP分别設定在兩個網段中,VIP用公網位址,而DIP和RIP用私網位址?答案是可以的。

   假如将VIP與DIP和RIP設定在兩個IP網絡中,那麼Real server就要将網關指向通往公網的IP,絕對不能指向director(指向director的話與lvs/net模式還有由什麼差別?)

LVS/TUN(通過IP隧道實作虛拟伺服器)

   IP隧道(IP tunneling)是将一個IP封包封裝在另一個IP封包的技術,這可以使得目标為一個IP位址的資料封包能被封裝和轉發到另一個IP位址。IP隧道技術亦稱為IP封裝技術(IP encapsulation)。IP隧道主要用于移動主機和虛拟私有網絡(Virtual Private Network),在其中隧道都是靜态建立的,隧道一端有一個IP位址,另一端也有唯一的IP位址。

LVS:三種負載均衡方式比較

  如下圖:

    它的連接配接排程和管理與VS/NAT中的一樣,隻是它的封包轉發方法不同。排程器根據各個伺服器的負載情況,動态地選擇一台伺服器,将請求封包封裝在另一個IP封包中,再将封裝後的IP封包轉發給選出的伺服器;伺服器收到封包後,先将封包解封獲得原來目标位址為VIP的封包,伺服器發現VIP位址被配置在本地的IP隧道裝置上,是以就處理這個請求,然後根據路由表将響應封包直接傳回給客戶。

LVS:三種負載均衡方式比較

   在這裡,請求封包的目标位址為VIP,響應封包的源位址也為VIP,是以響應封包不需要作任何修改,可以直接傳回給客戶,客戶認為得到正常的服務,而不會知道是哪一台伺服器處理的。

    1、DIP, VIP, RIP都隻能是公網位址;

    2、RS的網關不能,也不可能指向DIP;

    3、請求封包要經由Director,但響應不能經由Director,而是real server直接用VIP響應用戶端;

    4、不支援端口映射;

    5、RS的OS得支援隧道功能;

三種方法的優缺點比較:

三種IP負載均衡技術的優缺點歸納在下表中:

VS/NAT

VS/TUN

VS/DR

Server

any

Tunneling

Non-arp device

server network

private

LAN/WAN

LAN

server number

low (10~20)

High (100)

server gateway

load balancer

own router

Own router

         注:以上三種方法所能支援最大伺服器數目的估計是假設排程器使用100M網卡,排程器的硬體配置與後端伺服器的硬體配置相同,而且是對一般Web服務。使用更高的硬體配置(如千兆網卡和更快的處理器)作為排程器,排程器所能排程的伺服器數量會相應增加。當應用不同時,伺服器的數目也會相應地改變。是以,以上資料估計主要是為三種方法的伸縮性進行量化比較。

大多數Internet服務都有這樣的特點:

  請求封包較短而響應封包往往包含大量的資料。如果能将請求和響應分開處理,即在負載排程器中隻負責排程請求而響應直接傳回給客戶,将極大地提高整個叢集系統的吞吐量。

  是以适當的将請求封包與響應封包發散處理,是一種很好的叢集對外服務性能向往擴充的思路

繼續閱讀