平衡 Layer 的負載 - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

平衡 Layer 的負載

重要

AWS OpsWorks Stacks 服務已於 2024 年 5 月 26 日終止,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問,請透過 AWS re:Post 或透過 AWS Premium Support 聯絡 AWS 支援 團隊。

AWS OpsWorks Stacks 提供兩種負載平衡選項:Elastic Load BalancingHAProxy,通常用於平衡應用程式伺服器層執行個體的負載。本主題說明其各自的優點和限制,幫助您在 layer 新增負載平衡時決定要選擇的選項。在某些情況下,最好的方法是兩個都使用。

SSL 終止

內建 HAProxy 層不會處理 SSL 終止;您必須在伺服器上終止 SSL。此方法的優點是會加密流量,直到它到達伺服器。不過,伺服器必須處理解密,這會增加伺服器的負載。此外,您必須將您的 SSL 憑證放在應用程式伺服器上,這讓使用者更容易存取。

使用 Elastic Load Balancing,您可以在負載平衡器終止 SSL。這可減少應用程式伺服器上的負載,但負載平衡器與伺服器之間的流量不會加密。Elastic Load Balancing 也可讓您終止伺服器上的 SSL,但設定有點複雜。

擴展

如果傳入流量超過 HAProxy 負載平衡器的容量,您就必須手動增加容量。

Elastic Load Balancing 會自動擴展以處理傳入流量。若要確保 Elastic Load Balancing 負載平衡器在第一次上線時有足夠的容量來處理預期的負載,您可以預先暖機

負載平衡器故障

如果託管您 HAProxy 伺服器的執行個體故障,您可能要讓整個網站離線,直到您可以重新啟動執行個體為止。

Elastic Load Balancing 比 HAProxy 更可抵抗故障。例如,它在每個已註冊 EC2 執行個體的可用區域中佈建負載平衡節點。如果某個區域的服務中斷,其他節點會繼續處理傳入的流量。如需詳細資訊,請參閱 Elastic Load Balancing 概念

閒置逾時

如果伺服器閒置超過指定的閒置逾時值,兩種負載平衡器都會終止連線。

  • HAProxy – 閒置逾時值沒有上限。

  • Elastic Load Balancing – 預設閒置逾時值為 60 秒,最長 3600 秒 (60 分鐘)。

Elastic Load Balancing 閒置時間限制足以用於大多數用途。如果您需要較長的閒置逾時,我們建議您使用 HAProxy。例如:

  • 推送通知所用之長時間執行的 HTTP 連線。

  • 您用來執行可能需要超過 60 分鐘任務的管理界面。

以 URL 為基礎的映射

您可能希望使用負載平衡器,根據請求的 URL 將傳入請求轉發到特定的伺服器。例如,假設您有 10 個一組的應用程式伺服器支援線上商務應用程式。八個伺服器處理型錄,兩個處理付款。您想要根據請求 URL,將所有付款相關的 HTTP 請求導向至付款伺服器。在此案例中,您會將包含「付款」或「結帳」的所有 URL 導向至其中一個付款伺服器。

透過 HAProxy,您可以使用以 URL 為基礎的映射將包含指定字串的 URL 導向到特定的伺服器。若要搭配 AWS OpsWorks Stacks 使用 URL 型映射,您必須覆寫haproxy內建技術指南中的haproxy-default.erb範本,以建立自訂 HAProxy 組態檔案。如需詳細資訊,請參閱 HAProxy 組態手冊使用自訂範本 。您不能使用以 URL 為基礎的映射處理 HTTPS 請求。HTTPS 請求已加密,所以 HAProxy 無法檢查請求 URL。

Elastic Load Balancing 對 URL 映射的支援有限。如需詳細資訊,請參閱 Elastic Load Balancing 的接聽程式組態

建議:建議您使用 Elastic Load Balancing 進行負載平衡,除非您有只能由 HAProxy 處理的需求。在這種情況下,最佳方法是使用 Elastic Load Balancing 作為前端負載平衡器,將傳入流量分佈到一組 HAProxy 伺服器,以結合兩者。若要執行此作業:

  • 設定您堆疊中每個可用區域的 HAProxy 執行個體,將請求分配到區域的應用程式伺服器。

  • 將 HAProxy 執行個體指派給 Elastic Load Balancing 負載平衡器,然後將傳入的請求分配至 HAProxy 負載平衡器。

這種方法可讓您使用以 URL 為基礎的 HAProxy 映射,將不同類型的請求分配到適當的應用程式伺服器。不過,如果其中一個 HAProxy 伺服器離線,則網站會繼續運作,因為 Elastic Load Balancing 負載平衡器會自動將傳入流量分散到運作狀態良好的 HAProxy 伺服器。請注意,您必須使用 Elastic Load Balancing 做為前端負載平衡器;HAProxy 伺服器無法將請求分發到其他 HAProxy 伺服器。