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

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

目標群組運作狀態檢查

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

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

運作狀態檢查設定

您將使用以下設定,為目標群組中的目標設定主動的運作狀態檢查。如果健全狀況檢查超過指定的UnhealthyThresholdCount連續失敗次數,則閘道 Load Balancer 會將目標停止服務。當健全狀況檢查超過指定的HealthyThresholdCount連續成功次數時,閘道 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。

目標運作狀態

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

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

Value 描述

initial

Gateway Load Balancer 正在註冊目標或對目標執行初始運作狀態檢查。

相關原因代碼: Elb.RegistrationInProgress | Elb.InitialHealthChecking

healthy

目標的運作狀態良好。

相關原因代碼:無

unhealthy

目標未回應運作狀態檢查或未通過運作狀態檢查。

相關原因碼:Target.FailedHealthChecks

unused

目標未向目標群組註冊、未在接聽程式規則中使用目標群組、目標位於未啟用的可用區域,或目標處於已停止或已終止狀態。

相關原因碼:Target.NotRegistered | Target.NotInUse | Target.InvalidState | Target.IpUnusable

draining

目標正在取消註冊,連接耗盡作業進行中。

相關原因碼:Target.DeregistrationInProgress

unavailable

目標健全狀態無法使用。

相關原因碼:Elb.InternalError

運作狀態檢查原因代碼

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

原因代碼 描述

Elb.InitialHealthChecking

初始運作狀態檢查正進行中

Elb.InternalError

運作狀態檢查由於內部錯誤而失敗

Elb.RegistrationInProgress

目標註冊正進行中

Target.DeregistrationInProgress

目標取消註冊正進行中

Target.FailedHealthChecks

運作狀態檢查失敗

Target.InvalidState

目標處於停止狀態

目標處於終止狀態

目標處於終止或停止狀態

目標處於無效狀態

Target.IpUnusable

IP 地址不能做為目標,因為負載平衡器正在使用它

Target.NotInUse

目標群組未設定為接收來自 Gateway Load Balancer 的流量

目標位於 Gateway Load Balancer 未啟用的可用區域

Target.NotRegistered

目標未向目標群組註冊

Gateway Load Balancer 目標失敗案例

現有流程:依預設,除非流程逾時或重設,不論目標的健全狀況和註冊狀態為何,否則現有流程都會移至相同的目標。這種方法會推進連接耗盡,並容納第三方防火牆,這些防火牆有時由於 CPU 用量過高而無法回應運作狀態檢查。如需詳細資訊,請參閱目標容錯移轉

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

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

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

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

負載平衡和運作狀態檢查決策在區域之間始終是獨立的。即使啟用跨區域的負載平衡,現有流程和新流程的行為也與上述相同。如需詳細資訊,請參閱 Elastic Load Balancing 使用者指南中的跨區域負載平衡

檢查目標的運作狀態

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

使用主控台檢查目標的運作狀態
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

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

  4. Targets (目標) 標籤上,Status (狀態) 欄指出各目標的狀態。

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

使用檢查目標的健康狀態 AWS CLI

使用 describe-target-health 命令。此命令的輸出包含目標的運作狀態。若狀態為 Healthy 以外的任何值,其將附上原因代碼。

接收有關狀態不良目標的電子郵件通知

使用 CloudWatch 警示觸發 Lambda 函數,以傳送有關健康狀態不良目標的詳細資訊。如需 step-by-step 指示,請參閱下列部落格文章:識別負載平衡器運作狀況不良的目標

修改運作狀態檢查設定

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

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

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

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

  4. 群組詳細資料索引標籤的運作狀態檢查設定區段中,選擇編輯

  5. 編輯運作狀態檢查設定頁面上,視需要修改設定,然後選擇儲存變更

使用修改目標群組的健全狀況檢查設定 AWS CLI

使用 modify-target-group 命令。