目標群組的跨區域負載平衡 - Elastic Load Balancing

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

目標群組的跨區域負載平衡

負載平衡器的節點會將請求從用戶端分發到已註冊的目標。跨區域負載平衡開啟後,每個負載平衡器節點會將流量分散到所有已註冊可用區域內的已註冊目標。跨區域負載平衡關閉後,每個負載平衡器節點只會將流量分散到其可用區域內已註冊的目標。如果區域故障網域優先於地區故障網域,就可能發生此情形,以確保運作狀態良好的區域不受運作狀態不佳區域的影響,也可能是為改善整體延遲。

使用 Application Load Balancer 時,跨區域負載平衡一律會在負載平衡器層級開啟,而且無法關閉。對於目標群組,預設設定為使用負載平衡器設定,但您可以在目標群組層級明確關閉跨區域負載平衡來覆寫預設設定。

考量事項
  • 跨區域負載平衡關閉後,不支援目標粘性。

  • 跨區域負載平衡關閉後,不支援將 Lambda 函數作為目標。

  • 如果有任何目標的參數 AvailabilityZone 設定為 all,則嘗試透過 ModifyTargetGroupAttributes API 關閉跨區域負載平衡會導致錯誤。

  • 註冊目標時需要 AvailabilityZone 參數。跨區域負載平衡關閉後,僅允許特定可用區域值。否則,系統會忽略此參數並將其當作 all

最佳實務
  • 針對您預期使用的所有可用區域,為每個目標群組規劃足夠的目標容量。如果無法為所有參與的可用區域規劃足夠容量,建議將跨區域負載平衡保持開啟的狀態。

  • 如果 Application Load Balancer 設定有多個目標群組,請確定所有目標群組都在設定的區域內參與相同的可用區域。這是為了避免跨區域負載平衡關閉後可用區域變成空白的狀態,因為這會對進入空白可用區域的所有 HTTP 請求觸發 503 錯誤。

  • 避免建立空白子網路。Application Load Balancer 會透過 DNS 公開空白子網路的區域 IP 地址,這會針對 HTTP 請求觸發 503 錯誤。

  • 還可能會發生這種情況:關閉跨區域負載平衡的目標群組為每個可用區域都計劃有足夠的目標容量,但可用區域中的所有目標都變成運作狀態不佳。當至少一個目標群組包含的所有目標都運作狀態不佳時,就會將負載平衡器節點的 IP 地址從 DNS 移除。當目標群組具有至少一個運作狀態良好的目標之後,IP 地址就會還原到 DNS。

關閉跨區域負載平衡

您可以隨時為 Application Load Balancer 目標群組關閉跨區域負載平衡。

使用主控台關閉跨區域負載平衡
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格的負載平衡下,選取目標群組

  3. 選取目標群組的名稱,以開啟其詳細資訊頁面。

  4. 屬性索引標籤上,選取編輯

  5. 編輯目標群組屬性頁面上,針對跨區域負載平衡選取關閉

  6. 選擇儲存變更

使用 AWS CLI 關閉跨區域負載平衡

使用 modify-target-group-attributes 命令並將 load_balancing.cross_zone.enabled 屬性設為 false

aws elbv2 modify-target-group-attributes --target-group-arn my-targetgroup-arn --attributes Key=load_balancing.cross_zone.enabled,Value=false

以下是回應範例:

{ "Attributes": [ { "Key": "load_balancing.cross_zone.enabled", "Value": "false" }, ] }

開啟跨區域負載平衡

您可以隨時為 Application Load Balancer 目標群組開啟跨區域負載平衡。目標群組層級的跨區域負載平衡設定會覆寫負載平衡器層級的設定。

使用主控台開啟跨區域負載平衡
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格的負載平衡下,選取目標群組

  3. 選取目標群組的名稱,以開啟其詳細資訊頁面。

  4. 屬性索引標籤上,選取編輯

  5. 編輯目標群組屬性頁面上,針對跨區域負載平衡選取開啟

  6. 選擇儲存變更

使用 AWS CLI 開啟跨區域負載平衡

使用 modify-target-group-attributes 命令並將 load_balancing.cross_zone.enabled 屬性設為 true

aws elbv2 modify-target-group-attributes --target-group-arn my-targetgroup-arn --attributes Key=load_balancing.cross_zone.enabled,Value=true

以下是回應範例:

{ "Attributes": [ { "Key": "load_balancing.cross_zone.enabled", "Value": "true" }, ] }