全部產品
Search
文件中心

Server Load Balancer:應用型負載平衡ALB的常見問題

更新時間:Nov 13, 2024

本文為您介紹應用型負載平衡ALB(Application Load Balancer)的常見問題。

ALB是否有具體的執行個體規格?

ALB無需選擇執行個體規格,但不同的IP模式能力上限不同。

  • 固定IP:每個可用性區域有且只有一個IP,並且IP地址固定不變。此模式下執行個體彈效能力有限,單ALB執行個體最大支援10萬QPS。

  • 動態IP:每個可用性區域至少有一個IP,隨著業務請求(QPS)的增加,會自動擴充IP數量。此模式下執行個體具備良好的彈效能力,單ALB執行個體最大支援100萬QPS。

關於ALB執行個體效能的更多資訊,請參見執行個體效能指標

如何提升ALB的公網頻寬?

未加入共用頻寬時,單ALB執行個體(雙可用性區域)預設公網頻寬峰值為400 Mbps。

如需更大頻寬,請購買共用頻寬,並將ALB執行個體綁定的EIP加入共用頻寬。

如何修改監聽的健全狀態檢查配置?

  1. 登入應用型負載平衡ALB控制台

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

  3. 伺服器組頁面,找到目標伺服器組,然後單擊伺服器組ID。

  4. 詳細資料的健全狀態檢查地區,單擊編輯健全狀態檢查

  5. 編輯健全狀態檢查對話方塊,單擊健全狀態檢查配置右側的編輯,根據需求修改健全狀態檢查配置。然後單擊儲存

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

為什麼健全狀態檢查結果正常但訪問ALB請求返回502?

通常是因為ALB執行個體後端伺服器負載過高。當ALB執行個體後端伺服器負載過高時,可能會出現健全狀態檢查結果和訪問請求結果不一致的情況。關於如何查詢後端伺服器負載情況,請參見Linux執行個體負載高問題排查和異常處理

ALB的公網流量能否使用共用流量包進行抵扣?

  • ALB執行個體通過Elastic IP Address(Elastic IP Address,簡稱EIP)提供公網能力時,EIP產生的公網流量支援使用通用流量包進行抵扣。

  • ALB執行個體通過任播Elastic IP Address( Anycast Elastic IP Address,簡稱Anycast EIP)提供公網能力時,Anycast EIP產生的公網流量不支援使用通用流量包進行抵扣。

ALB是否支援CA雙向認證?

基礎版ALB執行個體不支援CA雙向認證,標準版和WAF增強版ALB執行個體添加HTTPS監聽時支援配置CA雙向認證。如果基礎版ALB需要使用CA雙向認證功能,請升級執行個體功能版本。具體操作,請參見ALB執行個體變更配置添加HTTPS監聽

在使用CA雙向認證功能時,您需要選擇一個CA認證或在CA認證下拉式清單中單擊購買CA認證購買新認證。更多資訊,請參見購買及啟用私人CA

ALB監聽認證為萬用字元認證(泛網域名稱認證)時,需滿足哪些規則?

ALB執行個體添加HTTPS監聽時,若選擇的認證為萬用字元認證(泛網域名稱認證)時,請注意以下規則。

  • 選擇萬用字元認證時,ALB僅能夠識別包含一個萬用字元*、且萬用字元*放置在最左邊的萬用字元認證。例如ALB可以識別*.example.com*test.example.com,但不能識別test*.example.com

  • 萬用字元網域名稱匹配規則:

    • 萬用字元層級:萬用字元網域名稱只能匹配相同層級的任意子網域名稱。例如,*.example.com可以匹配 test.example.com,但不能匹配 test.test.example.com(因為該子網域名稱和萬用字元網域名稱層級不同)。

    • IDNA支援情況:

      • 若萬用字元認證中萬用字元是最左側標籤的唯一字元,那麼IDNA標籤可與該萬用字元匹配,例如,xn--fsqu00a.example.com可以匹配*.example.com

      • 若萬用字元認證中萬用字元不是最左側標籤的唯一字元,那麼IDNA標籤不可與該部分萬用字元匹配,例如,xn--fsqu00atest.example.com不能匹配*test.example.com

    • 字元支援情況:萬用字元認證中的萬用字元*僅支援匹配數字0~9、大小寫字母和中劃線(-)。例如,*.example.com可以匹配 test.example.com,但不能匹配 test_test.example.com

ALB支援綁定哪些類型的EIP?

ALB僅支援綁定隨用隨付的EIP執行個體,下表展示了ALB支援綁定的EIP類型。

付費模式

公網計費方式

線路類型

安全防護

隨用隨付

按使用流量計費

BGP(多線)

預設

按使用流量計費

BGP(多線)_精品

預設

按使用流量計費

BGP(多線)

DDoS防護(增強版)

ALB執行個體綁定EIP,請注意:

  • ALB執行個體中的所有可用性區域綁定的EIP類型需保持一致。

  • 綁定前,要求EIP未加入共用頻寬。如有加入共用頻寬的需求,ALB執行個體綁定EIP後,您可以在負載平衡控制台選擇加入共用頻寬。共用頻寬只關注線路類型即可,EIP的線路類型與共用頻寬的線路類型需保持一致,訂用帳戶和隨用隨付的共用頻寬均支援加入。關於如何加入共用頻寬,請參見調整公網執行個體頻寬峰值

  • 不支援綁定訂用帳戶和隨用隨付(按固定頻寬計費)計費的EIP。

  • ALB執行個體分配EIP時,選擇新購自動分配公網IP建立的為隨用隨付(按使用流量計費)的BGP多線預設安全防護EIP。

私網ALB支援綁定Elastic IP Address嗎?

支援。

如果您需要給私網ALB綁定Elastic IP Address,可以通過變更執行個體網路類型的方式,將私網ALB變更為公網ALB。具體操作,請參考變更ALB執行個體的網路類型

私網類型轉換為公網類型時會綁定Elastic IP Address,產生公網網路費用。更多資訊,請參見Elastic IP Address計費

ALB支援上傳認證嗎?

不支援。

ALB是直接調用SSL認證服務(Alibaba Cloud SSL Certificates Service)的認證,需要您將認證上傳至SSL認證控制台,因此不支援在ALB進行認證上傳操作。更多資訊,請參見SSL上傳認證

ALB是否支援流量鏡像功能?

支援,更多資訊,請參見使用ALB流量鏡像功能實現模擬壓測

ALB IPv4執行個體和雙棧執行個體是否支援互轉?

不支援。

僅支援建立IPv4執行個體或者雙棧執行個體。

ALB DNS摘除注意事項?

僅固定IP模式下的ALB執行個體支援DNS摘除操作,動態IP模式下的ALB執行個體不支援。

DNS摘除操作完成後,該可用性區域VIP的可用性探測停止,同時將移除可用性區域下的EIP、VIP(包含IPv4和IPv6),不支援僅移除IPv4或IPv6的VIP地址。

WAF 2.0透明化接入和WAF 3.0服務化接入的區別?

image

簡單總結兩者的區別:

  • WAF 2.0透明化接入:用戶端請求需先經過WAF檢測後,再去往ALB或CLB。WAF 2.0透明化接入時請求需經過兩道網關,因此WAF側與負載平衡側都需維護逾時時間和認證等配置。

  • WAF 3.0服務化接入:WAF旁路接入,用戶端請求直接前往ALB,請求在轉寄至後端伺服器之前,ALB會提取並發送請求內容至WAF側進行檢測。WAF 3.0服務化接入時請求只經過一道網關,省去了網關間認證和配置同步的步驟,不會出現認證和配置不同步等問題。

更多資訊,請參見WAF 3.0與WAF 2.0對比

ALB接入WAF的使用說明?

ALB支援WAF 3.0服務化接入,即開通ALB WAF增強版。ALB接入WAF防護時,請注意:

  • 阿里雲帳號沒有WAF 2.0執行個體或未開啟WAF:公網和私網ALB執行個體均支援通過服務化接入的方式開啟WAF 3.0防護,即開通WAF增強版。更多資訊,請參見開通和管理ALB WAF增強版

    ALB WAF增強版支援的地區(即ALB支援WAF 3.0服務化接入的地區)

    地區

    地區

    中國

    西南1(成都)、華北1(青島)、華北2(北京)、華南3(廣州)、華東1(杭州)、華北6(烏蘭察布)、華東2(上海)、華南1(深圳)、華北3(張家口)、中國香港

    亞太地區

    菲律賓(馬尼拉)、印尼(雅加達)、日本(東京)、馬來西亞(吉隆坡)、新加坡、泰國(曼穀)

    歐美地區

    德國(法蘭克福)、美國(矽谷)、美國(維吉尼亞)

    中東

    沙特(利雅得)

  • 阿里雲帳號已有WAF 2.0執行個體:公網基礎版ALB執行個體和公網標準版ALB執行個體支援通過透明化接入的方式開啟WAF 2.0防護,私網ALB執行個體不支援開啟WAF 2.0防護。

    僅華東1(杭州)、華東2(上海)、華南1(深圳)、西南1(成都)、華北2(北京)、華北3(張家口)地區的ALB執行個體支援WAF 2.0透明化接入。

    說明

    如果您需要為ALB接入WAF 3.0防護,請先釋放WAF 2.0執行個體或者遷移至WAF 3.0。

    • 釋放WAF 2.0執行個體時,ALB預設不開啟X-Forwarded-Proto頭欄位,此時直接存取ALB,可能會造成業務異常。您需要在ALB監聽中開啟X-Forwarded-Proto頭欄位。具體操作,請參見管理監聽

    • 關於釋放WAF 2.0執行個體的操作,請參見關閉WAF

    • 關於遷移至WAF3.0的操作,請參見如何將WAF 2.0執行個體升級到WAF 3.0

CLB和ALB對透明化接入WAF 2.0和服務化接入WAF 3.0的支援情況?

產品

透明化接入WAF 2.0

服務化接入WAF 3.0

CLB

支援

關於CLB如何透明化接入WAF 2.0的相關指導,請參見:

不支援

ALB

  • 阿里雲帳號已有WAF 2.0執行個體,ALB支援透明化接入WAF 2.0。具體操作,請參見ALB執行個體連接埠引流

  • 阿里雲帳號沒有WAF 2.0執行個體或未開啟WAF時,ALB僅支援服務化接入WAF 3.0,即購買ALB WAF增強版。

支援

支援的地區及相關操作,請參見開通和管理ALB WAF增強版

WAF 2.0透明化接入出現逾時時間和認證不同步等配置問題的原因?

WAF 2.0透明化接入時,用戶端請求需先經過WAF檢測後,再去往ALB或CLB,用戶端請求需經過兩道網關,導致WAF側和負載平衡側需要同步多個配置,尤其逾時時間和認證變更操作容易引發配置同步的延時問題。

在使用WAF 2.0透明化接入時,如遇認證更新不及時,或調整逾時時間不生效等問題,請加入釘群(釘群號:21715946),聯絡產品技術專家進行諮詢。

為什麼ALB執行個體達不到監聽轉寄規則中設定的QPS限速峰值?

  • 原理:因為負載平衡系統通過叢集部署的方式為Server Load Balancer執行個體提供服務,所有外部的訪問請求都將平均分散到這些負載平衡系統伺服器上進行轉寄。所以,在轉寄規則中設定的QPS峰值將被平均設定在多台系統伺服器上。

    單個系統伺服器的QPS上限計算方法為:單個系統伺服器QPS峰值=設定的總QPS/(N-1)。N為轉寄分組中系統伺服器的個數。例如您在控制台上設定轉寄規則的QPS限速是1000 QPS,若系統伺服器個數為8,那麼單個系統伺服器的最大QPS為1000/(8-1)=142 QPS

  • 原因:在使用少量長串連的業務情境下,轉寄分組中的系統伺服器可能不會全部被分配到長串連,導致ALB執行個體達不到QPS限速峰值。

  • 建議:基於負載平衡的實現原理,建議在配置轉寄規則的QPS限速時,根據您實際的業務情況並結合其實現方式來設定一個較為合理的值,從而確保您業務的正常對外服務不會受到影響和限制。關於如何在監聽轉寄規則中設定QPS限速,請參見添加轉寄規則

ALB轉寄請求的長度限制是多少?是否支援調整?

訪問ALB請求的URI長度最大支援32 KB,請求header長度最大支援32 KB,且均不支援自訂調整限制。訪問日誌的自訂header長度預設支援1 KB,最大可以提升到4KB,如需提升請聯絡您的客戶經理申請。

  • 如果用戶端的請求大小超限,可能會返回400或414狀態代碼。更多資訊,請參見ALB狀態代碼說明

  • 如果資料量很大建議採用POST傳輸資料,POST請求的body體最大支援50 GB。

同一個伺服器組的所有後端伺服器健全狀態檢查均異常時,ALB如何轉寄請求?

ALB仍會嘗試根據調度演算法轉寄請求,最大可能避免您的業務受損。若請求不符合預期,建議通過日誌排查後端伺服器是否有異常,或者檢查健全狀態檢查配置是否存在異常。更多資訊,請參見ALB健全狀態檢查異常排查方法

請求響應為500、502、503、504狀態代碼的解釋及可能原因是什嗎?

500(Internal Server Error)

後端伺服器內部錯誤,無法執行請求。

可能原因:

  • 後端伺服器直接返回500,ALB透傳後端狀態代碼給用戶端,請排查後端伺服器返回500的原因。

  • 後端伺服器在發送完響應之前異常關閉串連,請在後端伺服器抓包確定並排查請求異常關閉的原因。

502(Bad Gateway)

HTTP或HTTPS監聽接收到用戶端串連請求後,ALB由於無法正常將請求轉寄至後端伺服器或無法從後端伺服器收到響應,則會向用戶端發送HTTP 502 Bad Gateway狀態代碼。

可能原因:

  • 後端伺服器直接返回502,ALB透傳後端狀態代碼給用戶端,請排查後端伺服器返回502的原因。

  • ALB後端伺服器返回其他錯誤的狀態代碼(例如504、444),但ALB統一返回502。建議排查訪問日誌的upstream_status和status欄位或抓包排查後端伺服器是否有異常。

  • ALB與後端伺服器之間TCP通訊異常,請排查後端伺服器的狀態是否正常、服務連接埠是否正常被監聽,或抓包查看TCP握手報文是否正常。

  • 後端伺服器Backlog已滿,導致報文丟棄。建議通過netstat查看後端伺服器的網路統計結果是否有drop的計數,例如netstat -s | grep -i listen

  • 用戶端發送的報文長度超過了後端伺服器的傳輸單元最大值(Maximum Transmission Unit,MTU),表現為健全狀態檢查或報文較短的包正常,但報文較長的包異常。建議在後端伺服器抓包分析報文長度是否符合要求。

  • 後端伺服器返回的報文格式異常或者有非法的HTTP標題。建議在後端伺服器抓包,確認HTTP格式是否正常。

  • ALB後端伺服器沒有及時完成請求處理,請排查後端伺服器的日誌,並查看對應後端伺服器的CPU、記憶體等的佔用率。

503(Service Temporarily Unavailable)

暫時無法使用伺服器,通常是由於流量超限或者後端伺服器不可用。

可能原因:

  • 後端伺服器直接返回503狀態代碼,ALB透傳後端狀態代碼給用戶端,請排查後端伺服器返回503的原因。

  • 用戶端請求的流量觸發了ALB的限速。您可以使用以下三種方式排查:

    • 在CloudMonitor查看執行個體每秒請求數指標 。更多資訊,請參見ALB監控項說明查看ALB監控資訊

    • 由於CloudMonitor的展示是分鐘級的,可能無法展示秒級超限情況,您可以通過訪問日誌查看秒級的請求數。查看訪問日誌的upstream_status欄位,內容為“-”時,表示請求未發送至後端伺服器。

    • 查看響應資料包頭部是否包含欄位“ALB-QPS-Limited:Limited”,若包含,表示請求觸發了ALB的限速。

  • 用戶端訪問ALB時未使用網域名稱而是直接存取ALB的IP,或者使用網域名稱訪問ALB時未及時更新DNS解析結果,導致流量不能在多個ALB IP之間打散,出現503錯誤碼。建議用戶端使用ALB的網域名稱訪問服務,同時盡量確保用戶端均勻地使用DNS返回的IP來訪問服務。

  • ALB監聽沒有配置後端伺服器,或者配置的後端伺服器的權重為0。

504(Gateway Time-out)

後端伺服器響應逾時。

可能原因:

  • 後端伺服器直接返回504狀態代碼,請排查後端伺服器的負載是否過高。

  • ALB向後端伺服器建立串連時,後端伺服器建立連線逾時,逾時時間預設設定為5秒,您可以查看訪問日誌中的upstream_connect_time欄位是否為5秒或者大約為5秒。建議抓包排查後端伺服器響應逾時的原因。

  • 後端伺服器負載增大,響應請求的時間大於所配置的請求逾時時間。比如配置的請求逾時時間是60秒,如果回應時間為60.001秒,ALB將返回504。您可以在CloudMonitor或者訪問日誌中查看問題時間段的延時情況,CloudMonitor查看upstream_rt, 訪問日誌中查看upstream_response_time。

使用ALB Ingress有哪些注意事項?

通常情況下,通過ALB Ingress建立的ALB執行個體不應該在控制台做手動修改,ALB的配置以AlbConfig資源同步為主。關於ALB Ingress的相關介紹,請參見ALB Ingress概述ALB Ingress功能操作指導

如果您在控制台進行了手動修改,會因為AlbConfig配置沒有修改而導致控制台手動修改的配置被覆蓋,從而會出現例如訪問日誌被關閉、路由規則被刪除等問題。

ALB支援跨域常見問題

跨網域設定後不生效,瀏覽器報錯預檢請求有問題

如果此時"允許的要求標頭部"沒有配置"*",而是配置的詳細的header name,可以將"允許的要求標頭部"配置為"*"進行測試,如果問題解決,可以後續排查預檢請求攜帶的Access-Control-Request-Headers裡包含的header_name是否有不在配置中的,導致預檢請求失敗。

預檢請求和實際請求進入不同的轉寄規則

ALB支援豐富的轉寄規則匹配方式,而跨域中的預檢請求因為其特殊性,導致其header和方法與實際請求不一致,建議您在使用跨域的情況下,使用網域名稱進行轉寄規則配置,保證預檢請求和實際請求不會落在沒有配置跨域規則的轉寄規則中,造成不必要的困擾。