全部產品
Search
文件中心

Server Load Balancer:ALB健全狀態檢查異常排查方法

更新時間:Jun 19, 2024

ALB通過健全狀態檢查來判斷後端伺服器的業務可用性,開啟健全狀態檢查功能後,當某台後端伺服器健全狀態檢查出現異常時,ALB會自動將新的請求分發到其他健全狀態檢查正常的後端伺服器上,避免了局部後端伺服器異常對總體服務的影響從而保證業務高可用。當出現健全狀態檢查異常時,您可參考本文進行排查解決。

問題描述

ALB執行個體的監聽對應的健全狀態檢查狀態顯示異常

問題原因

如果您是首次配置健全狀態檢查時出現異常,主要原因是健全狀態檢查配置問題。可以通過以下兩類原因進行排查。

  • 健全狀態檢查參數設定錯誤

  • 監聽連接埠問題

如果您是配置成功後健全狀態檢查出現異常,主要原因是後端伺服器出現問題。可以通過以下三類原因進行排查。

  • 安全類防護軟體問題

  • 路由配置錯誤問題

  • 後端伺服器負載過高

解決方案

首次配置健全狀態檢查出現異常

原因一:健全狀態檢查參數設定錯誤

  1. 登入應用型負載平衡ALB控制台
  2. 在頂部功能表列,選擇ALB執行個體所屬的地區。

  3. 在左側導覽列,選擇應用型負載平衡ALB > 伺服器組

  4. 伺服器組頁面,找到目標ALB執行個體掛載的伺服器組,然後單擊伺服器組ID。

  5. 在服務組詳情頁面,在健全狀態檢查地區單擊編輯健全狀態檢查

  6. 編輯健全狀態檢查對話方塊,檢查健全狀態檢查參數設定是否正常,建議按照預設提供的健全狀態檢查參數進行設定。

    更多資訊,請參見健全狀態檢查

原因二:監聽連接埠問題

  1. 登入應用型負載平衡ALB控制台
  2. 在頂部功能表列,選擇ALB執行個體所屬的地區。

  3. 在左側導覽列,選擇應用型負載平衡ALB > 伺服器組

  4. 伺服器組頁面,找到目標ALB執行個體掛載的伺服器組,然後單擊伺服器組ID。

  5. 在伺服器組詳情頁,單擊後端伺服器頁簽,查看並記錄後端伺服器連接埠。

  6. 在服務組詳情頁面,單擊詳細資料頁簽,在健全狀態檢查地區單擊編輯健全狀態檢查。在編輯健全狀態檢查對話方塊,查看並記錄健全狀態檢查參數。

  7. 登入後端伺服器,使用nc或curl命令對後端伺服器進行探測。

    關於如何登入ECS,請參見ECS遠端連線操作指南

    # nc命令:
    echo -e "[$Method] [$PATH] [$VERSION]\r\nHost: [$Domain]\r\n\r\n" | nc -t [$IP] [$Port] #格式
    echo -e "HEAD /index.html HTTP/1.0\r\nHost: wwww.example.org\r\n\r\n" | nc -t 127.0.0.1 80 #樣本
    
    # curl命令:
    curl -X [$Method] -H "Host: [$Domain]" -I http://[$IP]:[$Port][$PATH]  #格式
    curl -X HEAD --http1.0 -H "Host: www.example.org" -I http://127.0.0.1:80/index.html #樣本
    說明
    • [$Method]為該伺服器組設定的健全狀態檢查方法。

    • [$PATH]為該伺服器組設定的健全狀態檢查路徑。

    • [$VERSION]為該伺服器組設定的健全狀態檢查中HTTP協議的版本,例如HTTP/1.0。

    • [$Domain]為該伺服器組設定的健全狀態檢查網域名稱,如果該值為“-----”,說明預設使用各後端ECS執行個體的內網IP為網域名稱,可以使用[$IP]代替。

    • [$IP]為後端ECS執行個體內網IP地址。

    • [$Port]為該伺服器組設定的健全狀態檢查的探測連接埠,如果沒有手動設定過健全狀態檢查連接埠,預設使用的是後端ECS執行個體連接埠,如果配置了健全狀態檢查連接埠,則使用配置的健全狀態檢查連接埠。

  8. 查看命令執行結果的狀態代碼,結合業務判斷返回的狀態代碼是否屬於正常情況下的返回。

    • 如果判斷返回的狀態代碼是屬於正常情況下的返回,且該狀態代碼未在健全狀態檢查中配置,請修改健全狀態檢查的健康狀態返回碼。

    • 如果判斷返回的狀態代碼異常,請參見下表進行排查。下表列出了可能返回的HTTP狀態代碼及排查方法。

      狀態代碼

      描述

      排查方法

      400

      用戶端HTTP請求格式異常

      HTTP頭部格式錯誤,例如content length為空白、header的某些欄位未使用大寫字母等。請檢查HTTP請求的格式。

      404

      未找到目標資源

      請檢查請求的URL是否正確。

      405

      健全狀態檢查要求方法不支援

      請檢查後端服務是否支援健全狀態檢查的要求方法。

      500

      伺服器內部錯誤,無法完成請求

      請檢查後端服務的商務邏輯。

      503

      伺服器暫時不可用

      請檢查後端服務的商務邏輯或負載是否過高。

配置成功後健全狀態檢查出現異常

原因一:安全類防護軟體問題

ALB執行個體使用內網位址區段100.64.0.0/10或VPC網段與後端ECS通訊,請確保後端ECS執行個體沒有對ALB執行個體的該網段進行任何形式的屏蔽,包括Iptables或其他任何第三方安全性原則軟體。

因為ALB通過內部保留位址區段中的IP地址與後端ECS執行個體通訊,ALB的該位址區段被屏蔽會導致健全狀態檢查異常,ALB將無法正常工作。本文以Iptables檢查100.64.0.0/10為例介紹。

  1. 登入問題後端ECS執行個體,執行以下命令,查看filter表的所有規則。

    iptables -nL

    如果返回類似以下資訊,說明後端ECS執行個體禁止ALB內網位址區段請求。安全防護問題排查

  2. 執行以下命令,刪除此規則即可。

    iptables -t filter -D INPUT -s 100.64.0.0/10 -j DROP
  3. 執行以下命令,確認沒有禁止ALB內網位址區段請求。

    iptables -nL

原因二:路由配置錯誤問題

ALB執行個體使用的內網位址區段100.64.0.0/10在後端ECS上的路由配置錯誤時,也會導致ALB執行個體收不到健全狀態檢查探測的資料包,造成健全狀態檢查異常。本文以Linux下的route命令為例,檢查路由配置情況。

  1. 登入問題後端ECS執行個體,執行以下命令,檢查當前系統的路由配置情況。

    route -n

    若您發現存在路由條目的Destination為100.64.0.0,Genmask為255.192.0.0,且Gateway沒有指向對應網卡的預設閘道(當Destination為0.0.0.0時,Gateway顯示的資訊就是預設閘道),則該路由配置錯誤。健全狀態檢查故障定位

  2. 執行以下命令,刪除配置錯誤的100.64.0.0/10路由。

    route del -net 100.64.0.0/10

原因三:後端ECS執行個體負載過高

參見Linux執行個體負載高問題排查和異常處理,查看是否是伺服器負載過高導致的問題。