負載平衡

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

(重定向自负载均衡)

負載平衡(Load Balancing)

目錄

什麼是負載平衡

  負載平衡是指劃分多台電腦間必須完成的任務量,以便在同樣時間完成更多工作,並且所有用戶都能得到快速地服務。負載平衡可以通過硬體、軟體或兩者的組合實行。通常,負載平衡是電腦伺服器分組的主要原因。

  在互聯網上,那些有大流量的公司通常會使用負載平衡。有幾種方法可以使網路流量負載平衡。對於Web服務來說,一種方法是將各個請求轉向DNS表裡每個不同的主機地址。通常,如果兩台伺服器需要使用平衡工作負擔,需要第三台伺服器是來確定工作分配給哪台伺服器。由於負載平衡需要多台伺服器,它通常與故障轉移和備份服務結合使用。在一些方法里,伺服器被分佈在不同的地理位置。

  負載平衡最重要的一個應用是利用多台伺服器提供單一服務,這種方案有時也稱之為伺服器農場。通常,負載平衡主要應用於Web網站,大型的Internet Relay Chat網路,高流量的文件下載網站,NNTP(Network News Transfer Protocol)服務和DNS服務。現在負載平衡器也開始支持資料庫服務,稱之為資料庫負載平衡器。

  對於互聯網服務,負載平衡器通常是一個軟體程式,這個程式偵聽一個外部埠,互聯網用戶可以通過這個埠來訪問服務,而作為負載平衡器的軟體會將用戶的請求轉發給後臺內網伺服器,內網伺服器將請求的響應返回給負載平衡器,負載平衡器再將響應發送到用戶,這樣就向互聯網用戶隱藏了內網結構,阻止了用戶直接訪問後臺(內網)伺服器,使得伺服器更加安全,可以阻止對核心網路棧和運行在其它埠服務的攻擊。

  當所有後臺伺服器出現故障時,有些負載平衡器會提供一些特殊的功能來處理這種情況。例如轉發請求到一個備用的負載平衡器、顯示一條關於服務中斷的消息等。負載平衡器使得IT團隊可以顯著提高容錯能力。它可以自動提供大量的容量以處理任何應用程式流量的增加或減少。

負載平衡的原理

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

  此種負載平衡是當前多WAN口路由器的帶寬匯聚技術基礎,以欣向路由器為例:

  多WAN路由器實現的是業界先進的動態負載平衡機制,多WAN口動態負載平衡技術可以在使用多條線路的情況下動態分配內網的數據流量,動態的實現帶寬匯聚的功能,採用特有的三種負載平衡機制:

  1、Session:所有啟用的WAN口,採用均分session的方式工作。

  如第一個連接session通過WAN1口流出,則下一個session自動選擇WAN2流出,第三個session選擇WAN3口流出(假設所有WAN口都啟用)

  這種方式適用於多條相同帶寬的線路捆綁時使用。

  2、這種方式適用於多條不同帶寬的線路能夠更好的協同工作。例如:WAN1口接一條512K的ADSL,WAN2口接2M的光纖,這種情況下我們就可以把比例設為1:4,這樣能夠充分利用兩條線路的帶寬

  3、Traffic:按數據流量分配負載,系統自動選擇流量最小的WAN口作為出口

  此種方式適用於線路不穩定時的多條線路混用的情況。在某一條線路暫時不通或者線路不穩定的情況下會把流量自動分配到另一條穩定的線路上。但在多條線路穩定的情況下不建議使用這種方式。

  有了這三種負載平衡使得路由器可以靈活的應對多種線路混用的複雜情況,支持多種線路混接,支持多種協議,能夠滿足多種複雜應用。

負載平衡的優點

  第一,網路負載平衡能將傳入的請求傳播到多達32台伺服器上,即可以使用最多32台伺服器共同分擔對外的網路請求服務。網路負載平衡技術保證即使是在負載很重的情況下,伺服器也能做出快速響應;

  第二,網路負載平衡對外只需提供一個IP地址(或功能變數名稱);

  第三,當網路負載平衡中的一臺或幾台伺服器不可用時,服務不會中斷。網路負載平衡自動檢測到伺服器不可用時,能夠迅速在剩餘的伺服器中重新指派客戶機通訊。這項保護措施能夠幫助你為關鍵的業務程式提供不中斷的服務,並可以根據網路訪問量的增加來相應地增加網路負載平衡伺服器的數量;

  第四,網路負載平衡可在普通的電腦上實現。

負載平衡的持續性

  負載平衡器需要處理的一個重要問題是:如何保存用戶會話?如果會話信息保存在後臺伺服器,用戶接下來的請求可能會被分配到不同的後臺伺服器,此時用戶會話就無法繼續。負載平衡器可以緩存用戶會話,然後將用戶請求分發到不同的後臺伺服器。但是這將帶來負載平衡器的負載問題。

  一個解決方案是將一個用戶會話中的所有請求都發送到同一個後臺伺服器。即persistence或stickiness。這個方法的不足之處在於無法容錯failover,如果後臺伺服器故障,它提供的會話就會無法取得,任何依賴於它的會話都會丟失。這個問題通常與數據中心有關,儘管Web Service是非連結導向的,但是後端的資料庫先天上還是連結導向的。

  第二個方案是依據用戶名,客戶端IP來分配提供服務的伺服器,也可以隨機分配。因為客戶可能是通過DHCP,NAT或者Web代理來連接Internet的,其IP地址可能經常變換,這使得這個方案的服務質量無法保障。隨機分配由負載平衡器將會話信息存儲保存。如果負載平衡器被替換或故障,這些信息可會會丟失;另外(負載平衡器)負載較高的時候,為保證分配表空間不會被耗盡,超時的分配信息必須被刪除。隨機分配方法也要求客戶會維持會話狀態,如果客戶瀏覽器禁用了cookies的功能,就會引起問題。優秀的負載平衡器會使用多種持續(會話保持)技術,以避免其中某些不可以用時引起故障。

  另外一個方案是將每一會話信息保存到一個資料庫中。由於這個方案會增加資料庫的負載,所以這個方案對性能的提高並不好。資料庫最好是用來存儲會話時間比較長的會話數據。為了避免資料庫出現單點故障,並且提高其擴展性,資料庫通常會複製到多台伺服器上,通過負載平衡器來分發請求到資料庫伺服器上。微軟ASP.net中的狀態伺服器技術就是一個典型的會話資料庫的例子。集群中的所有伺服器都將它們的會話信息保存到狀態伺服器上,同時它們可以向狀態伺服器查詢會話數據。

  通常客戶瀏覽器可以保存用戶的每個會話信息。例如使用瀏覽器cookie,對數據加密並加上一個時間戳就可以保證安全了;URL重寫。將會話信息存儲在客戶端通常是首選方案,因為這樣負載平衡器就可以靈活的選擇後臺伺服器來處理用戶請求。然而這種方法不適應於一些較複雜的電子商務,因為電子商務中會話數據較大,而且需要伺服器需要經常重新處理會話信息;與此同時URL重寫由於用戶可以改變會話流數據而存在安全問題;加密客戶端cookies也一直存在著安全方面的爭議,除非所有的會話都通過HTTPS,但是HTTPS很容易遭到中間人攻擊

負載平衡的應用

  負載平衡對通訊鏈路的冗餘是非常有用的。例如,一家公司可能有多條互聯網接入線路以保證某一條故障時仍可以正常接入互聯網。

  故障轉移的架構意味著一條連接正常使用,另外一條連接作為備用,當第一條出現故障時才會被啟用。

  使用負載平衡器,兩條(多條)連接可以都投入使用。有一個設備或者程式實時監控著所有連接的連通性,並且對正在發送的包進行選路。同時使用多條連接可以增加帶寬。

  許多電信公司在其內部網路或連接到外部網路(其它電信網路)都有多條線路可以使用。為避免某條鏈路出現網路堵塞,最小化連接其它網路的費用或者提高網路的可靠性,它們使用負載平衡將流量從一條鏈路轉移到另一條鏈路

  負載平衡的另一個用途是監控網路活動。負載平衡器能用於將巨大的網路流量分割為幾個子流並使用網路分析器,每個都讀取原始數據的一部分。這對於監視10GbE, STM64高速網路非常有用,在這些網路上由於數據量太大進行複雜的數據處理幾乎是不可能的。

本條目對我有幫助4
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目

本条目由以下用户参与贡献

Tracy,苏青荇.

評論(共0條)

提示:評論內容為網友針對條目"負載平衡"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

打开APP

以上内容根据网友推荐自动排序生成