在負載平衡服務中開啟健康檢查功能後,當後端某個ECS健康檢查出現問題時,會將請求轉寄到其他健康檢查正常的ECS上。當該ECS恢複正常運行時,負載平衡會將其自動回復到對外或對內的服務中。

針對七層負載平衡服務,當監聽獲取到健康檢查異常的資訊時,可以從以下方面對ECS執行個體進行健康排查:

  • 確保您能夠直接通過ECS訪問到您的應用服務。
  • 確保後端伺服器開啟了相應的通信埠,該通信埠必須與您在負載平衡監聽配置中配置的後端通信埠保持一致。
  • 檢查後端ECS內部是否開啟了防火牆或其他的安全類防護軟體,這類軟體很容易將負載平衡服務的本地 IP地址屏蔽掉,導致負載平衡服務無法跟後端伺服器進行通訊。
  • 檢查負載平衡健康檢查參數設定是否正確,建議參照預設提供的健康檢查參數進行設定。
  • 建議使用靜態頁面來進行健康檢查,如果您用於健康檢查的頁面在後端ECS應用伺服器上並不是預設首頁,需要您在健康檢查配置中指定該頁面的URL。健康檢查指定的檢測檔案,建議是html形式的簡單頁面,只用於檢查返回結果,不建議用php等動態指令碼或直譯式程式語言。
  • 檢查後端ECS資源是否有較高負載,降低了ECS對外提供服務的響應速度。

另外,由於七層負載平衡服務跟後端ECS之間通過內網通訊,因此需要ECS監聽內網或者全網通信埠。您可使用以下方法進行檢查:

  1. 檢查監聽功能是否正常。

    假設負載平衡前端通信埠是80,ECS 後端通信埠也是80,ECS 內網IP是 10.11.192.1。在伺服器上運行以下命令,如果能看到10.11.192.1:80的監聽資訊,或者0.0.0.0:80的監聽資訊,說明這部分通信埠的監聽正常。

    • Windows 伺服器上運行:netstat -ano | findstr :80
    • Linux 伺服器上運行:netstat -anp | grep :80
  2. 檢查伺服器內網防火牆是否放行80通信埠,可以暫時關閉防火牆進行測試。輸入以下命令關閉防火牆。
    • Windows:firewall.cpl
    • Linux:/etc/init.d/iptables stop
  3. 檢查後端通信埠是否正常。
    • 對於四層負載平衡,使用telnet測試有響應即為正常。本例中使用telnet 10.11.192.1 80來測試。
    • 對於七層負載平衡,HTTP狀態碼需要是200等代表正常的狀態碼,檢驗方法如下:
      • Windows:直接在ECS上訪問ECS的內網IP測試是否正常,本例中為:http://10.11.192.1
      • Linux:使用curl -I命令查看狀態是否為 HTTP/1.1 200 OK,本例是:curl -I 10.11.192.1