如何疑難排解狀況不良的 Route 53 運作狀態檢查?

2 分的閱讀內容
0

我建立的 Amazon Route 53 運作狀態檢查回報為狀況不良。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確認您使用的是最新的 AWS CLI 版本

首先,使用 AWS 管理主控台確認上次運作狀態檢查失敗的原因。或者,在 AWS CLI 中使用 get-health-check-last-failure-reason 命令。

然後,完成下列區段中的對應疑難排解步驟,識別並修正問題。

注意:無論運作狀態檢查類型為何,請檢查反轉運作狀態檢查狀態選項的狀態。如果此選項設定為 true,則 Route 53 會將運作狀態檢查視為狀況不良,即使其標示為狀況良好。

疑難排解監控端點的運作狀態檢查

錯誤: 運作狀態檢查無法在逾時限制內建立連線

當運作狀態檢查程式嘗試連接至已設定的端點逾時時,就會發生前述錯誤。建立連線的最短時間如下:

  • 對於 TCP 運作狀態檢查,運作狀態檢查程式和端點之間的 TCP 連線必須在十秒內建立。
  • 對於 HTTP 和 HTTPS 運作狀態檢查,運作狀態檢查程式和端點之間的 TCP 連線必須在四秒內建立。端點必須在建立連線後的兩秒內使用 2xx 或 3xx HTTP 狀態碼回應。

如需詳細資訊,請參閱 Amazon Route 53 如何判斷運作狀態檢查是否狀況良好

若要避免逾時錯誤,請完成以下步驟:

1.    在運作狀態檢查組態中,記下端點網域名稱IP 地址

2.    存取該端點。確認防火牆或伺服器允許從運作狀態檢查組態中指定的 AWS 區域的 Route 53 公有 IP 地址進行連線。請參閱 IP 範圍並搜尋服務: ROUTE53_HEALTHCHECKS。對於託管在 AWS 上的端點資源,請設定安全群組和網路存取控制清單,以允許 Route 53 運作狀態檢查程式的 IP 地址。

3.    使用下列工具測試與已設定的端點在網際網路上的連線。取代下列命令中的預留位置。在下列範例命令中,使用您使用案例的值取代該變數。

TCP 測試

$ telnet <domain name / IP address> <port>

HTTP/HTTPS 測試

$ curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" <http/https>://<domain-name/ip address>:<port>/<path> -so /dev/null

將先前測試的輸出與運作狀態檢查的逾時值進行比較。然後,確認您的應用程式是否在對應的時間內回應。

例如,如果您執行下列測試:

curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" https://example.com -so /dev/null

然後輸出是:

HTTPCode=200 TotalTime=0.001963

在此範例中,取得 HTTP 狀態碼 200 之回應的總時間為 0.001963 秒。

對於 HTTP 連線,連線時間必須為四秒內。端點必須在連線後的兩秒內使用 HTTP 狀態碼回應。總時間為六秒。如果值高於六秒,表示該端點回應速度緩慢且運作狀態檢查失敗。在此情況下,請檢查您的端點,確保其在逾時期間內回應。

如果測試命令的輸出顯示 200 以外的 HTTP 代碼,請檢查下列設定:

  • 防火牆規則
  • 安全群組
  • 網路存取控制清單

檢查先前的設定時,請確認您的端點允許來自 Route 53 公有 IP 地址的連線。

4.    如果已啟用,請使用運作狀態檢查組態中的延遲圖表選項來檢查以下項目的指標圖表:

  • TCP 連線時間
  • 第一個位元組的時間
  • 完成 SSL 交握的時間

如需詳細資訊,請參閱監控運作狀態檢查程式與端點之間的延遲

注意:

  • 如果未啟用延遲圖表,則無法編輯現有的運作狀態檢查。相反地,您必須建立新的運作狀態檢查
  • 如果您正在監控的端點的彈性 IP 地址已釋放或已更新,則運作狀態檢查可能會失敗。

錯誤: SSL 警示 handshake_failure

交握失敗錯誤表示與端點的 SSL 或 TLS 交涉失敗。當您啟用 SNI (僅限 HTTPS) 時,Route 53 會在 TLS 交涉期間,將 "client_hello" 訊息中的主機名稱傳送至端點。此動作可讓端點使用適用的 SSL 或 TLS 憑證回應 HTTPS 請求。

如果您受監控的主機名稱不是端點的 SSL 或 TLS 憑證中的一般名稱的一部分,則您會收到「SSL 警示 handshake_failure」錯誤。

**注意:**若要啟用 SNI,受監控的端點必須支援 SNI。

使用字串比對條件疑難排解運作狀態檢查

端點伺服器傳回 "200 OK",但 Route 53 將運作狀態檢查標記為狀況不良

運作狀態檢查必須在四秒內與端點建立 TCP 連線。運作狀態檢查必須在接下來的兩秒內收到 2xx 或 3xx 的 HTTP 狀態碼。然後,已設定的字串必須在接下來的兩秒內出現在回應正文的前 5,120 個位元組中。如果字串不存在於前 5,120 個位元組中,則 Route 53 會將運作狀態檢查標記為狀況不良。

若要驗證字串是否出現在回應正文的前 5,120 個位元組中,請使用下列命令。使用您的值取代 domain-nameport$search-string

$ curl -sL <http/https>://<domain-name>:<port> | head -c 5120 | grep $search-string

疑難排解監控 CloudWatch 警示的運作狀態檢查

Route 53 不會等候 Amazon CloudWatch 警示進入 ALARM 狀態。

當 Route 53 監控指標資料串流而非 CloudWatch 警示狀態時,就會發生前述情況。

若要解決此錯誤,請完成下列步驟:

1.    驗證處於 INSUFFICIENT DATA 狀態的運作狀態檢查組態。如果指標資料串流所提供的資訊不足以確認警示狀態,則運作狀態檢查狀態將依 InsufficientDataHealthStatus 組態而定。InsufficientDataHealthStatus 設定的狀態選項為狀況良好狀況不良最後已知的狀態

2.    當您更新 CloudWatch 警示組態時,新的設定不會自動顯示在相關聯的運作狀態檢查中。若要同步處理運作狀態檢查組態與已更新的 CloudWatch 警示組態:

  • Route 53 主控台中,選擇運作狀態檢查
  • 選取運作狀態檢查,然後選擇同步處理組態
AWS 官方
AWS 官方已更新 1 年前