如何對失敗的 Application Load Balancer 運作狀態檢查進行疑難排解和修復?
註冊到 Application Load Balancer 的目標運作狀態不佳。如何找出目標運作狀態檢查失敗的原因?
解決方法
若要對失敗的 Application Load Balancer 運作狀態檢查進行疑難排解和修復:
- 檢查目標的運作狀態,以找出問題的原因代碼和說明。
- 根據您收到的錯誤,依照下列解決方法步驟進行操作。
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 回應對其做出回應。主機標頭值包含目標的私有 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 伺服器 (例如 NGINX 和 IIS) 支援記錄伺服器回應所需的時間。如果運作狀態檢查請求所花費的時間超過設定的逾時,您可以:
- 為運作狀態檢查選擇較簡單的目標頁面。
- 調整運作狀態檢查設定。
如果無法連線:
- 確認與目標相關聯的安全群組允許使用運作狀態檢查連接埠和運作狀態檢查通訊協定的負載平衡器傳出流量。您可以將規則新增至安全群組,以允許來自負載平衡器安全群組的所有流量。此外,負載平衡器的安全群組必須允許傳入目標的流量。
- 確認與目標子網路相關聯的網路 ACL 允許運作狀態檢查連接埠上的傳入流量。確認還允許暫時性連接埠 (1024-65535) 上的傳出流量。
- 確認與負載平衡器節點子網路相關聯的網路 ACL 允許暫時性連接埠上的傳出流量。確認還允許運作狀態檢查和暫時性連接埠上的傳出流量。
- 確認目標上的任何作業系統層級防火牆允許運作狀態檢查的進出流量。
- 確認與目標相關連的子網路路由表包含允許運作狀態檢查流量返回負載平衡器的項目。
- 確認目標的記憶體和 CPU 使用率處於可接受範圍內。如果您的記憶體或 CPU 使用率過高,請新增其他目標或增加 Auto Scaling 群組的容量。如果您的目標為 EC2 執行個體,您也可以將執行個體升級為更大的執行個體類型。
相關資訊
相關內容
- 已提問 1 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前