本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
平衡 Layer 的負載
重要
AWS OpsWorks Stacks 服務已於 2024 年 5 月 26 日終止,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問,請透過 AWS re:Post
AWS OpsWorks Stacks 提供兩種負載平衡選項:Elastic Load Balancing 和 HAProxy
- 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 伺服器。