如何對失敗的 Application Load Balancer 運作狀態檢查進行疑難排解和修復?

2 分的閱讀內容
0

註冊到 Application Load Balancer 的目標運作狀態不佳。如何找出目標運作狀態檢查失敗的原因?

解決方案

若要對失敗的 Application Load Balancer 運作狀態檢查進行疑難排解和修復:

  1. 檢查目標的運作狀態,以找出問題的原因代碼和說明。

  2. 根據您收到的錯誤,依照下列解決方法步驟進行操作。

Elb.InitialHealthChecking

説明: 初始運作狀態檢查進行中。

解決方案: 目標必須通過初始運作狀態檢查,才會收到來自負載平衡器的請求。等待目標通過初始運作狀態檢查,然後重新檢查其運作狀態。

Elb.RegistrationInProgress

説明: 目標註冊進行中。

解決方案: 一旦完成註冊程序且目標通過初始運作狀態檢查後,負載平衡器就會立即開始將請求路由至目標。

Target.DeregistrationInProgress

説明: 目標取消註冊進行中。

解決方案: 取消註冊目標時,負載平衡器會等待直到執行中請求完成為止。這就是所謂的取消註冊延遲。預設情況下,Elastic Load Balancing 會在完成取消註冊程序前等待 300 秒。但是,您可以自訂這個值。

如果正在取消註冊的目標沒有執行中請求,也沒有作用中連線,則 Elastic Load Balancing 會立即取消註冊,而不會等待取消註冊延遲結束。取消註冊目標的初始狀態為耗盡。取消註冊延遲結束後,取消註冊程序就會完成,目標狀態為未使用。如果目標屬於 Auto Scaling 群組,則可以將其終止和取代。

Target.FailedHealthChecks

説明: 負載平衡器在建立與目標的連線時收到錯誤,或目標回應格式不正確。

解決方案:

  • 驗證您的應用程式是否正在執行。使用 service 命令檢查 Linux 目標上的服務狀態。對於 Windows 目標,檢查 Windows 工作管理員的服務索引標籤。如果服務已停止,請啟動服務。如果無法識別服務,請驗證是否已安裝所需服務。
  • 驗證目標是否正在偵聽運作狀態檢查連接埠上的流量。您可以在 Linux 目標上使用 ss 命令驗證伺服器正在偵聽的連接埠。對於 Windows 目標,您可以使用 netstat 命令。
  • 驗證應用程式是否相應地回應負載平衡器的運作狀態檢查請求。以下範例顯示來自 Application Load Balancer 的典型運作狀態檢查請求,您的目標必須以有效的 HTTP 回應對其做出回應。Host 標頭值包含目標的私有 IP 地址,後面接著運作狀態檢查連接埠。User-agent 設定為 ELB-HealthChecker/2.0。訊息標頭字段的行結束字元為序列 CRLF,標頭在第一個後面接著 CRLF 的空行處終止。如有必要,請將預設虛擬主機新增至您的 Web 伺服器組態,以接收運作狀態檢查請求。
GET / HTTP/1.1
Host: 10.0.0.1:80
Connection: close
User-Agent: ELB-HealthChecker/2.0
Accept-Encoding: gzip, compressed
  • 目標群組的目標類型可確定負載平衡器將運作狀態檢查傳送至目標上的哪個網路介面。例如,您可以註冊執行個體 ID、IP 地址和 Lambda 函數。如果目標類型為執行個體 ID,則負載平衡器會將運作狀態檢查請求傳送至目標的主要網路介面。如果目標類型為 IP 地址,則負載平衡器會將運作狀態檢查請求傳送至與對應 IP 地址相關聯的網路介面。如果您的目標已連接多個介面,請驗證您的應用程式是否正在偵聽正確的網路介面。
  • ELBSecurityPolicy-2016-08 安全政策用於進行目標連線和 HTTPS 運作狀態檢查。驗證目標是否以安全政策中指定的格式提供伺服器憑證和金鑰。同時驗證目標是否支援一個或多個相符加密和負載平衡器所提供的通訊協定,以建立 TLS 交握。

Target.InvalidState

説明: 目標處於已停止或已終止狀態。

解決方案: 如果目標為 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,請開啟 Amazon EC2 主控台。然後,驗證執行個體是否正在執行。如有必要,請啟動該執行個體

Target.IpUnusable

説明: IP 地址無法用作目標,因為其正由負載平衡器使用。

解決方案: 建立目標群組時,您可以指定其目標類型。當目標類型為 IP 時,請勿選擇已由負載平衡器使用的 IP 地址。

Target.NotInUse

説明: 任何負載平衡器都並未使用目標群組,或目標位於沒有為其負載平衡器啟用的可用區域中。

解決方案:

  • 檢查目標群組,並驗證是否設定為接收來自負載平衡器的流量。
  • 驗證是否已為負載平衡器啟用目標的可用區域。

Target.NotRegistered

説明: 目標未註冊到目標群組。

解決方案: 驗證目標是否已註冊至目標群組。

Target.ResponseCodeMismatch

説明: 運作狀態檢查未傳回預期的 HTTP 程式碼。

解決方案:

  • 成功代碼是檢查來自目標的成功回應時使用的 HTTP 代碼。您可以指定 200 到 499 之間的值或值範圍。預設值為 200。檢查您的負載平衡器運作狀態檢查組態,以驗證預期應收到的成功代碼。然後,檢查您的 Web 伺服器存取日誌,以查看是否傳回預期的成功代碼。如有必要,請修改成功代碼值
  • 驗證 Ping 路徑是否有效。Ping 路徑是目標上執行運作狀態檢查的目的地。請務必指定一個有效的 URI (/path?query)。預設值為 /。如有必要,請修改 Ping 路徑值

Target.Timeout

説明: 請求逾時。

解決方案: 如果可以連線,則在運作狀態檢查逾時之前,目標頁面可能沒有回應。大多數 Web 伺服器 (例如 NGINXIIS) 支援記錄伺服器回應所需的時間。如果運作狀態檢查請求所花費的時間超過設定的逾時,您可以:

如果無法連線:


相關資訊

對 Application Load Balancer 進行疑難排解

AWS 官方
AWS 官方已更新 1 年前