使用 AWS ELB 進行負載均衡

大家好! 課程今天開始 “面向開發人員的 AWS”,為此我們舉辦了相應的專題網路研討會,專門討論 ELB 審查。 我們研究了平衡器的類型並創建了多個具有平衡器的 EC2 執行個體。 我們也研究了其他使用範例。

使用 AWS ELB 進行負載均衡

聽完網路研討會後, 你會:

  • 了解什麼是 AWS 負載平衡;
  • 了解彈性負載平衡器的類型及其組件;
  • 在您的實務中使用 AWS ELB。

為什麼你需要知道這一點?

  • 如果您打算參加 AWS 認證考試,這很有用;
  • 這是在伺服器之間分配負載的簡單方法;
  • 這是將 Lambda 新增至您的服務 (ALB) 的簡單方法。

舉辦公開課 里沙特·捷列古洛夫,一家行銷公司的系統工程師,負責網站開發和支援。

介紹

下圖顯示了一個簡單的範例,可以看出什麼是彈性負載平衡器:

使用 AWS ELB 進行負載均衡

負載平衡器接受請求並跨執行個體分發它們。 我們有一個單獨的實例,有 Lambda 函數,還有一個 AutoScaling 群組(一組伺服器)。

AWS ELB 類型

1.我們先來看看主要的類型:

經典負載平衡器。 AWS 的第一個負載平衡器適用於 OSI 第 4 層和第 7 層,支援 HTTP、HTTPS、TCP 和 SSL。 它提供跨多個 Amazon EC2 執行個體的基本負載平衡,並在請求和連線層級上運作。 讓我們打開它(以灰色突出顯示):

使用 AWS ELB 進行負載均衡

該平衡器被認為已過時,因此建議僅在某些情況下使用。 例如,對於在 EC2-Classic 網路上建置的應用程式。 原則上,沒有人阻止我們創建它:

使用 AWS ELB 進行負載均衡

2.網路負載平衡器。 適合繁重的工作負載,在 OSI 第 4 層運作(可在 EKS 和 ECS 中使用),支援 TCP、UDP 和 TLS。

網路負載平衡器將流量路由到 Amazon VPC 中的目標,並且能夠以超低延遲每秒處理數百萬個請求。 此外,它還經過最佳化,可以處理突然變化的負載的流量模式。

3.應用程式負載平衡器。 工作在第 7 層,具有 Lambda 支持,支援標頭和路徑級別規則,支援 HTTP 和 HTTPS。
提供進階請求路由,專注於交付基於現代架構(包括微服務和容器)建構的應用程式。 根據請求的內容將流量導向至 Amazon VPC 中的目標。

對於許多使用者來說,Application Load Balancer 是替代 Classic Load Balancer 的首選,因為 TCP 不像 HTTP 那麼常見。

讓我們也創建它,這樣我們就已經有了兩個負載平衡器:

使用 AWS ELB 進行負載均衡

負載平衡組件

常見負載平衡元件 (所有平衡器通用):

  • 訪問日誌策略

— 您的 ELB 存取日誌。 要進行設置,您可以轉到“描述”並選擇“編輯屬性”按鈕:

使用 AWS ELB 進行負載均衡

然後我們指定S3Bucket - Amazon物件儲存:

使用 AWS ELB 進行負載均衡

  • 方案

— 內部或外部平衡器。 關鍵是您的負載平衡器是否必須接收外部位址才能從外部訪問,或者它可以是您的內部負載平衡器;

  • 安全組

— 平衡器的存取控制。 本質上,這是一個高級防火牆。

使用 AWS ELB 進行負載均衡

使用 AWS ELB 進行負載均衡

  • 子網路

— VPC 內的子網路(以及對應的可用區域)。 子網路是在建立期間指定的。 如果 VPC 受區域限制,則子網路受可用區限制。 建立負載平衡器時,最好在至少兩個子網路中建立它(如果一個可用區出現問題會有所幫助);

  • 聽眾

- 你的平衡器協議。 如前所述,對於 Classic Load Balancer,它可以是 HTTP、HTTPS、TCP 和 SSL;對於 Network Load Balancer,它可以是 TCP、UDP 和 TLS;對於 Application Load Balancer,它可以是 HTTP 和 HTTPS。

經典負載平衡器範例:

使用 AWS ELB 進行負載均衡

但在應用程式負載平衡器中,我們看到略有不同的介面和通常不同的邏輯:

使用 AWS ELB 進行負載均衡

負載平衡器 v2 組件(ALB 和 NLB)

現在讓我們仔細看看版本 2 平衡器應用程式負載平衡器和網路負載平衡器。 這些平衡器有自己的組件特性。 例如,出現了Target Groups這樣的概念-實例(和函數)。 借助此元件,我們有機會指定我們希望將流量引導至哪些目標群組。

使用 AWS ELB 進行負載均衡

使用 AWS ELB 進行負載均衡

簡而言之,在目標群組中,我們指定流量將來自的實例。 如果在同一個 Classic Load Balancer 中,您只需立即將強度連接到平衡器,那麼在 Application Load Balancer 中,您首先:

  • 建立負載平衡器;
  • 建立目標組;
  • 透過所需的連接埠或負載平衡器規則直接到達所需的目標群組;
  • 在目標群組中您指派實例。

這個操作邏輯看似比較複雜,但其實比較方便。

下一個組件是 監聽器規則 (路由規則)。 這僅適用於應用程式負載平衡器。 如果在網路負載平衡器中,您只需建立一個監聽器,並將流量傳送到特定的目標群組,那麼在應用程式負載平衡器中,一切 更有趣更方便.

使用 AWS ELB 進行負載均衡

現在讓我們來談談下一個元件 - 彈性IP (NLB 的靜態位址)。 如果路由規則偵聽器規則僅影響應用程式負載平衡器,則彈性 IP 僅涉及網路負載平衡器。

讓我們建立一個網路負載平衡器:

使用 AWS ELB 進行負載均衡

使用 AWS ELB 進行負載均衡

就在創建過程中,我們將看到有機會選擇彈性IP:

使用 AWS ELB 進行負載均衡

彈性 IP 提供單一 IP 位址,隨著時間的推移,該位址可以與不同的 EC2 執行個體關聯。 如果 EC2 執行個體具有彈性 IP 位址且該執行個體已終止或停止,您可以立即將新的 EC2 執行個體與彈性 IP 位址關聯。 但是,您目前的應用程式不會停止運作,因為即使真實的 EC2 已更改,應用程式仍然會看到相同的 IP 位址。

這裡 另一個用例 關於為什麼需要彈性 IP 的主題。 看,我們看到 3 個 IP 位址,但它們不會永遠留在這裡:

使用 AWS ELB 進行負載均衡

亞馬遜會隨著時間的推移更改它們,可能每 60 秒更改一次(當然,實際上,頻率較低)。 這意味著 IP 位址可以更改。 對於網路負載平衡器,您只需綁定一個 IP 位址並在您的規則、策略等中指明它。

使用 AWS ELB 進行負載均衡

得出結論

ELB 提供跨多個目標(容器、Amazon EC2 執行個體、IP 位址和 Lambda 函數)自動分配傳入流量。 ELB 能夠在單一可用區內和跨多個可用區分配具有不同負載的流量。 使用者可以從三種類型的平衡器中進行選擇,這些平衡器提供高可用性、自動縮放和良好的保護。 所有這些對於確保應用程式的容錯能力都很重要。

主要優點:

  • 高可用性。 此服務協定假定負載平衡器的可用性為 99,99%。 例如,多個可用區域可確保流量僅由健康的物件處理。 事實上,您可以平衡整個區域的負載,將流量重新導向到不同可用區域的健康目標;
  • 安全。 ELB 與 Amazon VPC 搭配使用,提供各種安全功能 - 整合式憑證管理、使用者驗證和 SSL/TLS 解密。 所有這些都提供了 TLS 設定的集中且靈活的管理;
  • 彈性。 ELB可以處理網路流量的突然變化。 並且與 Auto Scaling 深度集成,在負載變化時為應用程式提供足夠的資源,無需人工幹預;
  • 靈活性。 您可以使用 IP 位址將請求路由到應用程式的目標。 這在虛擬化目標應用程式時提供了靈活性,從而能夠在單一執行個體上託管多個應用程式。 由於應用程式可以使用單一網路連接埠並具有單獨的安全群組,因此當我們擁有基於微服務的架構時,應用程式之間的通訊就會簡化;
  • 監控和審計。 您可以使用 Amazon CloudWatch 功能即時監控應用程式。 我們談論的是指標、日誌、請求追蹤。 簡單來說,您將能夠非常準確地識別問題並找出效能瓶頸;
  • 混合負載平衡。 使用相同負載平衡器在本機資源和 AWS 之間進行負載平衡的能力可讓您輕鬆地將本機應用程式遷移或擴展到雲端。 使用雲端也簡化了故障處理。

如果您對詳細資訊感興趣,這裡有來自亞馬遜官方網站的一些更有用的連結:

  1. 彈性負載平衡.
  2. 彈性負載平衡功能。

來源: www.habr.com

添加評論