View a markdown version of this page

PERF04-BP04 使用負載平衡將流量分配到多個資源 - AWS Well-Architected 架構

PERF04-BP04 使用負載平衡將流量分配到多個資源

在多個資源或服務之間分配流量,以讓您的工作負載能夠利用雲端提供的彈性。您也可以使用負載平衡來卸載加密終止,以提升效能、可靠性,以及有效管理和路由流量。

常見的反模式:

  • 您在選擇負載平衡器類型時未考慮工作負載需求。

  • 您未利用負載平衡器功能來進行效能最佳化。

  • 工作負載在不使用負載平衡器的情況下,直接公開到網際網路。

  • 您可以透過現有的負載平衡器路由所有網際網路流量。

  • 您可以使用一般 TCP 負載平衡,並讓每個運算節點處理 SSL 加密。

建立此最佳實務的優勢: 負載平衡器會處理單一可用區域中或跨多個可用區域的應用程式流量不同的負載,並實現高可用性、自動擴展及更充分利用您的工作負載。

未建立此最佳實務時的曝險等級:

實作指引

負載平衡器會做為您的工作負載的進入點,從該處將您的流量分散到後端目標,例如運算執行個體或容器,以提高使用率。

選擇正確的負載平衡器類型是最佳化架構的第一步。從列出您的工作負載特性開始,例如通訊協定 (例如 TCP、HTTP、TLS 或 WebSockets)、目標類型 (例如執行個體、容器或無伺服器)、應用程式要求 (例如長時間執行連線、使用者身分驗證或黏性) 和置放 (例如 Region、Local Zone、Outpost 或區域隔離)。

AWS 為您的應用程式提供了多種模型來使用負載平衡。Application Load Balancer 最適合 HTTP 和 HTTPS 流量的負載平衡,並提供了針對現代應用程式架構 (包括微型服務和容器) 交付的進階請求路由。

Network Load Balancer 最適合需要極高效能的 TCP 流量的負載平衡。它能夠每秒處理數百萬個請求,同時保持超低延遲性,並且還進行優化,可處理突發的和不穩定的流量模式。

Elastic Load Balancing 提供整合的憑證管理和 SSL/TLS 解密,讓您能夠靈活地集中管理負載平衡器的 SSL 設定,並從工作負載中卸載 CPU 密集型工作。

選擇正確的負載平衡器之後,您可以開始利用其功能來減少後端為流量提供服務所需投入的工作量。

例如,同時使用 Application Load Balancer (ALB) 和 Network Load Balancer (NLB),您可以執行 SSL/TLS 加密卸載,這是避免您的目標完成 CPU 密集型 TLS 交握,並且改善憑證管理的機會。

在您的負載平衡器中設定 SSL/TLS 卸載時,它會負責將往返用戶端的流量進行加密,同時將未加密的流量交付給您的後端,釋放您的後端資源並且改善用戶端的回應時間。

Application Load Balancer 也可以為 HTTP/2 流量提供服務,不需要在您的目標上支援它。這個簡單的決策可以改善您的應用程式回應時間,因為 HTTP/2 更有效率地使用 TCP 連線。

定義架構時,應考慮您的工作負載延遲要求。例如,如果您有對延遲敏感的應用程式,您可能會決定使用 Network Load Balancer,以獲得極低的延遲。另外,您可能會決定讓工作負載更靠近您的客戶,也就是利用 Application Load Balancer ( AWS Local Zones 中) 或甚至是 AWS Outposts

對延遲敏感的工作負載的另一個考慮是跨區域負載平衡。使用跨區域負載平衡,每個負載平衡器節點會將已註冊目標之間的流量分散到所有允許的可用區域中。

使用與您的負載平衡器整合的 Auto Scaling。效能效率系統的其中一個關鍵層面與適當調整後端資源的規模有關。若要完成此操作,您可以利用後端目標資源的負載平衡器整合。使用與 Auto Scaling 群組整合的負載平衡器,目標會視需要從負載平衡器新增或移除,以因應傳入流量。負載平衡器也可以與 Amazon ECSAmazon EKS 整合,以提供容器化工作負載。

實作步驟

  • 定義您的負載平衡需求,包括理想的資料量、可用性和應用程式可擴展性。

  • 為您的應用程式選擇正確的負載平衡器類型。

    • 針對 HTTP/HTTPS 工作負載使用 Application Load Balancer。

    • 針對在 TCP 或 UDP 上執行的非 HTTP 工作負載使用 Network Load Balancer。

    • 使用兩者的組合 (ALB 做為 NLB 的目標),這樣就能利用兩種產品的功能。例如,如果您想要搭配使用 NLB 的靜態 IP 與來自 ALB 的 HTTP 標題型路由,或者如果您想要將您的 HTTP 工作負載公開到  AWS PrivateLink就可以這麼做。

    • 如需負載平衡器的完整比較,請參閱 ELB 產品比較

  • 盡可能使用 SSL/TLS 卸載。

  • 選取正確的路由演算法 (僅 ALB)。

    • 路由演算法可以造成您的後端目標的妥善使用程度和它們影響效能程度的差異。例如,ALB 提供 兩個路由演算法的選項

    • 最低未解決請求: 針對應用程式的請求因複雜性而異,或目標因處理功能而異的情況,用來讓負載更妥善地分散到您的後端目標。

    • 輪詢均衡: 當請求和目標類似,或是如果您需要在目標之間平均分散請求時使用。

  • 考慮跨區域或區域隔離。

  • 為您的 HTTP 工作負載開啟 HTTP keep-alives (僅 ALB)。使用這項功能,負載平衡器可以重複使用後端連線,直到 keep-alive 逾時到期,改善您的 HTTP 請求和回應時間,同時減少您的後端目標上的資源使用率。如需如何針對 Apache 和 Nginx 執行此操作的詳細資訊,請參閱 使用 Apache 或 NGINX 做為 ELB 的後端伺服器的最佳設定是什麼?

  • 開啟負載平衡器的監控功能。

    • 為您的 Application Load Balancer 和 Network Load Balancer開啟存取日誌。

    • 針對 ALB 要考慮的主要欄位是 request_processing_time, request_processing_time,和 response_processing_time

    • 針對 NLB 要考慮的主要欄位是 connection_time 和 tls_handshake_time

    • 請準備好在您需要日誌時進行查詢。您可以使用 Amazon Athena 同時查詢 ALB 日誌 和 NLB 日誌

    • 建立效能相關指標的警示,例如 TargetResponseTime (適用 ALB)

資源

相關文件:

相關影片:

相關範例: