LVS DR模式 + keepalived 負載均衡配置詳解(基礎篇)

一、LVS簡單介紹(內容來自LVS官網:http://www.linuxvirtualserver.org/zh/)

1 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隧道協議的要求,但是要求調度器與真實服務器都有一塊網卡連在同一物理網段上。
2、針對不同的網絡服務需求和服務器配置,IPVS調度器實現瞭如下八種負載調度算法:
     1.    輪叫(Round Robin)
調度器通過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的連接數和系統負載。
      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)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。
     3 內核Layer-7交換機KTCPVS
在基於IP負載調度技術中,當一個TCP連接的初始SYN報文到達時,調度器就選擇一臺服務器,將報文轉發給它。此後通過查發報文的IP和TCP報文頭地址,保證此連接的後繼報文被轉發到該服務器。這樣,IPVS無法檢查到請求的內容再選擇服務器,這就要求後端服務器組提供相同的服務,不管請求被髮送到哪一臺服務器,返回結果都是一樣的。但是,在有些應用中後端服務器功能不一,有的提供HTML文檔,有的提供圖片,有的提供CGI,這就需要基於內容的調度 (Content-Based Scheduling)。
由於用戶空間TCP Gateway的開銷太大,我們提出在操作系統的內核中實現Layer-7交換方法,來避免用戶空間與核心空間的切換和內存複製的開銷。在Linux操作系統的內核中,我們實現了Layer-7交換,稱之爲KTCPVS(Kernel TCP Virtual Server)。目前,KTCPVS已經能對HTTP請求進行基於內容的調度,但它還不很成熟,在其調度算法和各種協議的功能支持等方面,有大量的工作需要做。
雖然應用層交換處理複雜,它的伸縮性有限,但應用層交換帶來以下好處:
      •    相同頁面的請求被髮送到同一服務器,可以提高單臺服務器的Cache命中率。
      •    一些研究[5]表明WEB訪問流中存在局部性。Layer-7交換可以充分利用訪問的局部性,將相同類型的請求發送到同一臺服務器,使得每臺服務器收到的請求具有更好的相似性,可進一步提高單臺服務器的Cache命中率。
      •    後端服務器可運行不同類型的服務,如文檔服務,圖片服務,CGI服務和數據庫服務等。
     4. LVS集羣的特點
LVS集羣的特點可以歸結如下:
      1.    功能
有實現三種IP負載均衡技術和八種連接調度算法的IPVS軟件。在IPVS內部實現上,採用了高效的Hash函數和垃圾回收機制,能正確處理所調度報文相關的ICMP消息(有些商品化的系統反而不能)。虛擬服務的設置數目沒有限制,每個虛擬服務有自己的服務器集。它支持持久的虛擬服務(如HTTP Cookie和HTTPS等需要該功能的支持),並提供詳盡的統計數據,如連接的處理速率和報文的流量等。針對大規模拒絕服務(Deny of Service)***,實現了三種防衛策略。
有基於內容請求分發的應用層交換軟件KTCPVS,它也是在Linux內核中實現。有相關的集羣管理軟件對資源進行監測,能及時將故障屏蔽,實現系統的高可用性。主、從調度器能週期性地進行狀態同步,從而實現更高的可用性。
      2.    適用性
後端服務器可運行任何支持TCP/IP的操作系統,包括Linux,各種Unix(如FreeBSD、Sun Solaris、HP Unix等),Mac/OS和Windows NT/2000等。
負載調度器能夠支持絕大多數的TCP和UDP協議:

協議 內容
TCP HTTP,FTP,PROXY,SMTP,POPS,IMAP4,LDAM,DNS,HTTPS,SSMTP等
UDP NTP,ICP,視頻,音頻流播放協議等


 

 

 

   3.無需對客戶機和服務器作任何修改,可適用大多數Internet服務。
   4.    性能
LVS服務器集羣系統具有良好的伸縮性,可支持幾百萬個併發連接。配置100M網卡,採用VS/TUN或VS/DR調度技術,集羣系統的吞吐量可高達1Gbits/s;如配置千兆網卡,則系統的最大吞吐量可接近10Gbits/s。
   5.    可靠性
LVS服務器集羣軟件已經在很多大型的、關鍵性的站點得到很好的應用,所以它的可靠性在真實應用得到很好的證實。有很多調度器運行一年多,未作一次重啓動。
   6.    軟件許可證
LVS集羣軟件是按GPL(GNU Public License)許可證發行的自由軟件,這意味着你可以得到軟件的源代碼,有權對其進行修改,但必須保證你的修改也是以GPL方式發行。
   二、LVS DR模式簡介。

1、LVS DR模式工作原理簡單介紹(內容來自LVS官網:http://www.linuxvirtualserver.org/zh/):

    VS/DR利用大多數Internet服務的非對稱特點,負載調度器中只負責調度請求,而服務器直接將響應返回給客戶,可以極大地提高整個集羣 系統的吞吐量。該方法與IBM的NetDispatcher產品中使用的方法類似(其中服務器上的IP地址配置方法是相似的),但IBM的 NetDispatcher是非常昂貴的商品化產品,我們也不知道它內部所使用的機制,其中有些是IBM的專利。
    VS/DR的體系結構如圖7所示:調度器和服務器組都必須在物理上有一個網卡通過不分斷的局域網相連,如通過高速的交換機或者HUB相連。VIP地址爲調度器和服務器組共享,調度 器配置的VIP地址是對外可見的,用於接收虛擬服務的請求報文;所有的服務器把VIP地址配置在各自的Non-ARP網絡設備上,它對外面是不可見的,只 是用於處理目標地址爲VIP的網絡請求。

 

    VS/DR 的工作流程如圖8所示:它的連接調度和管理與VS/NAT和VS/TUN中的一樣,它的報文轉發方法又有不同,將報文直接路由給目標服務器。在VS/DR 中,調度器根據各個服務器的負載情況,動態地選擇一臺服務器,不修改也不封裝IP報文,而是將數據幀的MAC地址改爲選出服務器的MAC地址,再將修改後 的數據幀在與服務器組的局域網上發送。因爲數據幀的MAC地址是選出的服務器,所以服務器肯定可以收到這個數據幀,從中可以獲得該IP報文。當服務器發現 報文的目標地址VIP是在本地的網絡設備上,服務器處理這個報文,然後根據路由表將響應報文直接返回給客戶。

 LVS DR配置請參照 LVS DR模式負載均衡配置詳解(配置篇一)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章