什麼是負載平衡?

負載平衡是一種將網路流量平均分配到支援應用程式的資源集區中的方法。現代應用程式必須同時處理數百萬個使用者,並以快速、可靠的方式將正確的文字、影片、影像和其他資料傳回給每個使用者。為處理如此大量的流量,大多數應用程式都有許多資源伺服器,它們之間有重複的資料。負載平衡器是一種位於使用者與伺服器群組之間的裝置,並充當不可見的促進者,確保所有資源伺服器都能均等使用。

負載平衡有哪些優勢?

負載平衡可引導並控制應用程式伺服器及其訪客或用戶端之間的網際網路流量。因此,它改善了應用程式的可用性、可擴展性、安全性和效能。

應用程式可用性

伺服器故障或維護會增加應用程式停機時間,讓訪客無法使用您的應用程式。負載平衡器會自動偵測伺服器問題並將用戶端流量重新引導至可用的伺服器,藉此提高系統的容錯能力。您可以使用負載平衡來簡化下列任務:

  • 執行應用程式伺服器維護或升級而不會出現應用程式停機時間
  • 為備份站點提供自動災難復原
  • 執行運作狀態檢查,並防止可能導致停機時間的問題

應用程式可擴展性

您可以使用負載平衡器,智慧地在多個伺服器間引導網路流量。您的應用程式可處理成千上萬個用戶端請求,因為負載平衡會執行下列操作:

  • 防止任何一個伺服器上的流量瓶頸
  • 預測應用程式流量,以便您視需新增或移除不同的伺服器
  • 為您的系統新增冗餘,以便您可以放心地擴展

應用程式安全

負載平衡器具有內建的安全功能,可為您的網際網路應用程式新增另一層安全性。它們是處理分散式拒絕服務攻擊的實用工具,攻擊者可利用數百萬個並行請求泛洪攻擊應用程式伺服器,從而導致伺服器發生故障。負載平衡器還可以執行下列動作:

  • 監控流量並封鎖惡意內容
  • 自動將攻擊流量重新引導至多個後端伺服器,以減少影響
  • 透過網路防火牆群組路由流量,以提高安全性

應用程式效能

負載平衡器透過增加回應時間並減少網路延遲,來改善應用程式效能。他們執行如下所示多項關鍵任務:

  • 在伺服器之間平均分配負載,以改善應用程式效能
  • 將用戶端請求重新引導至地理位置較近的伺服器,以減少延遲
  • 確保實體與虛擬運算資源的可靠性與效能

什麼是負載平衡演算法?

負載平衡演算法是負載平衡器遵循的規則集,以判斷適用於每個不同用戶端請求的最佳伺服器。負載平衡演算法分為兩個主要類別。

靜態負載平衡

靜態負載平衡演算法遵循固定的規則,而且獨立於目前的伺服器狀態。以下是靜態負載平衡的範例。

輪循

伺服器具有 IP 地址,可告知用戶端傳送請求的位置。IP 地址是一個很難記住的較長數字。為方便起見,網域名稱系統會將網站名稱映射至伺服器。當您在瀏覽器中輸入 aws.amazon.com 時,請求會先傳送至我們的名稱伺服器,該伺服器會將我們的 IP 地址傳回給您的瀏覽器。

採用輪循法,權威名稱伺服器會執行負載平衡,而不是專門的硬體或軟體。名稱伺服器會以依次或循環方式,傳回伺服器陣列中不同伺服器的 IP 地址。

加權輪循

採用加權輪循負載平衡,您可以根據每個伺服器的優先順序或容量指派不同的權重。權重較高的伺服器會從名稱伺服器接收更多內送應用程式流量。

IP 雜湊法

採用 IP 雜湊法,負載平衡器會在用戶端 IP 地址上執行稱為雜湊的數學運算。它會將用戶端 IP 地址轉換為數字,然後再映射至個別伺服器。

動態負載平衡 

動態負載平衡演算法會在分配流量之前,檢查伺服器的目前狀態。以下是一些動態負載平衡演算法的範例。

最少連線法

連線是用戶端與伺服器之間的開放通訊通道。當用戶端向伺服器傳送第一個請求時,它們進行身分驗證,並建立彼此之間的作用中連線。採用最少連線法,負載平衡器會檢查哪些伺服器的作用中連線最少,並將流量傳送至這些伺服器。此方法假設所有連線對於所有伺服器都需要相同的處理能力。

加權最少連線法

加權最少連線演算法假設某些伺服器可處理比其他伺服器更多的作用中連線。因此,您可以為每個伺服器指派不同的權重或容量,而且負載平衡器會將新的用戶端請求傳送至伺服器 (依容量而定) 的連線次數最少。

最短回應時間法

回應時間是伺服器處理傳入請求和傳送回應所花費的總時間。最短回應時間法結合伺服器回應時間和作用中連接,來確定最佳伺服器。負載平衡器使用此演算法,來確保為所有使用者提供更快的服務。

以資源為基礎的方法

採用以資源為基礎的方法,負載平衡器透過分析目前伺服器負載來分配流量。稱為代理程式的專用軟體會在每個伺服器上執行,並運算伺服器資源的使用量,例如其運算容量和記憶體。然後,負載平衡器會檢查代理程式是否有足夠的可用資源,再將流量分配到該伺服器。

負載平衡如何運作?

公司的應用程式通常在多個伺服器上執行。這種伺服器排列稱為伺服器陣列。使用者對應用程式的請求會先移至負載平衡器。然後,負載平衡器會將每個請求路由至伺服器陣列中最適合處理請求的單一伺服器。

負載平衡就像是經理在餐廳完成的工作。假設一間有五名服務員的餐廳。如果允許客戶選擇服務員,則一兩名服務員可能會因工作而超負荷,而其他服務員則會閒置。為了避免這種情況,餐廳經理將客戶分配給最適合為其服務的特定服務員。

負載平衡有哪些類型?

我們可將負載平衡分為三個主要類別,具體取決於負載平衡器在用戶端請求中檢查以重新引導流量的內容。

應用程式負載平衡

複雜的現代應用程式具有多個伺服器陣列,且多個伺服器專用於單一應用程式功能。應用程式負載平衡器會查看請求內容,如 HTTP 標頭或 SSL 工作階段 ID,以重新引導流量。 

例如,電子商務應用程式具有產品目錄、購物車和結帳功能。應用程式負載平衡器會將瀏覽產品的請求傳送至包含影像和視訊,但不需要維護開放連線的伺服器。相比之下,它將購物車請求傳送到可以保持許多用戶端連接並長時間保存購物車資料的伺服器。

網路負載平衡

網路負載平衡器會檢查 IP 地址和其他網路資訊,以最佳方式重新引導流量。它們會追蹤應用程式流量的來源,並且可以將靜態 IP 地址指派給多個伺服器。網路負載平衡器使用之前描述的靜態和動態負載平衡演算法,來平衡伺服器負載。

全域伺服器負載平衡

全域伺服器負載平衡會在多個地理位置分散的伺服器上進行。例如,公司可在多個資料中心、不同國家/地區,或全球的第三方雲端供應商擁有伺服器。在此情況下,本機負載平衡器會管理區域或可用區域內的應用程式負載。他們會嘗試將流量重新引導至地理位置更靠近用戶端的伺服器目的地。只有在伺服器發生故障時,才會將流量重新引導至用戶端地理區域外的伺服器。

DNS 負載平衡

採用 DNS 負載平衡,您可以將網域設定為透過網域上的資源集區來路由網路請求。網域可以對應至網站、郵件系統、列印伺服器,或其他可透過網際網路存取的服務。DNS 負載平衡有助於維護應用程式可用性,並在全球分散的資源集區中平衡網路流量。 

負載平衡技術有哪些類型?

負載平衡器具有兩種類型:硬體負載平衡器和軟體負載平衡器。

硬體負載平衡器

以硬體為基礎的負載平衡器是一種硬體設備,可安全地處理 GB 級流量,並將其重新引導至數百個不同的伺服器。您可以將其存放在資料中心,並使用虛擬化來建立多個可集中管理的數位或虛擬負載平衡器。

軟體負載平衡器

以軟體為基礎的負載平衡器是執行所有負載平衡功能的應用程式。您可以將其安裝在任何伺服器,也可以將其作為全受管第三方服務存取。

硬體平衡器與軟體負載平衡器的比較

硬體負載平衡器需要初始投資、組態設定和持續維護。您可能也不會將其用於滿載容量,如果您只購買一個來處理尖峰時間流量尖峰尤其如此。如果流量突然增加超出其目前容量,這會影響使用者,直至您能購買並設定另一個負載平衡器。

相較之下,以軟體為基礎的負載平衡器更具彈性。它們可以輕鬆地縱向擴展或縮減,並且與現代雲端運算環境更相容。隨著時間的推移,設定、管理和使用成本也更低。

AWS 如何在負載平衡方面提供協助?

Elastic Load Balancing (ELB) 是全受管負載平衡服務,可自動將傳入的應用程式流量分配到 AWS 和內部部署資源的多個目標和虛擬設備。您可以將其用於擴展現代應用程式,而無須複雜的組態或 API 閘道。您可以使用 ELB 來設定四種不同類型的軟體負載平衡器。

  • Application Load Balancer 會路由傳送 HTTP 請求的流量。

  • Network Load Balancer 會根據 IP 地址路由流量。它非常適合平衡以 TCP 和使用者資料包協定 (UDP) 為基礎的請求。

  • Gateway Load Balancer 會將流量路由至第三方虛擬設備。它非常適合以可擴展且易於管理的方式,將第三方設備 (如網路防火牆) 整合至您的網路流量中。

  • Classic Load Balancer 會將流量路由至 Amazon EC2-Classic 網路中的應用程式,這是您與其他客戶共用的單一扁平網路。

您可以根據要求選取負載平衡器。例如,全球害蟲控制品牌 Terminix 使用 Gateway Load Balancer 可提升 300% 的輸送量處理能力。Second Spectrum 是一間針對體育廣播提供人工智慧導向追蹤技術的公司,使用 AWS 負載平衡器控制器將託管成本降低了 90%。Code.org 是一間非營利組織,致力於擴充學校對電腦科學的研究,在線上編碼活動期間,使用 Application Load Balancer 高效地處理 400% 的流量尖峰。

立即建立 AWS 帳戶,開始使用負載平衡!

使用 AWS 的負載平衡後續步驟

查看額外的產品相關資源
進一步了解有關運算服務的資訊 
註冊免費帳戶

立即存取 AWS 免費方案。 

註冊 
開始在主控台進行建置

開始在 AWS 管理主控台使用 AWS 進行建置。

登入