目標群組運作狀態 - Elastic Load Balancing

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

目標群組運作狀態

依預設,只要目標群組至少有一個運作狀態良好的目標,就會被視為運作狀態良好。如果您擁有龐大的機群,則只有一個運作狀態良好的目標服務流量是不夠的。相反地,您可以指定必須為運作狀態良好的目標最小計數或百分比,以及當運作狀態良好目標低於指定臨界值時,負載平衡器會採取哪些動作。這提高了可用性。

運作運作狀態不佳

您可以針對下列動作設定運作狀態良好的臨界值:

  • DNS 備援 — 當區域中運作狀態良好的目標低於閾值時,我們會在 DNS 中將區域的負載平衡器節點 IP 地址標記為運作狀態不佳。因此,當用戶端解析負載平衡器 DNS 名稱時,流量只會路由至運作狀態良好的區域。

  • 路由容錯移轉 — 當區域中運作狀態良好的目標低於臨界值時,負載平衡器會將流量傳送至負載平衡器節點可用的所有目標,包括運作狀態不良的目標。這會增加用戶端連線成功的機會,尤其是當目標暫時無法通過運作狀態檢查時,並降低運作狀態良好目標超載的風險。

需求和考量事項

  • 您無法在目標為 Lambda 函數的目標群組中使用此功能。如果 Application Load Balancer 是 Network Load Balancer 或 Global Accelerator 的目標,請勿設定 DNS 備援的閾值。

  • 如果您為動作指定兩種類型的閾值 (計數和百分比),則當違反任一閾值時,負載平衡器都會採取動作。

  • 如果您指定這兩個動作的臨界值,DNS 備援的臨界值必須大於或等於路由容錯移轉的臨界值,以便 DNS 備援發生在路由容錯移轉或之前。

  • 如果您將臨界值指定為百分比,我們會根據向目標群組註冊的目標總數來動態計算值。

  • 目標總數取決於是關閉還是開啟跨區域負載平衡。如果關閉跨區域負載平衡,則每個節點只會將流量傳送到其自身區域中的目標,這代表臨界值會分別套用至每個已啟用區域中的目標數目。如果跨區域負載平衡是開啟狀態,則每個節點會將流量傳送到所有已啟用區域中的所有目標,這代表會對所有已啟用區域中的目標總數套用此閾值。

  • 透過 DNS 備援,我們會從負載平衡器的 DNS 主機名稱中移除運作狀態不佳區域的 IP 地址。不過,本機用戶端 DNS 快取可能會包含這些 IP 位址,直到 DNS 記錄中的 time-to-live (TTL) 到期 (60 秒) 為止。

  • 發生 DNS 備援時,這會影響與負載平衡器關聯的所有目標群組。確保剩餘區域中有足夠的容量來處理這些額外的流量,尤其是在跨區域負載平衡關閉的情況下。

  • 使用 DNS 備援時,如果將所有負載平衡器區域視為運作狀態不佳,負載平衡器會將流量傳送到所有區域,包括運作狀態不佳的區域。

  • 除了是否有足夠運作狀態良好的目標可能導致 DNS 備援之外,還有其他因素,例如區域的運作狀況。

監控

若要監視目標群組的健全狀況,請參閱目標群組健全狀況的CloudWatch 指標

範例

以下範例示範如何套用目標群組運作狀態設定。

案例
  • 支援 A 和 B 兩個可用區域的負載平衡器

  • 每個可用區域包含 10 個已註冊目標

  • 目標群組具有下列目標群組運作狀態設定:

    • DNS 備援 - 50%

    • 路由容錯移轉 - 50%

  • 可用區域 B 中有六個目標失敗

如果停用跨區域負載平衡
  • 每個可用區域中的負載平衡器節點只能將流量傳送到其可用區域中的 10 個目標。

  • 可用區域 A 中有 10 個運作狀態良好的目標,符合運作狀態目標的必要百分比。負載平衡器會繼續在 10 個運作狀態良好的目標之間分配流量。

  • 可用區域 B 中只有 4 個運作狀態良好的目標,這是可用區域 B 中負載平衡器節點目標的 40%,因為小於運作狀態良好目標的必要百分比,所以負載平衡器會採取下列動作:

    • DNS 備援 - 可用性區域 B 在 DNS 中標示為運作狀態不良。由於用戶端無法將負載平衡器名稱解析為可用區域 B 中的負載平衡器節點,且可用區域 A 運作狀態良好,因此用戶端會將新的連線傳送至可用區域 A。

    • 路由容錯移轉 - 當新連線明確傳送至可用區域 B 時,負載平衡器會將流量分配給可用性區域 B 中的所有目標,包括運作狀態不佳的目標。這樣可以防止剩餘運作狀態良好的目標中斷。

如果啟用跨區域負載平衡
  • 每個負載平衡器節點都可以將流量傳送到兩個可用區域的所有 20 個已註冊目標。

  • 可用區域 A 中有 10 個運作狀態良好的目標,而可用區域 B 中有 4 個運作狀態良好的目標,總共有 14 個運作狀態良好目標。這是兩個可用區域中負載平衡器節點目標的 70%,符合運作狀態良好目標的必要百分比。

  • 負載平衡器會在兩個可用區域中 14 個運作狀況良好的目標之間分配流量。

修改目標群組運作狀態良好設定

您可以依照下列方式修改目標群組的目標群組運作狀況設定。

若要使用主控台修改目標群組的運作狀態設定
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

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

  4. 屬性索引標籤中,選擇編輯

  5. 檢查是否開啟或關閉跨區域負載平衡。視需要更新此設定,以確保您有足夠的容量可在區域發生故障時處理額外的流量。

  6. 展開目標群組運作狀況需求

  7. 針對組態類型,建議您選擇統一組態,這兩個動作都會設定相同的臨界值。

  8. 對於狀態良好的狀態要求,請執行下列其中一項:

    • 選擇最小運作狀況目標計數,然後輸入從 1 到目標群組目標數目上限的數字。

    • 選擇最小狀態良好目標百分比,然後輸入 1 到 100 之間的數字。

  9. 選擇儲存變更

若要使用 AWS CLI 修改目標群組的運作狀態設定

使用 modify-target-group-attributes 命令。下列範例會將兩個運作狀態不佳的動作的運作狀態良好閾值設定為 50%。

aws elbv2 modify-target-group-attributes \ --target-group-arn arn:aws:elasticloadbalancing:region:123456789012:targetgroup/my-targets/73e2d6bc24d8a067 \ --attributes Key=target_group_health.dns_failover.minimum_healthy_targets.percentage,Value=50 \ Key=target_group_health.unhealthy_state_routing.minimum_healthy_targets.percentage,Value=50

針對您的負載平衡器使用 Route 53 DNS 備援

如果您使用 Route 53 將 DNS 查詢路由傳送到負載平衡器,您也可以使用 Route 53 設定負載平衡器的 DNS 備援。在容錯移轉組態中,Route 53 會檢查負載平衡器的目標群組目標的運作狀態,以判斷是否可用。如果沒有負載平衡器註冊的狀態良好目標,或者負載平衡器本身運作狀態不佳,Route 53 會將流量路由到另一可用資源,例如運作狀態良好的負載平衡器或 Amazon S3 中的靜態網站。

例如,假設您有一個 www.example.com Web 應用程式,而且您需要在後方執行兩個負載平衡器備援執行個體,位於不同的區域。您希望流量在一個區域主要路由到負載平衡器,而且您想要在其他區域使用負載平衡器,以供失敗時備份。如果您設定 DNS 容錯移轉,您可以指定您的主要和次要 (備份) 負載平衡器。Route 53 會引導流量到可用的主要負載平衡器,或是次要負載平衡器。

使用「評估目標運作狀態」
  • 如果 Application Load Balancer 別名記錄上的「評估目標運作狀態」設定為 Yes,Route 53 會評估 alias target 值所指定資源的運作狀態。如果是 Application Load Balancer,Route 53 會使用與負載平衡器關聯的目標群組運作狀態檢查。

  • 如果 Application Load Balancer 中所有的目標群組運作狀態都是良好,Route 53 會將別名記錄標記為運作狀態良好。如果目標群組包含至少一個運作狀態良好的目標,則目標群組的運作狀態檢查會通過。之後,Route 53 會根據您的路由政策傳回記錄。如果使用容錯移轉路由政策,則 Route 53 會傳回主要記錄。

  • 如果 Application Load Balancer 中有任何目標群組運作狀態不佳,則別名記錄不會通過 Route 53 運作狀態檢查 (故障開啟)。如果使用「評估目標運作狀態」,這將使容錯移轉路由政策失敗。

  • 如果 Application Load Balancer 中的所有目標群組都是空的 (沒有目標),則 Route 53 會將記錄視為運作狀態不佳 (故障開啟)。如果使用「評估目標運作狀態」,這將使容錯移轉路由政策失敗。

如需詳細資訊,請參閱 Amazon Route 53 開發人員指南中的設定 DNS 容錯移轉