“負載均衡”:是什麼?爲什麼?怎麼做?

負載均衡建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。

負載均衡(Load Balance)其意思就是分攤到多個操作單元上進行執行,例如Web服務器FTP服務器企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。

負載均衡是高可用網絡基礎架構的的一個關鍵組成部分,有了負載均衡,我們通常可以將我們的應用服務器部署多臺,然後通過負載均衡將用戶的請求分發到不同的服務器用來提高網站、應用、數據庫或其他服務的性能以及可靠性。

  • 爲什麼要引入負載均衡?

這是一個沒有負載均衡機制的web架構: 

 

上圖中的架構有什麼缺陷了?首先,用戶是通過網絡直接和web服務器相連,想象一下,如果這個服務器掛了(這種情況隨時都可能發生的),那麼用戶的請求就會得不到響應,將無法訪問該網站,這就是著名的單點故障問題,這肯定是不行的,一般而言,商業上的網站其可靠性需要達到至少4個9,也就是99.99&以上。

其次,即使服務器是正常工作的情況,但是如果很多用戶在同一時間內訪問服務器,超過了服務器的處理能力,那麼會出現響應速度慢甚至無法連接的情況,這也是用戶無法接受的。

負載均衡的出現可以很好的解決上面兩個問題,通過引入一個負載均衡器和至少兩個web 服務器,可以有效的解決上面兩個問題。:通常情況下,所有的後端服務器會保證提供相同的內容,以便用戶無論哪個服務器響應,都能收到一致的內容。

如上圖架構,現在,即使App 01即使掛了,負載均衡會將用戶的請求轉發到正常工作的App 02上,這解決了上面的第一個問題;其次,根據業務需要,負載均衡後端的App可以很方便的擴展,這樣就能解決第上面的第二個問題。但是,現在單點故障問題轉移到了負載均衡器,可以通過引入第二個負載均衡器來緩解,後面還會講到。

 

  • 負載均衡如何選擇要轉發的後端服務器

負載均衡器一般根據兩個因素來決定要將請求轉發到哪個服務器。

 

1:確保所選擇的後端服務器是正常工作的,能給對用戶的請求做出響應;

2:根據預先設置的負載均衡算法從健康服務器池中進行選擇。

 

由於負載均衡器只應當選擇能正常做出響應的後端服務器,因此就需要有一種機制能判斷它所連的後端服務器是否正常工作。爲了監視後臺服務器的運行狀況,運行狀態檢查服務會定期嘗試使用轉發規則定義的協議和端口去連接後端服務器。如果某個服務器沒有通過健康檢查,就會從健康池中剔除,保證流量不會被轉發到該服務器,直到其再次通過健康檢查爲止。

 

負載均衡算法

負載均衡算法決定了後端的哪些健康服務器會被選中。下面是幾個常用的算法:

輪詢:爲第一個請求選擇健康池中的第一個後端服務器,然後按順序往後依次選擇,直到最後一個,然後循環。

最小連接:優先選擇連接數最少,也就是壓力最小的後端服務器,在會話較長的情況下可以考慮採取這種方式。

散列:根據請求源的 IP 的散列(hash)來選擇要轉發的服務器。這種方式可以一定程度上保證特定用戶能連接到相同的服務器。如果你的應用需要處理狀態而要求用戶能連接到和之前相同的服務器,可以考慮採取這種方式。

 

最後,想要解決負載均衡器的單點故障問題,可以將第二個負載均衡器連接到第一個上,從而形成一個集羣。如下圖所示:

 

當主負載均衡器發生了故障,就需要將用戶請求轉到第二個負載均衡器。由於 DNS 更改通常會在較長的時間才能生效,因此需要有一種能靈活解決 IP 地址重新映射的方法,比如浮動 IP(floating IP)。這樣域名可以保持和相同的 IP 相關聯,而 IP 本身則能在服務器之間移動。下面就是一個使用浮動 IP 的負載均衡架構動態示意圖: 

 

 

主要應用

編輯

1.DNS負載均衡最早的負載均衡技術是通過DNS來實現的,在DNS中爲多個地址配置同一個名字,因而查詢這個名字的客戶機將得到其中一個地址,從而使得不同的客戶訪問不同的服務器,達到負載均衡的目的。DNS負載均衡是一種簡單而有效的方法,但是它不能區分服務器的差異,也不能反映服務器的當前運行狀態。

2.代理服務器負載均衡 使用代理服務器,可以將請求轉發給內部的服務器,使用這種加速模式顯然可以提升靜態網頁的訪問速度。然而,也可以考慮這樣一種技術,使用代理服務器將請求均勻轉發給多臺服務器,從而達到負載均衡的目的。

3.地址轉換網關負載均衡 支持負載均衡的地址轉換網關,可以將一個外部IP地址映射爲多個內部IP地址,對每次TCP連接請求動態使用其中一個內部地址,達到負載均衡的目的。 [1] 

4.協議內部支持負載均衡除了這三種負載均衡方式之外,有的協議內部支持與負載均衡相關的功能,例如HTTP協議中的重定向能力等,HTTP運行於TCP連接的最高層。

5.NAT負載均衡NAT(Network Address Translation網絡地址轉換)簡單地說就是將一個IP地址轉換爲另一個IP地址,一般用於未經註冊的內部地址與合法的、已獲註冊的Internet IP地址間進行轉換。適用於解決Internet IP地址緊張、不想讓網絡外部知道內部網絡結構等的場合下。

6.反向代理負載均衡普通代理方式是代理內部網絡用戶訪問internet上服務器的連接請求,客戶端必須指定代理服務器,並將本來要直接發送到internet上服務器的連接請求發送給代理服務器處理。反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個服務器。反向代理負載均衡技術是把將來自internet上的連接請求以反向代理的方式動態地轉發給內部網絡上的多臺服務器進行處理,從而達到負載均衡的目的。

7.混合型負載均衡在有些大型網絡,由於多個服務器羣內硬件設備、各自的規模、提供的服務等的差異,可以考慮給每個服務器羣採用最合適的負載均衡方式,然後又在這多個服務器羣間再一次負載均衡或羣集起來以一個整體向外界提供服務(即把這多個服務器羣當做一個新的服務器羣),從而達到最佳的性能。將這種方式稱之爲混合型負載均衡。此種方式有時也用於單臺均衡設備的性能不能滿足大量連接請求的情況下。

解決方案

編輯

負載均衡在銀行中的解決方案

業務連續性與高可用性從來都是企業的生命線。我們很難想象,當一個銀行的信息系統中斷那怕是一個小時,將會造成怎樣的嚴重後果。據權威統計,經歷突發性重大災害後的公司有將近43%倒閉,而另外51% 也在兩年之內陸續關門。要保證關鍵業務7x24不中斷,應對激烈的市場競爭和提高客戶滿意度,企業必須在IT系統圍繞“連續”主題進行構建,實施業務連續/容災備份計劃,包括業務連續性、高可用性管理、容災、數據保護和恢復案、安全等。

正是基於以上考慮,某銀行數據中心採用了服務器負載均衡高可用性解決方案,該銀行實現了多數據中心鏈接和高負載高流量的網絡應用目標,確保了該銀行數據中心的穩定的業務處理能力。

客戶需求

某銀行成立於1992年,是國有控股的全國性股份制商業銀行,爲國內第一家有國際金融組織參股的銀行,具有雄厚的資金實力,特點鮮明的股權結構,完善的經營管理體制,佈局合理的機構網絡,該銀行已在全國23個省、自治區、直轄市的36個經濟中心城市擁有分支機構300多家,成爲對社會有一定影響的全國性股份制商業銀行。與此同時,該銀行也積極利用信息化手段,來提高自身的競爭力和客戶滿意度。

就該銀行而言,要確保銀行數據中心高流量負載和高可用性,全面部署高可用性的服務器負載均衡解決方案,要求如下:在正常情況下兩臺或多臺服務器的負載基本相同,在某臺服務器停機的情況下透明的容錯,保證關鍵服務的持續。ISP接入鏈路的容災:在每個數據中心採用不同的ISP接入鏈路, 保證在ISP故障的情況下系統的正常運行, 而在正常的情況下實現負載均衡, 提高鏈路利用率。多數據中心的協同工作:爲配合未來在業務量增加的情況下, 在某分中心的協同工作,特別是不同地理位置的用戶的就近性訪問的考慮, 以提高服務品質, 增加用戶訪問的滿意度。

方案優勢

針對某銀行的需求現狀和未來需求趨勢,考慮到該銀行數據中心的後臺是通過中間件爲基礎架構搭建起來,服務器負載均衡設備機, 並以服務器直接返回模式(DSR)將負載均衡設備接入網絡,對每一層的應用服務器進行負載均衡。該方案具有以下優勢:

1、 DSR模式爲獨有負載均衡工作模式,是專門針對如金融行業這種對高併發連接數有嚴格要求的行業開發的模式。

2、簡單快速的網絡搭建, 實現網絡拓撲零改動。

負載均衡機是提供本地服務器羣負載均衡和容錯的產品,在充分利用現有資源以及對IT基礎設施進行最小變動的前提下有效地進行流量的分配,從而提高服務器的處理性能。對客戶端而言,這一切都是透明的。

兩臺服務器負載均衡機做爲一組, 對應用服務器提供負載均衡服務, 並且互爲備份,採用“心跳”技術實時監控夥伴設備的同時, 也實現了負載均衡設備的負載均衡。能夠避免SPOF和單點瓶頸的問題, 最大限度地發揮負載均衡的能力。

採用負載均衡系列產品處理多ISP的多網段IP地址的情況, 由該產品全權處理有關DNS解析和多數據中心的多ISP接入鏈路問題。開啓該產品的健康檢查功能, 檢查兩個或多個數據中心的服務狀況, 以確保用戶的正常訪問。DNS服務器分別接在接入路由器上,負責用戶的DNS訪問請求。引導用戶使用最快的鏈路進行訪問站點。同時,負載均衡機負責檢查線路的健康狀態,一旦檢測到線路的中斷,則停止相應線路的地址解析。

 

IPTV系統

編輯

華燈初上的時候,打開電視機,點播一個你愛看的電影,電影頃刻間就開演了!你可否想過,和你一樣點播電視節目的有千家萬戶,爲什麼每家每戶想看的節目都能及時送到眼前呢?這是怎麼做到的呢?

在電視上點播節目是一種IPTV業務,被點播的電影、電視劇等節目我們稱爲內容。向衆多用戶提供內容是由一個專門的網絡完成的,這個網絡我們叫它內容分發網絡(CDN),我們將這個分發網絡上負責給電視傳送內容的服務器叫做CDN節點(CDN node)。

在網絡建設之初、IPTV用戶還較少的時候,這個網絡並不龐大,可能一臺設備就能輕鬆處理完全部用戶的要求。然而隨着業務的發展,用戶量和業務量與日俱增,一臺設備已經招架不住了。這時我們就需要給這臺設備找些幫手。於是我們爲這臺設備“克隆”一些兄弟,然後將用戶的要求分攤給所有兄弟,大家一起共同面對。對於這個網絡來說,大家要完成的任務即是負載,如此多隊員的合作以及團隊運作,即是負載均衡。

從單兵作戰到團隊作戰 從單兵作戰到團隊作戰

大家合作,處理業務的能力是夠了,但是任務來了後究竟由誰來處理呢?隊員們會不會都不知道應該做什麼?會不會都搶着做而打起來?因此必須要有一個領隊(CDN Manager)來管理他們,指揮他們誰應該做什麼、要達到什麼樣的目的。在向各隊員發出指示之前,領隊需要首先統一接收任務,然後分析並分解任務、挑選合適的隊員(CDN node)來執行任務,再將任務安排下去由合適的隊員具體來執行。由此可見,領隊可下了一番功夫的呢!在領隊的合理安排下,隊員們都有條不紊地執行任務,不會出現有的太閒而有的過忙的現象,“CDN團隊”融洽高效地完成了任務。

那麼領隊如何決定把某個任務或子任務分給哪個隊員呢?領隊的決定可不是隨意做出的,而是相當謹慎且科學的。原來啊,領隊是依據一些策略來做出決定的。這些策略包括用戶的網絡地址、用戶的分組、先到先得規則等。

根據這些策略,領隊可以把一個大任務分解成多個子任務,讓每個隊員執行其中一個小任務,大家完成後由領隊彙總,達到完成大任務的目的,這樣這個任務就會執行得很快;領隊也可以把一批任務中的每一個任務分散到每個隊員去分頭執行,由隊員直接完成這些任務,這樣這批任務也會執行得很快。大規模的CDN網絡通常是一級一級、一層一層的,我們叫它分佈式網絡,相鄰的層級之間形成依賴和備份關係。而你點播的節目最終通常由最靠近你的CDN節點送達你的電視機,這就是爲什麼節目總是那麼及時地開演。當最靠近你的CDN節點出現故障或者服務能力無法提供服務時,領隊能夠根據依賴和備份策略選取其他合適的節點提供服務。

從均衡所覆蓋的範圍角度,負載均衡又分全局負載均衡和本地負載均衡。

全局負載均衡和本地負載均衡是兩個相對的概念。前者關注的是一個網絡的整體,是對放在不同位置、爲完成同一個任務的設備羣體做負載均衡,是宏觀上的;後者關注的是網絡個體,是對一個地理位置上的設備羣做負載均衡或者對某一個設備內部的具有相同功能的多個模塊做負載均衡,是微觀的。

IPTV系統中的本地負載均衡特指某個節點內部的負載均衡,即當某個節點內部存在多個提供相同功能的單板時,會有至少一個管理單板擔任該本地負載均衡的領隊,帶領這個小團隊完成上級下發的任務。

全局負載均衡分佈式架構(網絡規模大) 全局負載均衡分佈式架構(網絡規模大)

大規模網絡中,局部的本地負載均衡 大規模網絡中,局部的本地負載均衡

說到這裏,大家應該明白了,負載均衡就是團隊運作。爲了一個共同的團隊目標,位於不同位置上“隊員”們在領隊的統一調度下,協同工作,將大的任務相對平均地分擔起來,把任務完成的更快、更好!在整個網絡這個大範圍內的負載均衡是全局負載均衡,局部的小範圍內的負載均衡是本地負載均衡。

 

 

 

 

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