文章

了解 ELB 的種類與用途

了解 ELB 的種類與用途

Amazon Elastic Load Balancer(ELB)是 AWS 提供的分布式負載均衡服務,用來在多個目標(如 EC2 實例、Lambda 函數、IP 地址等)之間自動分配傳入流量。ELB 可以提升應用程式的可用性、彈性與擴展性,並確保應用程式能夠有效地處理高負載。ELB 有三種類型,各自針對不同的應用場景。

1. Application Load Balancer (ALB)

Application Load Balancer (ALB) 是專門設計來在應用層(OSI 模型的第 7 層)進行負載均衡的。它根據 HTTP/HTTPS 流量的內容進行路由,因此特別適合需要基於內容的路由需求的應用。

ALB 的特性與用途:

  1. 內容感知路由
    • ALB 可以根據 HTTP 路徑、主機名、HTTP 標頭或查詢字符串等內容來路由流量。例如,可以將 /api 路徑的請求轉發到後端的 API 服務,將 /images 路徑的請求轉發到存儲靜態資源的伺服器。
  2. 支持 WebSocket 和 HTTP/2
    • ALB 支持 WebSocket 和 HTTP/2,這對於需要持久連接或現代化協議的應用非常有用。
  3. 跨多個目標類型的負載均衡
    • ALB 可以將流量分配到多種目標類型,包括 EC2 實例、容器(在 Amazon ECS 中運行)、Lambda 函數等。
  4. 適合微服務架構
    • ALB 是微服務架構的理想選擇,因為它可以在不同的服務之間靈活地路由流量,並提供針對每個服務的健康檢查。

ALB 的應用場景:

  • 微服務架構中的流量管理。
  • 需要基於 HTTP 路徑或標頭進行路由的 Web 應用。
  • 需要 WebSocket 支持的即時通信應用。

2. Network Load Balancer (NLB)

Network Load Balancer (NLB) 在傳輸層(OSI 模型的第 4 層)進行負載均衡,主要根據 IP 協議和端口號來進行流量分配。NLB 的設計目的是在低延遲和高吞吐量的環境中處理大量流量。

NLB 的特性與用途:

  1. 超低延遲
    • NLB 提供超低延遲的網絡流量處理,因為它直接在第 4 層進行操作,不需要解碼上層協議。
  2. 高吞吐量
    • NLB 可以處理非常高的傳入流量,是處理大量 TCP 或 UDP 流量的理想選擇。
  3. 靜態 IP 支持
    • 每個 NLB 都可以有一個靜態 IP 地址,並且可以配置靜態 IP 地址,這對於需要靜態端點的應用(例如 DNS 伺服器)非常有用。
  4. Preserve Source IP
    • NLB 保留客戶端的原始 IP 地址,這在需要追踪客戶端 IP 的應用中非常有用。

NLB 的應用場景:

  • 高負載、低延遲的 TCP/UDP 應用,例如遊戲伺服器、物聯網 (IoT) 應用。
  • 需要靜態 IP 地址的應用,例如 DNS 或防火牆配置。
  • 需要保持客戶端原始 IP 的應用,例如高安全性要求的企業應用。

3. Classic Load Balancer (CLB)

Classic Load Balancer (CLB) 是 AWS 提供的傳統負載均衡器,可以在應用層(第 7 層)和傳輸層(第 4 層)進行負載均衡。隨著 ALB 和 NLB 的推出,CLB 主要被用於舊系統的兼容性維護。

CLB 的特性與用途:

  1. 基本負載均衡
    • CLB 支持 HTTP/HTTPS 和 TCP 協議,並且可以根據這些協議進行簡單的負載均衡。
  2. 跨多個可用區進行均衡
    • CLB 能夠在多個可用區之間均衡流量,增強應用的高可用性。
  3. 較少的高級功能
    • 相比於 ALB 和 NLB,CLB 缺乏高級的內容感知路由和超低延遲的處理能力,因此在現代應用中使用較少。

CLB 的應用場景:

  • 現有的舊系統或需要保持向後兼容性的應用。
  • 不需要高級路由或特定協議支持的小型或中型應用。

ELB 的選擇與應用場景

  • ALB:如果您的應用需要基於內容(如 URL 路徑或查詢字符串)進行路由,或需要支持 HTTP/2 和 WebSocket,選擇 ALB。
  • NLB:如果您的應用需要極低延遲和高吞吐量的負載均衡,特別是對 TCP/UDP 流量的處理,NLB 是最佳選擇。
  • CLB:如果您運行的是較舊的應用程序,並且不需要現代的負載均衡功能,可以選擇 CLB。

總結

ELB 提供了三種類型的負載均衡器:Application Load Balancer (ALB)、Network Load Balancer (NLB) 和 Classic Load Balancer (CLB),每一種都適合不同的應用場景。ALB 適合現代 Web 應用和微服務架構,NLB 適合高負載和低延遲需求的應用,而 CLB 則主要用於支持舊系統。根據應用的具體需求選擇合適的 ELB 類型,可以顯著提升應用的性能和可用性。

本文章以 CC BY 4.0 授權