

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

# Gateway Load Balancer 目標群組的運作狀態檢查
<a name="health-checks"></a>

您可以利用一個或多個群組來登錄目標。只要註冊程序一完成，Gateway Load Balancer 就會開始將請求路由到新註冊的目標。註冊程序可能需要幾分鐘的時間才能完成，並開始運作狀態檢查。

Gateway Load Balancer 將定期向每個已註冊目標傳送請求以檢查其狀態。每次運作狀態檢查完成後，Gateway Load Balancer 即會關閉其為執行運作狀態檢查而建立的連線。

## 運作狀態檢查設定
<a name="health-check-settings"></a>

您將使用以下設定，為目標群組中的目標設定主動的運作狀態檢查。如果運作狀態檢查連續失敗超過 **UnhealthyThresholdCount** 指定的次數，Gateway Load Balancer 會停用該目標。當運作狀態檢查連續成功超過 **HealthyThresholdCount** 指定的次數時，Gateway Load Balancer 重新啟用該目標。


| 設定 | 說明 | 
| --- | --- | 
| **HealthCheckProtocol** | 負載平衡器在目標上執行運作狀態檢查時使用的通訊協定。可能的通訊協定包括 HTTP、HTTPS 和 TCP。預設為 TCP。 | 
| **HealthCheckPort** | Gateway Load Balancer 對目標執行運作狀態檢查時使用的連接埠。範圍介於 1 至 65535 之間。預設值為 80。 | 
| **HealthCheckPath** | 【HTTP/HTTPS 運作狀態檢查】 運作狀態檢查目標上的運作狀態檢查路徑。預設為 /. | 
| **HealthCheckTimeoutSeconds** | 以秒為單位的時間量，若目標在此期間內毫無回應即表示運作狀態檢查失敗。範圍介於 2 至 120 之間。預設值為 5。 | 
| **HealthCheckIntervalSeconds** | 個別目標每次執行運作狀態檢查的大約間隔時間量，以秒為單位。範圍介於 5 至 300 之間。預設為 10 秒。該值必須大於或等於 **HealthCheckTimeoutSeconds**。 Gateway Load Balancer 的運作狀態檢查為分散式，採用共識機制判定目標的運作狀態。因此，您應該期望目標應用裝置在設定的時間間隔內收到數個運作狀態檢查。  | 
| **HealthyThresholdCount** | 將運作狀態不佳的目標視為運作狀態良好之前，運作狀態檢查需連續成功的次數。範圍介於 2 至 10 之間。預設值為 5。 | 
| **UnhealthyThresholdCount** | 將目標視為運作狀態不佳之前，運作狀態檢查需連續失敗的次數。範圍介於 2 至 10 之間。預設為 2。 | 
| **Matcher** | [HTTP/HTTPS 運作狀態檢查] 檢查來自目標的成功回應時所使用的 HTTP 代碼。此值必須為 200-399。 | 

## 目標運作狀態
<a name="target-health-states"></a>

在 Gateway Load Balancer 向目標傳送運作狀態檢查請求之前，您必須向目標群組註冊該目標，由接聽程式規則中指定其目標群組，並確保 Gateway Load Balancer 已啟用該目標的可用區域。

下表說明已註冊目標的運作狀態可能的值。


| Value | 說明 | 
| --- | --- | 
| `initial` | Gateway Load Balancer 正在註冊目標或對目標執行初始運作狀態檢查。<br />相關原因代碼： `Elb.RegistrationInProgress` \| `Elb.InitialHealthChecking` | 
| `healthy` | 目標的運作狀態良好。<br />相關原因代碼：無 | 
| `unhealthy` | 目標未回應運作狀態檢查或未通過運作狀態檢查。<br />相關原因碼：`Target.FailedHealthChecks` | 
| `unused` | 目標未向目標群組註冊、未在接聽程式規則中使用目標群組、目標位於未啟用的可用區域，或目標處於已停止或已終止狀態。<br />相關原因碼：`Target.NotRegistered` \| `Target.NotInUse` \| `Target.InvalidState` \| `Target.IpUnusable` | 
| `draining` | 目標正在取消註冊，連接耗盡作業進行中。<br />相關原因碼：`Target.DeregistrationInProgress` | 
| `unavailable` | 目標健全狀態無法使用。<br />相關原因碼：`Elb.InternalError` | 

## 運作狀態檢查原因代碼
<a name="target-health-reason-codes"></a>

如果目標的狀態是 `Healthy` 以外的任何值，API 將傳回問題的原因代碼和描述，而且主控台會顯示同樣的描述。開頭為 `Elb` 的原因代碼源自 Gateway Load Balancer 端，而開頭為 `Target` 的原因代碼源自目標端。


| 原因代碼 | 說明 | 
| --- | --- | 
| `Elb.InitialHealthChecking` | 初始運作狀態檢查正進行中 | 
| `Elb.InternalError` | 運作狀態檢查由於內部錯誤而失敗 | 
| `Elb.RegistrationInProgress` | 目標註冊正進行中 | 
| `Target.DeregistrationInProgress` | 目標取消註冊正進行中 | 
| `Target.FailedHealthChecks` | 運作狀態檢查失敗 | 
| `Target.InvalidState` | 目標處於停止狀態<br />目標處於終止狀態<br />目標處於終止或停止狀態<br />目標處於無效狀態 | 
| `Target.IpUnusable` | IP 地址不能做為目標，因為負載平衡器正在使用它 | 
| `Target.NotInUse` | 目標群組未設定為接收來自 Gateway Load Balancer 的流量<br />目標位於 Gateway Load Balancer 未啟用的可用區域 | 
| `Target.NotRegistered` | 目標未向目標群組註冊 | 

## Gateway Load Balancer 目標失敗案例
<a name="failure-scenarios"></a>

**現有流程**：根據預設，現有的流程會移至相同的目標，除非流程逾時或重設，無論目標的運作狀態和註冊狀態為何。這種方法會推進連接耗盡，並容納第三方防火牆，這些防火牆有時由於 CPU 用量過高而無法回應運作狀態檢查。如需詳細資訊，請參閱[目標容錯移轉](edit-target-group-attributes.md#target-failover)。

**新流程**：新流程會傳送至運作狀態良好的目標。針對流程做出負載平衡決定後，Gateway Load Balancer 會將流程傳送至相同的目標，即使該目標運作狀態不佳或其他目標運作狀態良好亦是如此。

當所有目標運作狀態不佳時，Gateway Load Balancer 會隨機挑選一個目標，並在流程的生命週期內將流量轉送至該目標，直到其重設或逾時為止。由於流量會轉送至運作狀態不佳的目標，因此流量會被捨棄，直到該目標再次變得運作狀態良好為止。

**TLS 1.3**：如果目標群組設定有 HTTPS 運作狀態檢查，則其註冊的目標在僅支援 TLS 1.3 時將運作狀態檢查失敗。這些目標必須支援早期版本的 TLS，例如 TLS 1.2。

**跨區域負載平衡**：依預設，會停用跨可用區域的負載平衡。如果啟用跨區域的負載平衡，則每個 Gateway Load Balancer 都可以看到所有可用區域中的全部目標，而且無論其區域為何，這些目標都會被視為相同。

負載平衡和運作狀態檢查決策在區域之間始終是獨立的。即使啟用跨區域的負載平衡，現有流程和新流程的行為也與上述相同。如需詳細資訊，請參閱 *Elastic Load Balancing 使用者指南*中的[跨區域負載平衡](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html#cross-zone-load-balancing)。

## 檢查目標的運作狀態
<a name="check-target-health"></a>

您可以檢查已向目標群組註冊的各個目標的運作狀態。

**使用主控台檢查目標的運作狀態**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格的**負載平衡**中，選擇**目標群組**。

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

1. 在 **Targets (目標)** 標籤上，**Status (狀態)** 欄指出各目標的狀態。

1. 如果目標狀態為 `Healthy` 以外的任何值，則**狀態詳細資料**欄會包含更多資訊。

**使用 檢查目標的運作狀態 AWS CLI**  
使用 [describe-target-health](https://docs.aws.amazon.com/cli/latest/reference/elbv2/describe-target-health.html) 命令。此命令的輸出包含目標的運作狀態。若狀態為 `Healthy` 以外的任何值，其將附上原因代碼。

**接收有關狀態不良目標的電子郵件通知**  
使用 CloudWatch 警示來觸發 Lambda 函數，以傳送運作狀態不佳目標的詳細資料。如需逐步指示，請參閱下列部落格文章：[Identifying unhealthy targets of your load balancer](https://aws.amazon.com/blogs/networking-and-content-delivery/identifying-unhealthy-targets-of-elastic-load-balancer/) (識別負載平衡器狀態不良的目標)。

## 修改運作狀態檢查設定
<a name="modify-health-check-settings"></a>

您可以修改目標群組的部分運作狀態檢查設定。

**使用主控台修改目標群組的運作狀態檢查設定**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格的**負載平衡**中，選擇**目標群組**。

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

1. 在**群組詳細資料**索引標籤的**運作狀態檢查設定**區段中，選擇**編輯**。

1. 在**編輯運作狀態檢查設定**頁面上，視需要修改設定，然後選擇**儲存變更**。

**使用 修改目標群組的運作狀態檢查設定 AWS CLI**  
使用 [modify-target-group](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-target-group.html) 命令。