1. 程式人生 > >集群與負載均衡,分布式計算入門學習

集群與負載均衡,分布式計算入門學習

重要 詳細 任務 80端口 恢復 服務 內存 單位 persist

1.集群的概念

計算機集群通過一組松散集成的計算機軟件和/或硬件連接起來高度緊密地協作完成計算工作。

一組獨立的計算機系統構成一個松耦合的多處理器系統,它們之間通過網絡實現進程間的通信,應用程序可以通過網絡共享內存進行消息傳送,實現分布式計算機。

比如單個重負載的 運算分擔到多臺設備上做並行處理,每個節點設備處理結束後,將結果匯總,返回給用戶,系統處理能力得到大幅度提高,一般分為幾種:

***高可用性集群:一般是指當集群中某個節點失效的 情況下,其上的任務會自動轉移到其他正常的節點上,還指可以將集群中的某節點進行離線維護再上線,該過程不影響整個集群的運行;

***負載均衡集群:負載均衡集群運行時,一般通過一個或多個前端負載均衡器,將工作負載分發到一組服務器上,從而達到整個系統的高性能和高可用性;

***高性能計算集群:高性能計算集群采用將計算任務分配到集群的不同節點而提高計算能力,因而主要應用在科學計算領域;

2.負載均衡的概念:

它是利用一個集群中的多臺單機,完成許多並行的小的工作。一般情況下,如果一個應用使用的人多了,那麽用戶請求的相應時間就會增大,機器的性能也會受到影響,如果使用負載均衡集群,那麽集群中任意一臺機器都能響應用戶的請求,這樣集群就會在用戶發出服務請求之後,選擇當時負載最小,能夠提供最好的服務的這臺機器來接受請求並響應,這樣就可以用集群來增加系統的可用性和穩定性。

3.分布式的概念:

集群:同一個業務,部署在多個服務器上。分布式:一個業務分拆成多各子業務,或者本身就是不同的業務,部署在不同的服務器上

簡單地說,分布式是以縮短單個任務的執行時間來提升效率的,而集群則是通過提高單位時間內執行任務數來提升效率的。舉例:比如新浪網,訪問的人多了,他可以做一個集群,前面放一個負載均衡服務器,後面幾臺服務器完成同一業務,如果還有業務訪問的時候,響應服務器看哪臺服務器的均衡不是很重,就將那臺去完成,並且一臺服務器垮了,其他的服務器可以頂上來。分布式的每一個節點,都完成不同的業務,一個節點垮了,那這個業務可能就失敗了。

4.負載均衡技術實現

負載均衡技術通過設置虛擬服務器IP(VIP),將後端多臺真實服務器的應用資源虛擬成一臺高性能的應用服務器,通過負載均衡算法,將用戶的請求轉發給後臺內網服務器,內網服務器將請求的響應返回給負載均衡器,負載均衡再將響應發送給用戶,這樣向互聯網用戶隱藏了內部網絡結構,阻止了用戶直接訪問後臺(內網)服務器,使得服務器更加安全,可以阻止對核心網絡棧和運行在其他端口服務的攻擊。

系統的擴展可分為縱向(垂直)擴展和橫向(水平)擴展。縱向擴展,是從單機的角度通過增加硬件處理能力,比如CPU處理能力,內容容量,磁盤等方面,實現服務器處理能力的提升,不能滿足大型分布式系統(網站),大流量,高並發,海量數據的問題。因此需要采用橫向擴展的方式,通過添加機器來滿足大型網站服務的處理能力,比如:一臺機器不能滿足,則增加兩臺或多臺機器,共同承擔訪問壓力。

負載均衡最重要的一個應用就是利用多臺服務器提供單一服務,這種方案有時也稱為服務器農場,通常,負載均衡主要應用於Web網站,大型的Internet Relay Chat網絡,高流量的文件下載網站,NNTP服務(網絡新聞傳輸協議)和DNS服務,現在負載均衡也開始支持數據庫服務,稱之為數據庫負載均衡器。

5.服務器負載均衡的三大基本元素:負載均衡算法,健康檢查和會話保持

負載均衡設備的實現原理是把多臺服務器的地址映射成一個對外的服務IP(我們稱之為VIP,關於服務器的映射可以直接將服務器IP映射成VIP地址,也可以將服務器IP:Port,不同的映射方式會采取相應的健康檢查,在端口映射時,服務器端口與VIP端口不相同),這個過程對用戶是不可見的,用戶實際上不知道服務器是做了負載均衡的,因此他們訪問的還是一個目的IP。

6.詳細的訪問流程:

技術分享圖片

用戶(IP:207.17.117.20)訪問域名(www.a10networks.com),首先通過DNS查詢解析出這個域名的公網地址:199.237.202.124,接下來用戶207.17.117.20會訪問199.237.202.124這個地址,因此數據包會達到負載均衡設備,接下來負載均衡設備會把數據分發到合適的服務器,看下圖:

技術分享圖片

負載均衡設備在將數據包發給服務器時,數據包是做了一些變化的,如上圖所示,數據包達到負載均衡設備之前,源地址是:207.17.117.20,目的地址是:100.237.202.124,當負載均衡設備將數據轉發給選中的服務器時,源地址還是:207.17.117.20,目的地址變為172.16.20.1,我們稱這種方式為目的地址NAT(DNAT,目的地址轉換)。一般來說,在服務器負載均衡中DNAT是一定要做的(還有一種模式叫做服務器直接返回--DSR,是不做DNAT的),而源地址根據部署模式的不同,有時候也需要轉換成別的地址,我們稱之為:源地址NAT(SNAT),一般來說,旁路模式需要做SNAT,而串接模式不需要,本示意圖為串接模式,所以源地址沒有做NAT。

7.負載均衡算法:

一般來說,負載均衡服務器都會默認支持多種負載均衡分發策略,例如:

(1)輪詢:將請求順序循環地發到每個服務器,當其中某個服務器故障,AX就把其從順序循環隊列中拿出,不參加下一次的輪詢,直到其回復正常;

(2)比率:給每個服務器分配一個加權值為比例,根據這個比例,把用戶的請求分配到每個服務器,當其中某個服務器發送故障,AX就把其從服務器隊列中拿出,不參加下一次的用戶請求的分配,直到其恢復正常。

(3)優先權:給所有服務器分組,給每個組定義優先權,將用戶的請求分配到優先級最高的服務器組(在同一組內,采用預先設定的輪詢或比率算法,分配用戶的請求);當最高優先級中所有服務器或指定數量的服務器出現故障,AX將把請求送給次級優先級的服務器組,這種方式,實際為用戶提供一種熱備份的方式。

(4)最少連接數:AX會記錄當前每臺服務器或者服務端口上的連接數,新的連接將傳遞給連接數最少的服務器,當其中某個服務器發生故障,AX就把其從服務器隊列中拿出,不參與下一次的用戶請求的分配,直到其恢復正常。

(5)哈希算法:將客戶端的源地址,端口進行哈希運算,根據運算的結果轉發給一臺服務器進行處理,當其中某個服務器發送故障,就把其從服務器隊列中拿出,不參與下一次的 用戶請求的分配,直到其恢復正常。

(6)基於數據包的內容分發:例如判斷HTTP的URL,如果URL中帶有.jpg的擴展名,就把數據包轉發到指定的服務器。

8.健康檢查:

健康檢查用於檢查服務器開放的各種服務的可用狀態,負載均衡設備一般會配置各種健康檢查方法,例如Ping,TCP,UDP,HTTP,FTP,DNS等。Ping屬於第三層的健康檢查,用於檢查服務器IP的連通性,而TCP/UDP屬於第四層的健康檢查,用於檢查服務端口的UO/DOWN,如果要檢查的更準確,就要用到基於7層的健康檢查,例如創建一個HTTP健康檢查,Get一個頁面回來,並且檢查頁面內容是否包含一個指定的字符串,如果包含,則服務時UP的,如果不包含或者取不回頁面,就認為該服務器的Web服務是不可到別的服務器。比如,負載均衡設備檢查到172.16.20.3這臺服務器的80端口是DOWN的,負載均衡設備將不把後面的連接轉發到這臺服務器,而是根據算法將數據包轉發到別的服務器。創建健康檢查時可以設定檢查的間隔時間和嘗試次數,例如設定間隔時間為5秒,嘗試次數為3次,那麽負載均衡設備每隔5秒發起一次健康檢查,如果檢查失敗,則嘗試3次,如果3次都檢查失敗,則把該服務標記為DOWN,然後服務器仍然會每隔5秒對DOWN的服務器進行檢查,當某個時刻發現服務器健康檢查又成功了,則把該服務器重新標記為UP。健康檢查的間隔和嘗試次數要根據綜合情況來設置,原則是既不會對業務產生影響,又不會對負載均衡設備造成較大負擔。

9.會話保持

如何保證一個用戶的兩次http請求轉發到同一個服務器,這就要求負載均衡設備配置會話保持。

絕大部分的負載均衡設備都支持兩大類基本的會話保持方式:源./目的地址會話保持和cookie會話保持,另外像hash,URL Persist等也比較常用的方式,但是所有設備都支持,基於不同的應用要配置不同的會話保持,否則會引起負載的不均衡甚至訪問異常。

集群與負載均衡,分布式計算入門學習