歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

LVS分析(下)

摘要  在之前的三篇文章中,我們介紹了集群的分布式體系結構,各大要素以及考量、設計集群的一些要點。其實僅有這些理論基礎知識還遠遠不夠。集群技術的任何一點都足以寫出幾本書來。重要的是,通過全面的介紹,我們能夠為接下來的案例討論打好基礎    摘要   在之前的三篇文章中,我們介紹了集群的分布式體系結構,各大要素以及考量、設計集群的一些要點。其實僅有這些理論基礎知識還遠遠不夠。集群技術的任何一點都足以寫出幾本書來。重要的是,通過全面的介紹,我們能夠為接下來的案例討論打好基礎。    我們將在隨後的篇幅裡,主要介紹廣泛使用的Linux下的集群技術――IPVS(based IP Virtual Server)也叫做LVS(Linux Virtual Server)。通過對LVS的具體分析,了解LVS在體系結構設計,技術實現細節和應用中可能遇到的一些問題的詳細分析討論,逐步掌握在Linux下實現集群系統的基本知識。    LVS體系結構介紹   Linux Virtual Server項目是由章文嵩博士主持的著名開放源碼項目,一個實現“三高”系統的解決方案。LVS旨在解決高速發展的Web商務中日益凸現的問題:如何在有限資金投入的情況下,最大幅度的提高Web站點的潛在服務性能。    LVS是一個Linux平台下的軟件工具。通過LVS,你可以快捷方便的組建一個帶有第四層負載均衡功能的集群系統。並且,借助第三方的工具包,還可以實現對LVS集群進行可用性支持的擴展。首先讓我們來看一下LVS的體系結構示意圖:        圖一:LVS的三層體系結構示意圖    從上圖我們看出,LVS的抽象體系結構分為三個層次。第一層是負載均衡器,這是集群的唯一入口。從客戶端的角度看,集群通過這層的服務體現為一個基於IP地址的單一系統映像(SSI),整個集群共用這個虛擬地址,通過它客戶端可以把整個集群看作一個獨立的具有合法ip地址的主機系統,客戶端的所有訪問都發往這個虛擬IP地址。    但我們也發現,如果僅有一台負載均衡器,容易造成負載均衡器成為集群的單點失效,使其成為集群中最脆弱的環節。因此,有必要提供容錯機制,能夠在負載均衡器失效的時候進行自動檢測並平滑替換,也就是常說的HA技術。在上圖的結構中,有一個以備份均衡身份運行的結點實時地監控負載均衡器的運行狀態,並根據檢測到的狀態作出響應:報警、接管、恢復。具體細節將在HA章節討論。    第二層是提供實際服務的服務器群。客戶端發出的服務請求經過均衡器處理以後,轉交到服務池由具體的服務器響應請求並返回數據。通常我們會在服務結點池上提供Web服務、FTP服務或者視頻點播服務。由於單一系統無法應付高峰值得數據訪問,那麼通過多台服務器分擔這些負載就比較經濟可行了。    服務器結點也有可能出現暫時失效的情況,特別是在結點提供多種服務的時候,系統的隨機故障或外部環境的突變都可能造成該節點的某個服務暫時不可用。因此,由負載均衡擴展出的容錯機制要能夠識別這種錯誤,及時進行處理。同樣,當錯誤排除後,集群能夠自動識別恢復事件,把好的結點重新納入集群繼續運行。    第三層是存儲服務系統,為整個集群內部運行提供穩定、一致的文件存取服務。這一層作為LVS集群的擴展,可以為集群節點池提供單一的文件系統入口,即在每一台服務結點上都共用同一個根(/);並且自動完成不同結點訪問文件系統所引發的文件鎖定、負載均衡、容錯、內容一致、讀寫事務等底層功能,對應用層提供一個透明的文件訪問層。    LVS集群屬於松耦合集群系統。由於LVS在IP層上實現了SSI,因此不需要在集群中部署特殊的中間件層或者OS擴展,對服務器結點OS的兼容性比較好。對於部署LVS的內部結點而言,基本上可以兼容多數的IP應用,不需要做復雜的移植和安裝工作,每個內部結點可以看成相對獨立的服務器系統。即使在負載均衡器上,IPVS的核心功能也是透明的提供給用戶空間,不影響本機的正常的網絡應用。    LVS的IP負載均衡技術   根本上將,LVS的實現基礎是IP交換,也就是前面提到的接入協議交換技術。但LVS的體系結構具備一定的可擴展性,可以實現高性能、高可擴展性、易管理性等諸多特點,成為一個以負載均衡為核心的真正意義的集群系統。    首先我們了解一下LVS的負載均衡模型,共有三種:地址轉換(NAT)、IP隧道(IP Tunneling)和直接路由(DR)模型。    ◆地址轉換模式NAT          NAT結構圖與NAT包處理流程    我們看到,NAT的網絡結構呈現為一種類似防火牆的私有網結構,中間的虛線表示網絡隔離帶。通過內部IP地址,將服務結點池同互聯網隔離開來。服務結點無法和客戶端直接通信,不論是請求數據還是應答數據,都需要經過負載均衡器進行IP包處理工作。    NAT中主要的工作就是改寫IP包的源、目的地址信息,使得發向VIP的請求數據經過改寫後重新指向內部主機;同樣內部的應答數據經過負載均衡器改寫後,以VIP作為源地址發至請求者。這樣的模式也稱作網絡地址轉換(也有叫做IP地址偽裝),我們在代理服務器、Iptables、透明網關等應用中,都使用到這種模型,可以說這是一件比較成熟的技術。    由於使用NAT方式,要對進入和流出集群的網絡包進行改寫包頭地址的工作,在負荷比較重的時候會影響整個集群的性能,負載均衡器容易成為瓶頸。    ◆IP隧道模式 IPIP          IPIP結構圖與IPIP包處理流程    IPIP模式采用的是開放的網絡結構,服務結點擁有合法的互聯網IP地址,可以通過路由路徑將應答包直接返回給客戶端。因此,負載均衡器僅僅處理進入集群的請求數據包,而返回包不經過路由器。因此,這種模式稱作單工連接模式(單方向連接工作模式)。負載均衡器和服務結點的連接可以是LAN,也可以在不同的網絡上,只需要保證負載均衡器能夠將IP包發送至服務結點即可。    負載均衡器收到客戶端的請求包後,通過IPIP協議為該IP包重新處理,形成以選定的服務結點為目的IP的新的IP包,原有的IP包數據則封裝在新的IP包裡。服務結點收到均衡器發來的IPIP數據後,將該包解開,根據其內的客戶端地址(源地址)將處理結果直接返回給客戶端,而應答包的源地址則成為集群的虛擬地址VIP。    IPIP模式的技術在其他領域也有體現,因為對IP進行重新封裝,整個過程對應用層仍然是透明的。PPTP協議就是對IP隧道協議的一種應用。不過目前IPIP僅僅在Linux系統上實現。該協議必須在Kernel中打開設備選項支持,通過tunel設備綁定VIP,服務結點在返回應答數據時,可以以VIP作為源地址構築應答包。    ◆直接路由模式 DR         DR結構圖與DR包處理流程    和IPIP模式一樣,DR模式也是采用單工的連接方式,應答數據不再經過均衡器而直接返回給客戶端。服務結點也必須擁有能夠到達客戶端的合法IP地址。而且,DR模式中,負載均衡器和服務結點必須位於同一個網段。    負載均衡器接收到客戶端請求後,選擇合適的服務結點,然後改寫該請求包的MAC地址部分,使之成為目的服務結點的MAC地址,再將此包廣播到均衡器所在的網段。由於每個服務結點都擁有一個虛擬的網括設備(可以是dummy0或者lo:0),這些設備上綁定了和均衡器一樣的VIP,只是該設備並不響應對VIP的RAP解析,不會和均衡器的Vip地址沖突。負載均衡器收到符合自身MAC的IP包後,經過處理後直接將應答數據返回給客戶,而此時的源地址仍然是VIP。這樣,在客戶端看來,訪問的和接受響應的始終是集群的VIP地址了。    綜合比較   雖然LVS支持三種負載均衡模式,但是從上面的分析我們發現,根據負載均衡器處理IP包的進出方式,LVS實際上包含了兩種模型:單工處理和雙工(雙向連接工作模式)處理。顯然,NAT地址轉換模式屬於雙工連接處理,在這種模式下,負載均衡器不但需要處理進入集群的IP包,而且還要處理集群內部節點返回的應答IP包,一個用戶從發出訪問請求到接受響應,都要經過集群的核心負載均衡器的處理,因此稱之為雙工連接處理。而其他兩種模式中,負載均衡器僅僅處理進入集群的IP請求包,而集群內部結點的響應數據則不再通過負載均衡器返回客戶端,而是通過節點到客戶端的路由通道直接發送到目的地。由於均衡器僅處理一次完整連接的IP請求部分,而對IP的應答數據則不處理,所以稱之為單工連接模式。    二者比較,有什麼有缺點呢。要知道,在現今的Web世界中,大多數的網絡請求比較小,無非是一些URL頁面請求,GET或者POST表單,在麼就是某些指令等等,這些數據基本上在幾百到幾K個字節。對這樣的IP數據包進行處理是比較輕松的事。而相反,Web中的應答數據通常很大,一個普通的Web頁面也要幾十K,更何況返回的如果是視頻、音頻流了,加上日益瘋狂的網絡下載,即使再強勁的處理器也無法承受這樣大量的IP包處理工作。    因此,在IP負載均衡中,如果使用雙工模式(NAT),不僅要對進入集群的請求做出處理(改寫IP包的源、目的地址),還要對服務結點返回的大量數據做同樣的工作。那麼,隨著集群服務節點池規模的增長,負載均衡器的處理能力很快就會達到飽和,也大大影響了LVS集群的規模可擴展性。而使用IPIP或者DR模式,負載均衡器只需要處理相對很少的IP數據包,對於大量的返回數據,都由服務節點通過路由器、交換機等設備直接返回給客戶端。因此在規模可擴展性這一點上,單工模式有可擴展性方面的優勢。    事物的存在總有他的道理。作者當初設計這三種負載模型,肯定是各有其有缺點的。NAT也並非一無是處。NAT雖然在性能表現上弱於其它兩種模型,但是集群結點支持更多的操作系統,在網絡安全性方面也比較高一些。以下是三者在各方面的比較:    NAT模式     服務結點可以是任何操作系統。   擁有私有IP地址的局域網絡。   10~20個,試均衡器的處理能力而定。   均衡器即為服務結點的網關。   較好,采用內部IP,服務結點隱蔽。   僅需要一個合法IP地址作為VIP。     IPIP模式     服務結點必須支持IP隧道協議,目前只有Linux。   擁有合法IP地址的局域網或者廣域網。   較高,可以支持到100個服務結點。   服務結點同自己的網關或者路由器連接,不經過均衡器。   較差,采用公用IP地址,結點完全暴露。   除VIP外,每個服務結點需擁有合法的IP地址,可以直接路由至客戶端。     DR模式     服務結點支持虛擬網服務結點支持虛擬網卡設備,能夠禁用該設備的ARP響應功能。   擁有合法IP地址的局域網,服務結點與均衡器必須在同一個網段。   較高,可以支持到100個服務結點。   服務結點同自己的網關或者路由器連接,不經過均衡器。   較差,采用公用IP地址,結點完全暴露。   除VIP外,每個服務結點需擁有合法的IP地址,可以直接路由至客戶端。     三種模式的比較   綜上所述,我們在選擇LVS作為集群負載均衡解決方案的時候,首先根據單前應用環境的情況確定使用哪一種IP負載均衡結構。如果你只擁有一個合法的IP地址,或者你需要構造一個安全的集群,又不太擔心性能問題的話,完全可以使用NAT模式;如果對性能有比較高的要求,而應用又是基於Linux的話,使用IPIP或者DR模式一定會給你一個驚喜。  




 



Copyright © Linux教程網 All Rights Reserved