一種計算機系統,經過一組鬆散集成的計算機軟件或硬件鏈接起來高度緊密地協做完成計算工做。html
可被看做是一臺計算機。前端
集羣系統中的單個計算機一般稱爲節點,一般經過局域網鏈接,但也有其它的可能鏈接方式。
集羣計算機一般用來改進單個計算機的計算速度和可靠性。mysql
LVS在企業架構中的位置:linux
以上的架構只是衆多企業裏面的一種而已。nginx
綠色線就是用戶訪問請求的數據流向:web
用戶-->LVS負載均衡服務器--->apahce服務器--->MySQL服務器&memcache服務器&共享存儲服務器。而且咱們的mysql、共享存儲也可以使用LVS再進行負載均衡。算法
按照功能和結構通常分紅如下幾類:sql
1)負載均衡集羣(Loadbalancingclusters)簡稱LBC 2)高可用性集羣(High-availabilityclusters)簡稱HAC 3)高性能計算集羣(High-perfomanceclusters)簡稱HPC 4)網格計算(Gridcomputing)
網絡上面通常認爲是有三個,負載均衡和高可用集羣是互聯網行業經常使用的集羣架構。apache
負載均衡集羣把不少客戶集中訪問的請求負載壓力可能儘量平均的分攤到計算機集羣中處理。後端
客戶請求負載一般包括應用程度處理負載和網絡流量負載。
每一個節點均可以承擔必定的訪問請求負載壓力,而且能夠實現訪問請求在各節點之間動態分配,以實現負載均衡。
負載均衡運行時,通常經過一個或多個前端負載均衡器將客戶訪問請求分發到後端一組服務器上,從而達到整個系統的高性能和高可用性。
1)分擔訪問流量(負載均衡) 2)保持業務的連續性(高可用)
相似是集羣中運行着兩個或兩個以上的同樣的節點,當某個主節點出現故障的時候,那麼其餘做爲從 節點的節點就會接替主節點上面的任務。從節點能夠接管主節點的資源(IP地址,架構身份等),此時用戶不會發現提供服務的對象從主節點轉移到從節點。
高可用性集羣的做用:當一個機器宕機另外一臺進行接管。
比較經常使用的高可用集羣開源軟件有:
keepalive,heardbeat
開源集羣軟件:
lvs keepalived haproxy nginx apache heartbeat
商業集羣硬件:
F5 Netscaler Radware A10
廉價、有效、透明方法,擴展網絡設備和服務器的負載帶寬、增長吞吐量,增強網絡數據處理能力、提升網絡的靈活性和可用性。
1)把單臺計算機沒法承受的大規模的併發訪問或數據流量分擔到多臺節點設備上分別處理, 減小用戶等待響應的時間,提高用戶體驗。 2)單個重負載的運算分擔到多臺節點設備上作並行處理,每一個節點設備處理結束後, 將結果彙總,返回給用戶,系統處理能力獲得大幅度提升。 3)7*24小時的服務保證,任意一個或多個設備節點設備宕機,不能影響到業務。 在負載均衡集羣中,全部計算機節點都應該提供相同的服務,集羣負載均衡獲取全部對該服務的如站請求。
LVS是linux virtual server的簡寫linux虛擬服務器,是一個虛擬的服務器集羣系統,能夠在unix/linux平臺下實現負載均衡集羣功能。該項目在1998年5月由章文嵩博士組織成立。
如下是LVS官網提供的4篇文章:
http://www.linuxvirtualserver.org/zh/lvs1.html http://www.linuxvirtualserver.org/zh/lvs2.html http://www.linuxvirtualserver.org/zh/lvs3.html http://www.linuxvirtualserver.org/zh/lvs4.html
2.2內核時,IPVS就已經之內核補丁的形式出現。 從2.4.23版本開始ipvs軟件就是合併到linux內核的經常使用版本的內核補丁的集合。 從2.4.24之後IPVS已經成爲linux官方標準內核的一部分
lpvs是工做在內核層,咱們不可以直接操做ipvs,vs負載均衡調度技術是在linux內核中實現的。所以,被稱之爲linux虛擬服務器。咱們使用該軟件配置lvs的時候,不能直接配置內核中的ipvs,而須要使用ipvs的管理工具ipvsadm進行管理。經過keepalived也能夠管理LVS。
LVS虛擬服務器的體系以下圖,一組服務器經過高速的局域網或者地理分佈的廣域網相互鏈接,在這組服務器以前有一個負載調度器(load balance)。負載調度器負責將客戶的請求調度到真實服務器上。這樣這組服務器集羣的結構對用戶來講就是透明的。客戶訪問集羣系統就如只是訪問一臺高性能,高可用的服務器同樣。客戶程序不受服務器集羣的影響,不作任何修改。
客戶請發送向負載均衡服務器發送請求。負載均衡器接受客戶的請求,而後先是根據LVS的調度算法(8種)來決定要將這個請求發送給哪一個節點服務器。而後依據本身的工做模式(3種)來看應該如何把這些客戶的請求如何發送給節點服務器,節點服務器又應該如何來把響應數據包發回給客戶端。
1)VS/NAT模式(Network address translation) 2)VS/TUN模式(tunneling) 3)DR模式(Direct routing)
Virtualserver via Network address translation(VS/NAT)
經過網絡地址轉換實現調度。
調度過程IP包詳細圖:
1)客戶端請求數據,目標IP爲VIP; 2)請求數據到達LB服務器,LB根據調度算法將目的地址修改成RIP地址及對應端口(此RIP地址是根據調度算法得出的。)並在鏈接HASH表中記錄下這個鏈接; 3)數據包從LB服務器到達RS服務器webserver,而後webserver進行響應。Webserver的網關必須是LB,而後將數據返回給LB服務器; 4)收到RS的返回後的數據,根據鏈接HASH表修改源地址VIP&目標地址CIP,及對應端口80.而後數據就從LB出發到達客戶端; 5)客戶端收到的就只能看到VIP\DIP信息。
一、NAT技術將請求的報文和響應的報文都須要經過LB進行地址改寫,所以網站訪問量比較大的時候LB負載均衡調度器有比較大的瓶頸,通常要求最多之能10-20臺節點 二、只須要在LB上配置一個公網IP地址就能夠了。 三、每臺內部的節點服務器的網關地址必須是調度器LB的內網地址。 四、NAT模式支持對IP地址和端口進行轉換。即用戶請求的端口和真實服務器的端口能夠不一致。
virtual server via ip tunneling模式:
採用NAT模式時,因爲請求和響應的報文必須經過調度器地址重寫,當客戶請求愈來愈多時,調度器處理能力將成爲瓶頸。
爲了解決這個問題,調度器把請求的報文經過IP隧道轉發到真實的服務器。
真實的服務器將響應處理後的數據直接返回給客戶端。這樣調度器就只處理請求入站報文.
因爲通常網絡服務應答數據比請求報文大不少,採用VS/TUN模式後,集羣系統的最大吞吐量能夠提升10倍。
VS/TUN的工做流程圖以下所示,它和NAT模式不一樣的是,它在LB和RS之間的傳輸不改寫IP地址。而是把客戶請求包封裝在一個IP tunnel裏面,而後發送給RS節點服務器,節點服務器接收到以後解開IP tunnel後,進行響應處理。而且直接把包經過本身的外網地址發送給客戶不用通過LB服務器。
原理:
1)客戶請求數據包,目標地址VIP發送到LB上; 2)LB接收到客戶請求包,進行IP Tunnel封裝。即在原有的包頭加上IP Tunnel的包頭。而後發送出去; 3)RS節點服務器根據IP Tunnel包頭信息(此時就又一種邏輯上的隱形隧道,只有LB和RS之間懂)收到請求包,而後解開IP Tunnel包頭信息,獲得客戶的請求包並進行響應處理; 4)響應處理完畢以後,RS服務器使用本身的出公網的線路,將這個響應數據包發送給客戶端。源IP地址仍是VIP地址。
Virtual server via direct routing (vs/dr)
經過改寫請求報文的目標MAC地址,將請求發給真實服務器的,而真實服務器響應後的處理結果直接返回給客戶端用戶。
同TUN模式同樣,DR模式能夠極大的提升集羣系統的伸縮性。並且DR模式沒有IP隧道的開銷,對集羣中的真實服務器也沒有必要必須支持IP隧道協議的要求。可是要求調度器LB與真實服務器RS都有一塊網卡鏈接到同一物理網段上,必須在同一個局域網環境。
DR模式是互聯網使用比較多的一種模式。
DR模式原理圖:
它的鏈接調度和管理與NAT和TUN中的同樣,報文轉發方法和前兩種不一樣。
DR模式將報文直接路由給目標真實服務器。
在DR模式中,調度器根據各個真實服務器的負載狀況,鏈接數多少等,動態地選擇一臺服務器,不修改目標IP地址和目標端口,也不封裝IP報文,而是將請求報文的數據幀的目標MAC地址改成真實服務器的MAC地址。
而後再將修改的數據幀在服務器組的局域網上發送。由於數據幀的MAC地址是真實服務器的MAC地址,而且又在同一個局域網。那麼根據局域網的通信原理,真實復位是必定可以收到由LB發出的數據包。
真實服務器接收到請求數據包的時候,解開IP包頭查看到的目標IP是VIP。(此時只有本身的IP符合目標IP纔會接收進來,因此咱們須要在本地的迴環藉口上面配置VIP。
另:因爲網絡接口都會進行ARP廣播響應,但集羣的其餘機器都有這個VIP的lo接口,都響應就會衝突。因此咱們須要把真實服務器的lo接口的ARP響應關閉掉。)而後真實服務器作成請求響應,以後根據本身的路由信息將這個響應數據包發送回給客戶,而且源IP地址仍是VIP。
一、經過在調度器LB上修改數據包的目的MAC地址實現轉發。注意源地址仍然是CIP,目的地址仍然是VIP地址。 二、請求的報文通過調度器,而RS響應處理後的報文無需通過調度器LB,所以併發訪問量大時使用效率很高(和NAT模式比) 三、由於DR模式是經過MAC地址改寫機制實現轉發,所以全部RS節點和調度器LB只能在一個局域網裏面 四、RS主機須要綁定VIP地址在LO接口上,而且須要配置ARP抑制。 五、RS節點的默認網關不須要配置成LB,而是直接配置爲上級路由的網關,能讓RS直接出網就能夠。 六、因爲DR模式的調度器僅作MAC地址的改寫,因此調度器LB就不能改寫目標端口,那麼RS服務器就得使用和VIP相同的端口提供服務。
參考此文章:http://www.linuxvirtualserver.org/zh/lvs4.html
Lvs的調度算法決定了如何在集羣節點之間分佈工做負荷。當director調度器收到來自客戶端訪問VIP的上的集羣服務的入站請求時,director調度器必須決定哪一個集羣節點應該處理請求。
Director調度器調度方法分兩類:
固定調度算法: rr wrr dh sh 動態調度算法: wlc lc lblc lblcr
a.基本輪詢調度rr b.加權最小鏈接調度wlc c.加權輪詢調度wrc
實際適用中這些算法的適用範圍不少,工做中最好參考內核中的鏈接調度算法的實現原理,而後根據具體的業務需求合理的選型。