了解 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 的特性與用途:
- 內容感知路由:
- ALB 可以根據 HTTP 路徑、主機名、HTTP 標頭或查詢字符串等內容來路由流量。例如,可以將
/api
路徑的請求轉發到後端的 API 服務,將/images
路徑的請求轉發到存儲靜態資源的伺服器。
- ALB 可以根據 HTTP 路徑、主機名、HTTP 標頭或查詢字符串等內容來路由流量。例如,可以將
- 支持 WebSocket 和 HTTP/2:
- ALB 支持 WebSocket 和 HTTP/2,這對於需要持久連接或現代化協議的應用非常有用。
- 跨多個目標類型的負載均衡:
- ALB 可以將流量分配到多種目標類型,包括 EC2 實例、容器(在 Amazon ECS 中運行)、Lambda 函數等。
- 適合微服務架構:
- ALB 是微服務架構的理想選擇,因為它可以在不同的服務之間靈活地路由流量,並提供針對每個服務的健康檢查。
ALB 的應用場景:
- 微服務架構中的流量管理。
- 需要基於 HTTP 路徑或標頭進行路由的 Web 應用。
- 需要 WebSocket 支持的即時通信應用。
2. Network Load Balancer (NLB)
Network Load Balancer (NLB) 在傳輸層(OSI 模型的第 4 層)進行負載均衡,主要根據 IP 協議和端口號來進行流量分配。NLB 的設計目的是在低延遲和高吞吐量的環境中處理大量流量。
NLB 的特性與用途:
- 超低延遲:
- NLB 提供超低延遲的網絡流量處理,因為它直接在第 4 層進行操作,不需要解碼上層協議。
- 高吞吐量:
- NLB 可以處理非常高的傳入流量,是處理大量 TCP 或 UDP 流量的理想選擇。
- 靜態 IP 支持:
- 每個 NLB 都可以有一個靜態 IP 地址,並且可以配置靜態 IP 地址,這對於需要靜態端點的應用(例如 DNS 伺服器)非常有用。
- 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 的特性與用途:
- 基本負載均衡:
- CLB 支持 HTTP/HTTPS 和 TCP 協議,並且可以根據這些協議進行簡單的負載均衡。
- 跨多個可用區進行均衡:
- CLB 能夠在多個可用區之間均衡流量,增強應用的高可用性。
- 較少的高級功能:
- 相比於 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 授權