本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
平衡 Layer 的負載
重要
AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問,請透過 AWS re:Post
AWS OpsWorks Stacks 提供兩種負載平衡選項:Elastic Load Balancing 和 HAProxy
- SSL 終止
-
內建 HAProxy layer 不會處理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 個一組的應用程式伺服器支援線上商務應用程式。八個伺服器處理型錄,兩個處理付款。您想要根據HTTP請求 ,將所有付款相關請求導向至付款伺服器URL。在這種情況下,您可以將URLs包含「付款」或「簽出」的所有 導向至其中一個付款伺服器。
透過 HAProxy,您可以使用 URL型映射,將URLs包含指定字串的 導向至特定伺服器。若要搭配 AWS OpsWorks Stacks 使用 URL型映射,您必須覆寫
haproxy
內建技術指南中的haproxy-default.erb
範本來建立自訂HAProxy組態檔案。如需詳細資訊,請參閱HAProxy組態手冊和使用自訂範本 。您無法針對HTTPS請求使用 URL型映射。HTTPS 請求已加密,因此 HAProxy 無法檢查請求 URL。 Elastic Load Balancing 對URL映射的支援有限。如需詳細資訊,請參閱 Elastic Load Balancing 的接聽程式組態。
建議:我們建議您使用 Elastic Load Balancing 進行負載平衡,除非您有只能由 處理的需求HAProxy。在這種情況下,最佳方法是使用 Elastic Load Balancing 作為前端負載平衡器,將傳入流量分散到一組HAProxy伺服器,以結合兩者。若要執行此作業:
-
在每個堆疊的可用區域中設定HAProxy執行個體,將請求分發到區域的應用程式伺服器。
-
將HAProxy執行個體指派給 Elastic Load Balancing 負載平衡器,然後將傳入的請求分佈到HAProxy負載平衡器。
此方法可讓您使用 HAProxy的 URL型映射,將不同類型的請求分發到適當的應用程式伺服器。不過,如果其中一個HAProxy伺服器離線,則網站會繼續運作,因為 Elastic Load Balancing 負載平衡器會自動將傳入流量分散到運作狀態良好的HAProxy伺服器。請注意,您必須使用 Elastic Load Balancing 做為前端負載平衡器;HAProxy伺服器無法將請求分發給其他HAProxy伺服器。