LVS 基本知識

      IP虛擬服務器軟件IPVS前端

      在調度器的實現技術中,IP負載均衡技術是效率最高的。在已有的IP負載均衡技術中有經過網絡地址轉換(Network Address Translation)將一組服務器構成一個高性能的、高可用的虛擬服務器,咱們稱之爲VS/NAT技術(Virtual Server via Network Address Translation),大多數商品化的IP負載均衡調度器產品都是使用此方法,如Cisco的LocalDirector、F5的Big/IP和 Alteon的ACEDirector。在分析VS/NAT的缺點和網絡服務的非對稱性的基礎上,咱們提出經過IP隧道實現虛擬服務器的方法VS /TUN(Virtual Server via IP Tunneling),和經過直接路由實現虛擬服務器的方法VS/DR(Virtual Server via Direct Routing),它們能夠極大地提升系統的伸縮性。因此,IPVS軟件實現了這三種IP負載均衡技術,它們的大體原理以下(咱們將在其餘章節對其工做原 理進行詳細描述),算法

     

  1. Virtual Server via Network Address Translation(VS/NAT)
    經過網絡地址轉換,調度器重寫請求報文的目標地址,根據預設的調度算法,將請求分派給後端的真實服務器;真實服務器的響應報文經過調度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調度過程。後端

  2. Virtual Server via IP Tunneling(VS/TUN)
    採用NAT技術時,因爲請求和響應報文都必須通過調度器地址重寫,當客戶請求愈來愈多時,調度器的處理能力將成爲瓶頸。爲了解決這個問題,調度器把請求報 文經過IP隧道轉發至真實服務器,而真實服務器將響應直接返回給客戶,因此調度器只處理請求報文。因爲通常網絡服務應答比請求報文大許多,採用 VS/TUN技術後,集羣系統的最大吞吐量能夠提升10倍。服務器

  3. Virtual Server via Direct Routing(VS/DR)
    VS/DR經過改寫請求報文的MAC地址,將請求發送到真實服務器,而真實服務器將響應直接返回給客戶。同VS/TUN技術同樣,VS/DR技術可極大地 提升集羣系統的伸縮性。這種方法沒有IP隧道的開銷,對集羣中的真實服務器也沒有必須支持IP隧道協議的要求,可是要求調度器與真實服務器都有一塊網卡連 在同一物理網段上。網絡


針對不一樣的網絡服務需求和服務器配置,IPVS調度器實現了以下八種負載調度算法:負載均衡

  1. 輪叫(Round Robin)
    調度器經過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而無論服務器上實際的鏈接數和系統負載。ide

  2. 加權輪叫(Weighted Round Robin)
    調度器經過"加權輪叫"調度算法根據真實服務器的不一樣處理能力來調度訪問請求。這樣能夠保證處理能力強的服務器處理更多的訪問流量。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。性能

  3. 最少連接(Least Connections)
    調度器經過"最少鏈接"調度算法動態地將網絡請求調度到已創建的連接數最少的服務器上。若是集羣系統的真實服務器具備相近的系統性能,採用"最小鏈接"調度算法能夠較好地均衡負載。測試

  4. 加權最少連接(Weighted Least Connections)
    在集羣系統中的服務器性能差別較大的狀況下,調度器採用"加權最少連接"調度算法優化負載均衡性能,具備較高權值的服務器將承受較大比例的活動鏈接負載。調度器能夠自動問詢真實服務器的負載狀況,並動態地調整其權值。優化

  5. 基於局部性的最少連接(Locality-Based Least Connections)
    "基於局部性的最少連接" 調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器 是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工做負載,則用"最少連接"的原則選出一個可用的服務 器,將請求發送到該服務器。

  6. 帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication)"帶複製的基於局部性最少連接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不一樣之處是它要維護從一個 目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務 器組,按"最小鏈接"原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按"最小鏈接"原則從這個集羣中選出一 臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以下降複製的 程度。

  7. 目標地址散列(Destination Hashing)
    "目標地址散列"調度算法根據請求的目標IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。

  8. 源地址散列(Source Hashing)
    "源地址散列"調度算法根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,不然返回空。


LVS集羣的通用體系結構

      般來講,LVS集羣採用三層結構,三層主要組成部分爲:        

     

  • 負載調度器(load balancer),它是整個集羣對外面的前端機,負責將客戶的請求發送到一組服務器上執行,而客戶認爲服務是來自一個IP地址(咱們可稱之爲虛擬IP地址)上的。

  • 服務器池(server pool),是一組真正執行客戶請求的服務器,執行的服務有WEB、MAIL、FTP和DNS等。

  • 共享存儲(shared storage),它爲服務器池提供一個共享的存儲區,這樣很容易使得服務器池擁有相同的內容,提供相同的服務。


三種方法的優缺點比較

三種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) High (100)
server gateway load balancer own router Own router

注: 以上三種方法所能支持最大服務器數目的估計是假設調度器使用100M網卡,調度器的硬件配置與後端服務器的硬件配置相同,並且是對通常Web服務。使用更 高的硬件配置(如千兆網卡和更快的處理器)做爲調度器,調度器所能調度的服務器數量會相應增長。當應用不一樣時,服務器的數目也會相應地改變。因此,以上數 據估計主要是爲三種方法的伸縮性進行量化比較。

 Virtual Server via NAT

VS/NAT 的優勢是服務器能夠運行任何支持TCP/IP的操做系統,它只須要一個IP地址配置在調度器上,服務器組能夠用私有的IP地址。缺點是它的伸縮能力有限, 當服務器結點數目升到20時,調度器自己有可能成爲系統的新瓶頸,由於在VS/NAT中請求和響應報文都須要經過負載調度器。 咱們在Pentium 166 處理器的主機上測得重寫報文的平均延時爲60us,性能更高的處理器上延時會短一些。假設TCP報文的平均長度爲536 Bytes,則調度器的最大吞吐量爲8.93 MBytes/s. 咱們再假設每臺服務器的吞吐量爲800KBytes/s,這樣一個調度器能夠帶動10臺服務器。(注:這是很早之前測得的數據)

基於 VS/NAT的的集羣系統能夠適合許多服務器的性能要求。若是負載調度器成爲系統新的瓶頸,能夠有三種方法解決這個問題:混合方法、VS/TUN和VS /DR。在DNS混合集羣系統中,有若干個VS/NAT負載調度器,每一個負載調度器帶本身的服務器集羣,同時這些負載調度器又經過RR-DNS組成簡單的 域名。但VS/TUN和VS/DR是提升系統吞吐量的更好方法。

對於那些將IP地址或者端口號在報文數據中傳送的網絡服務,須要編寫相應的應用模塊來轉換報文數據中的IP地址或者端口號。這會帶來實現的工做量,同時應用模塊檢查報文的開銷會下降系統的吞吐率。

 Virtual Server via IP Tunneling

在 VS/TUN的集羣系統中,負載調度器只將請求調度到不一樣的後端服務器,後端服務器將應答的數據直接返回給用戶。這樣,負載調度器就能夠處理大量的請求, 它甚至能夠調度百臺以上的服務器(同等規模的服務器),而它不會成爲系統的瓶頸。即便負載調度器只有100Mbps的全雙工網卡,整個系統的最大吞吐量可 超過1Gbps。因此,VS/TUN能夠極大地增長負載調度器調度的服務器數量。VS/TUN調度器能夠調度上百臺服務器,而它自己不會成爲系統的瓶頸, 能夠用來構建高性能的超級服務器。

VS/TUN技術對服務器有要求,即全部的服務器必須支持「IP Tunneling」或者「IP Encapsulation」協議。目前,VS/TUN的後端服務器主要運行Linux操做系統,咱們沒對其餘操做系統進行測試。由於「IP Tunneling」正成爲各個操做系統的標準協議,因此VS/TUN應該會適用運行其餘操做系統的後端服務器。

 Virtual Server via Direct Routing

跟VS/TUN方法同樣,VS/DR調度器只處理客戶到服務器端的鏈接,響應數據能夠直接從獨立的網絡路由返回給客戶。這能夠極大地提升LVS集羣系統的伸縮性。

跟VS/TUN相比,這種方法沒有IP隧道的開銷,可是要求負載調度器與實際服務器都有一塊網卡連在同一物理網段上,服務器網絡設備(或者設備別名)不做ARP響應,或者能將報文重定向(Redirect)到本地的Socket端口上。

相關文章
相關標籤/搜索