LVS負載羣集理論篇

 

羣集,顧名思義,不是指一臺服務器,而是指一串的服務器。這樣可以提升服務的質量,高可用,負載均衡,提升訪問速度等好處。linux

博主此次就和你們討論一下「羣集」以及「負載均衡羣集」。nginx

羣集類型:算法

不一樣的羣集類型特色不同,其達到的效果也是不同的,常見的羣集類型有三種:安全

負載均衡羣集, 高可用羣集,高性能運算羣集。服務器

——負載均衡羣集: 和他的名字同樣,他就是作負載的,以便提升系統的響應能力,儘可 能的處理更多的訪問請求,減小連接的延遲,得到高併發,高負載的總體性能。好比一 臺性能良好的nginx能夠接受的併發連接時4000,那麼由兩臺nginx組成的一個羣集又 會怎麼樣那。負載均衡羣集就是提升併發處理,減小延遲的技術。網絡

——高可用羣集:高可用性羣集就是提升形同的可靠性,確保服務的連續性,不中斷性,達 到高可用性的容錯效果。好比Cisco的HSRP熱備份路由協議,活躍路由器down掉之 後,備份路由器立刻就替代了活躍路由器的角色。而對用戶的體驗來講,徹底沒有網絡 中斷的感受。併發

——高性能運算羣集:以提升CPU的運算能力,以及擴展硬件(像內存)等資源和總體的分析能力爲目的。好比「雲計算」「超級計算機」等。負載均衡

不一樣類型的羣集類型也能夠搭配使用,獲得更好的處理能力和效果。ide

下面就主要來看看負載均衡羣集的構成和工做模式:高併發

負載均衡的分層結構:

在典型的負載均衡的羣集中,主要有三個部分。前段至少有一個負載調度器,中堅力量就是要有一個服務器池,提供相應的服務程序,服務器池能夠提供整個羣集的擴展和縮減。

最後是共享存儲,以便達到應用服務的統一性。如圖:

wps_clip_image-4911

①負載調度器:他是訪問整個羣集的惟一入口,必不可少,對外使用整個羣集的虛擬ip(VIP),一般會配置兩臺負載調度器,達到HA高可用性。

②服務器池:有多臺的應用服務器來構成(如FTP HTTP SQL )每一個節點是配置真實的ip(RIP),他們負載處理負載調度器發來的訪問請求。另外服務器池的的服務器數量能夠根據需求增長或減小,很靈活。

③共享存儲:爲服務器池中的各節點(服務器)提供可靠的,統一的文件讀取服務,確保整個羣集的統一性。Linux環境中能夠採用NAS或整網絡共享

負載均衡的工做模式:

負載均衡的工做模式也分爲三中. NAT模式, TUN模式, DR 模式。

① 地址轉換模式:也稱爲NAT模式,相似防火牆的私有網絡的網絡拓撲。負載調度器是全部服務器的網關。客戶端訪問須要通過負載調度器(做爲惟一入口),服務器池中的服 務器響應客戶端也要通過負載調度器(出口)。負載調度器和服務器池的主機在同一個物理網絡環境中。而且NAT模式是這三種模式中相對較爲安全的一種。如圖:

wps_clip_image-20862

② ip隧道模式:又稱爲IP TUNNEL模式,採用開放式的網絡結構,(就是負載均衡三層中的主機或服務器能夠再也不同一個物理位置,如;調度服務器在北京,而服務器池中的主機在上海。)這時負載調度器只負責接受客戶端的請求轉發,而鏈接的迴應直接由服務器池中的服務器經過互聯網或其餘響應客戶端。負載調度器和服務器中的主機能夠經過×××的方式通訊,也能夠申請專線的方式。總之較爲麻煩一點。如圖:(不是很形象)

wps_clip_image-6542

③直接路由的方式:DR模式,採用半開放是的網絡結構。和TUN模式差很少,只是負載調度器要和服務器在同一個物理位置,服務器池中的節點不是分散在各地了。調度器只是負責轉發客戶端的請求,而響應客戶端仍是服務器池中的各節點直接經過路由方式響應。

wps_clip_image-25106

其實這三種工做模式的不一樣全和負載調度器有關聯,那麼負載調度器究竟是幹嗎的那。說白了,他就至關於boss老闆,負責給底下的人合理的分配工做,底下的人是誰,就是服務器池中的各個節點,怎麼樣「合理」,這就是下面要說的

LVS的調度算法,LVS(linux Virtual Server)的調度算法一共有一下幾種:

1.輪叫調度(Round Robin)(簡稱rr)

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

2.加權輪叫(Weighted Round Robin)(簡稱wrr)

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

3.最少連接(Least Connections)(LC)

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

4.加權最少連接(Weighted Least Connections)(WLC)

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

5.基於局部性的最少連接(Locality-Based Least Connections)(LBLC)

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

6.帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication)(LBLCR)

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

7.目標地址散列(Destination Hashing)(DH)

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

8.源地址散列(Source Hashing)(SH)

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

9. 最短的指望的延遲(Shortest Expected Delay Scheduling SED)(SED)

基於wlc算法。這個必須舉例來講了

ABC三臺機器分別權重123 ,鏈接數也分別是123。那麼若是使用WLC算法的話一個新請求進入時它可能會分給ABC中的任意一個。使用sed算法後會進行這樣一個運算

A(1+1)/1

B(1+2)/2

C(1+3)/3

根據運算結果,把鏈接交給C 。

10.最少隊列調度(Never Queue Scheduling NQ)(NQ)

無需隊列。若是有臺 realserver的鏈接數=0就直接分配過去,不須要在進行sed運算

end

相關文章
相關標籤/搜索