本文為您介紹應用型負載平衡 ALB(Application Load Balancer)的常見問題。
ALB是否有具體的執行個體規格?
如何提升ALB的公網頻寬?
未加入共用頻寬時,單ALB執行個體(雙可用性區域)預設公網頻寬峰值為400 Mbps。
如需更大頻寬,請購買共用頻寬,並將ALB執行個體綁定的EIP加入共用頻寬。
關於如何購買共用頻寬,請參見建立與管理共用頻寬。
關於如何加入共用頻寬,請參見建立和管理ALB執行個體和調整公網執行個體頻寬峰值。
如何修改監聽的健全狀態檢查配置?
在左側導覽列,選擇。
在伺服器組頁面,找到目標伺服器組,然後單擊伺服器組ID。
在詳細資料的健全狀態檢查地區,單擊編輯健全狀態檢查。
在編輯健全狀態檢查對話方塊,單擊健全狀態檢查配置右側的編輯,根據需求修改健全狀態檢查配置。然後單擊儲存。
更多資訊,請參見健全狀態檢查。
為什麼健全狀態檢查結果正常但訪問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監聽認證為萬用字元認證(泛網域名稱認證)時,需滿足哪些規則?
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的EIP如何更換為精品EIP?
您可以通過變更ALB執行個體的網路類型的方式進行更換:
將ALB執行個體由公網類型轉換為私網類型,以解除綁定ALB執行個體的EIP。
再將ALB執行個體由私網類型轉換為公網類型,轉換時,請選擇已建立的2個精品線路EIP。
為什麼ALB綁定的EIP流量負載不均衡
可能有以下原因:
業務網域名稱未按規範解析至ALB的DNS名稱,而是解析到了ALB綁定的單個EIP上。
ALB前端部署了WAF或DDoS高防等七層代理,其回源演算法(如IPHash)導致流量無法在多個EIP間均勻分布。
部分用戶端緩衝了DNS解析後的A記錄,導致大量請求持續落到同一個EIP上。
ALB支援上傳認證嗎?
不支援。
ALB是直接調用SSL認證服務(Alibaba Cloud SSL Certificates Service)的認證,需要您將認證上傳至SSL認證控制台,因此不支援在ALB進行認證上傳操作。更多資訊,請參見SSL上傳認證。
ALB是否支援流量鏡像功能?
支援,更多資訊,請參見使用ALB流量鏡像功能實現模擬壓測。
ALB IPv4執行個體和雙棧執行個體是否支援互轉?
不支援。
僅支援建立IPv4執行個體或者雙棧執行個體。
ALB DNS摘除注意事項?
ALB升級執行個體預設支援DNS摘除與DNS恢複操作。
升級前的ALB執行個體,僅固定IP模式支援DNS摘除與DNS恢複操作,動態IP模式不支援。
DNS摘除操作完成後,該可用性區域VIP的可用性探測停止,同時將從ALB網域名稱解析中移除該可用性區域下的VIP或EIP(包含IPv4和IPv6),不支援僅移除IPv4或IPv6的VIP地址。
WAF 2.0透明化接入和WAF 3.0服務化接入的區別?
簡單總結兩者的區別:
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 防護,即使用WAF增強版ALB執行個體。
支援的地區:
地區
地區
中國
西南1(成都)、華北1(青島)、華北2(北京)、華南3(廣州)、華東1(杭州)、華北6(烏蘭察布)、華東2(上海)、華南1(深圳)、華北3(張家口)、中國香港
亞太地區
菲律賓(馬尼拉)、印尼(雅加達)、日本(東京)、馬來西亞(吉隆坡)、新加坡、泰國(曼穀)、韓國(首爾)
歐美地區
德國(法蘭克福)、美國(矽谷)、美國(維吉尼亞)、墨西哥
中東
沙特(利雅得)- 夥伴營運
採用 WAF 3.0 服務化接入架構。如果帳號下已有 WAF 2.0 執行個體,需先釋放WAF 2.0執行個體或遷移至WAF 3.0。
ALB 預設不開啟 X-Forwarded-Proto 頭欄位。釋放 WAF 2.0 執行個體後,直接存取 ALB 可能會因後端服務無法正確識別協議(HTTP/HTTPS)而導致業務異常(例如,無限重新導向)。為避免此問題,務必在 ALB 監聽配置中手動開啟X-Forwarded-Proto要求標頭。
支援的功能:開通後,WAF 的以下功能將不受支援:資訊泄露防護、Bot 管理網頁防爬情境化防護中的自動整合 Web SDK。
如需使用帳號已有的 WAF 2.0 執行個體,公網基礎版和公網標準版ALB執行個體支援透明化接入 WAF 2.0 防護,支援的地區:華東1(杭州)、華東2(上海)、華南1(深圳)、西南1(成都)、華北2(北京)、華北3(張家口)。私網ALB執行個體不支援接入 WAF 2.0 防護。
CLB和ALB對透明化接入WAF 2.0和服務化接入WAF 3.0的支援情況?
產品 | 透明化接入WAF 2.0 | 服務化接入WAF 3.0 |
CLB | 支援 關於CLB如何透明化接入WAF 2.0的相關指導,請參見: | 不支援 |
ALB |
| 支援 支援的地區及相關操作,請參見為 ALB 開啟 WAF 防護。 |
WAF 2.0透明化接入出現逾時時間和認證不同步等配置問題的原因?
WAF 2.0透明化接入時,用戶端請求需先經過WAF檢測後,再去往ALB或CLB,用戶端請求需經過兩道網關,導致WAF側和負載平衡側需要同步多個配置,尤其逾時時間和認證變更操作容易引發配置同步的延時問題。
ALB更新認證後,瀏覽器中查看到的網域名稱認證到期時間沒變
這種情況通常是因為ALB通過透明接入的方式接入了WAF2.0,WAF側的認證還未更新。WAF同步ALB的認證有周期性,如需立即完成同步,可以在WAF側關閉引流再重新開啟,強制重新整理認證狀態;請注意,此操作會導致業務出現1-2秒的閃斷。
為什麼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處理時間包含接收用戶端資料和發送資料時間。
接收用戶端資料時間:即
read_request_time,指負載平衡讀取用戶端請求的總耗時,包括接收HTTP要求標頭(read_header_time)和請求體(read_body_time)。發送響應資料時間:包含向用戶端返迴響應資料的時間。
同一個伺服器組的所有後端伺服器健全狀態檢查均異常時,ALB如何轉寄請求?
ALB仍會嘗試根據調度演算法轉寄請求,最大可能避免您的業務受損。若請求不符合預期,建議通過日誌排查後端伺服器是否有異常,或者檢查健全狀態檢查配置是否存在異常。更多資訊,請參見ALB健全狀態檢查異常排查方法。
請求響應為500、502、503、504狀態代碼的解釋及可能原因是什嗎?
500(Internal Server Error)
後端伺服器內部錯誤,無法執行請求。
後端直接返回500:建議檢查訪問日誌,如
upstream_status為500,則很可能ALB透傳了後端狀態代碼。請排查後端服務。後端伺服器異常關閉串連:後端伺服器在發送完響應前即異常關閉串連。請在後端伺服器抓包排查串連異常關閉的原因。
502(Bad Gateway)
HTTP或HTTPS監聽接收用戶端請求後,ALB無法正常將請求轉寄至後端伺服器或無法從後端伺服器收到響應。
後端直接返回502:建議檢查訪問日誌,如
upstream_status為502,則很可能ALB透傳了後端狀態代碼。請排查後端服務。後端返回其他錯誤狀態代碼:例如
504、444,但ALB統一返回502。建議檢查訪問日誌的status和upstream_status欄位,並根據後端狀態代碼排查故障原因。ALB與後端伺服器TCP通訊異常:請排查後端服務狀態是否正常、服務連接埠是否正常監聽或抓包查看TCP握手是否正常。
後端伺服器Backlog已滿:將導致新的串連請求被拒絕或丟棄。可在後端伺服器執行
netstat -s | grep -i listen,查看是否有drop計數。用戶端發送報文長度超過後端伺服器的MTU:表現為健全狀態檢查或其他報文較短的包正常,但報文較長的包異常。建議在後端伺服器抓包分析報文長度是否符合要求。
後端伺服器響應的報文格式異常或有非法的HTTP標題:建議在後端伺服器抓包,分析響應報文的格式是否規範。
後端伺服器沒有及時處理完請求:請檢查後端伺服器的日誌,並查看CPU、記憶體等佔用率。
503(Service Temporarily Unavailable)
伺服器暫時不可用,通常由於流量超限或後端服務不可用。
後端直接返回503:建議檢查訪問日誌,如
upstream_status為503,則很可能ALB透傳了後端狀態代碼。請排查後端服務。用戶端請求觸發ALB限速:
通過CloudMonitor查看
每秒請求數指標。CloudMonitor展示分鐘級資料,可能無法反映秒級超限情況。可檢查訪問日誌,如
upstream_status欄位的值為-,則請求未送達後端伺服器。檢查響應資料包頭部,如包含
ALB-QPS-Limited:Limited欄位,則請求觸發了ALB的限速。
用戶端直接存取ALB的IP或通過網域名稱訪問時DNS解析異常:可能導致流量集中在少數幾個IP從而超限。建議用戶端通過ALB的網域名稱訪問(參考為ALB配置CNAME解析),並確保DNS解析正常。
監聽沒有配置後端伺服器或配置的後端伺服器權重為
0。
504(Gateway Time-out)
後端伺服器響應逾時。
後端直接返回504:建議檢查訪問日誌,如
upstream_status為504,則很可能ALB透傳了後端狀態代碼。請排查後端服務。ALB與後端伺服器建立連線逾時:逾時時間預設為5秒且無法修改。建議抓包排查後端伺服器響應逾時的原因。
後端伺服器響應逾時:串連請求逾時時間預設為60秒。可查看CloudMonitor的
UpstreamResponseTime和訪問日誌的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和方法與實際請求不一致,建議您在使用跨域的情況下,使用網域名稱進行轉寄規則配置,保證預檢請求和實際請求不會落在沒有配置跨域規則的轉寄規則中,造成不必要的困擾。
配置跨域時,Access-Control-Allow-Headers 回應標頭如何產生和返回
預檢請求
當瀏覽器發起跨域請求且滿足以下條件時,會先發送一個
OPTIONS方法的預檢請求:要求方法為
OPTIONS請求中包含
Access-Control-Request-Method頭
在此情況下,ALB會根據您在控制台配置的跨域轉寄規則,返回
Access-Control-Allow-Headers回應標頭。該回應標頭的值為規則中允許的要求標頭欄位列表,例如:DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization普通跨域請求
對於非 OPTIONS 請求,或不滿足預檢條件的簡單請求,ALB不會返回
Access-Control-Allow-Headers回應標頭。
ALB執行個體的VIP是否支援禁止Ping?
已升級ALB執行個體支援通過安全性群組管理訪問流量,可在執行個體所屬安全性群組中配置入方向拒絕ICMP規則。
對於未升級ALB執行個體,支援將其綁定的EIP接入互連網邊界防火牆,並配置入方向拒絕ICMP策略。
ALB的QUIC監聽對用戶端Client Hello包的長度限制
使用QUIC監聽時,ALB 對用戶端的Client Hello包設有最小長度限制,其長度不得小於 1024 位元組,否則ALB會返回“client hello too small”並關閉串連。使用者可以通過補Null 字元的方式將Client Hello包長度補足至1024位元組以通過校正。
用戶端到ALB的單個HTTP長串連最多支援多少個請求
單個長串連最多支援連續發送 100 個請求,超過該限制後串連將自動關閉。
僅當使用HTTPS監聽並開啟HTTP 2.0時,單個長串連支援的請求數上限可提升至 1000 個。