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

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

目標群組運作狀態

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

運作運作狀態不佳

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

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

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

需求和考量事項

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

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

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

  • 目標總數取決於是關閉還是開啟跨區域負載平衡。如果關閉跨區域負載平衡,則每個節點只會將流量傳送到其自身區域中的目標,這代表臨界值會分別套用至每個已啟用區域中的目標數目。如果開啟跨區域負載平衡,則每個節點會將流量傳送到所有已啟用區域中的所有目標,這代表指定的臨界值會套用至所有已啟用區域中的目標總數。如需詳細資訊,請參閱 跨區域負載平衡

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

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

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

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

範例

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

案例
  • 支援 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

運作狀態不佳目標的連線終止

依預設,會啟用連線終止。當 Network Load Balancer 的目標未通過設定的健康狀態檢查並且被視為健康狀態不佳時,負載平衡器會終止已建立的連線,並停止將新連線路由至目標。停用連線終止後,目標仍會被視為狀況不佳且不會收到新的連線,但建立的連線會保持作用中狀態,讓它們能夠正常關閉。

您可以針對每個目標群組個別設定狀況不良目標的連線終止。

使用主控台修改連線終止設定
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

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

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

  5. 目標運作狀態不佳管理,選擇是否啟用或停用 當目標運作狀態不佳時終止連線

  6. 選擇儲存變更

若要使用修改連接終止設定 AWS CLI

使用 modify-target-group-attributes 命令搭配 target_health_state.unhealthy.connection_termination.enabled 屬性。

排水間隔不良

重要

必須先停用連線終止,才能啟用狀況不良的排水間隔。

狀態中的目標會被視為健康unhealthy.draining狀況不佳、不會接收新的連線,但會在設定的間隔內保留已建立的連線。狀態不良的連線間隔會決定目標在狀態變成unhealthy之前保持在unhealthy.draining狀態的時間長度。如果目標在健康狀態不良的連線間隔期間通過健全狀況檢查,它的狀態會healthy再次變成。如果觸發取消註冊,則目標狀態會變成,draining並開始取消註冊延遲逾時。

可以針對每個目標群組個別設定不健康的排水間隔。

使用控制台修改狀況不良的排水間隔
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

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

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

  5. 在「目標狀態不良管理」下,確定已關閉「目標狀態不良時終止連線」。

  6. 輸入「不健康的排水間隔」的值。

  7. 選擇儲存變更

若要使用修改不健康的排水間隔 AWS CLI

使用 modify-target-group-attributes 命令搭配 target_health_state.unhealthy.draining_interval_seconds 屬性。

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

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

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

使用「評估目標運作狀態」
  • 當評估目標運作狀態設定為 Network Load Balancer 在 Yes 別名記錄時,Route 53 會評估 alias target 值所指定資源的運作狀態。針對 Network Load Balancer,Route 53 會使用與負載平衡器關聯的執行個體運作狀態檢查。

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

  • 如果 Network Load Balancer 的任何目標群組運作運作狀態不佳,別名將記錄 Route 53 運作狀態檢查失敗(失敗開啟)。如果使用評估目標運作狀況,這將使容錯移轉路由政策失敗。

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

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