本文為您介紹應用型負載均衡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加入共享帶寬。
關于如何購買共享帶寬,請參見創建共享帶寬實例。
關于如何加入共享帶寬,請參見創建應用型負載均衡和調整公網實例帶寬峰值。
如何修改監聽的健康檢查配置?
在左側導航欄,選擇
。在服務器組頁面,找到目標服務器組,然后單擊服務器組ID。
在詳細信息的健康檢查區域,單擊編輯健康檢查。
在編輯健康檢查對話框,單擊健康檢查配置右側的編輯,根據需求修改健康檢查配置。然后單擊保存。
更多信息,請參見健康檢查。
為什么健康檢查結果正常但訪問ALB請求返回502?
通常是因為ALB實例后端服務器負載過高。當ALB實例后端服務器負載過高時,可能會出現健康檢查結果和訪問請求結果不一致的情況。關于如何查詢后端服務器負載情況,請參見Linux實例負載高問題排查和異常處理。
ALB的公網流量能否使用共享流量包進行抵扣?
ALB實例通過彈性公網IP(Elastic IP Address,簡稱EIP)提供公網能力時,EIP產生的公網流量支持使用共享流量包進行抵扣。
ALB實例通過任播彈性公網IP( 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。
選擇非阿里云簽發的CA證書時,您需要選擇或上傳一個CA證書。上傳CA證書時,在選擇默認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支持綁定彈性公網IP嗎?
支持。
如果您需要給私網ALB綁定彈性公網IP,可以通過變更實例網絡類型的方式,將私網ALB變更為公網ALB。具體操作,請參考變更ALB實例的網絡類型。
私網類型轉換為公網類型時會綁定彈性公網IP,產生公網網絡費用。更多信息,請參見彈性公網IP計費。
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服務化接入的區別?
簡單總結兩者的區別:
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(張家口)、中國香港、華東6(福州-本地地域)
亞太
菲律賓(馬尼拉)、印度尼西亞(雅加達)、日本(東京)、馬來西亞(吉隆坡)、新加坡、泰國(曼谷)
歐洲與美洲
德國(法蘭克福)、美國(硅谷)、美國(弗吉尼亞)
阿里云賬號已有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 |
| 支持 支持的地域及相關操作,請參見開通和管理ALB WAF增強版。 |
WAF 2.0透明化接入出現超時時間和證書不同步等配置問題的原因?
WAF 2.0透明化接入時,客戶端請求需先經過WAF檢測后,再去往ALB或CLB,客戶端請求需經過兩道網關,導致WAF側和負載均衡側需要同步多個配置,尤其超時時間和證書變更操作容易引發配置同步的延時問題。
在使用WAF 2.0透明化接入時,如遇證書更新不及時,或調整超時時間不生效等問題,請加入釘群(釘群號:21715946),聯系產品技術專家進行咨詢。
為什么ALB實例達不到監聽轉發規則中設置的QPS限速峰值?
原理:因為負載均衡系統通過集群部署的方式為負載均衡實例提供服務,所有外部的訪問請求都將平均分散到這些負載均衡系統服務器上進行轉發。所以,在轉發規則中設置的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的限速。您可以使用以下三種方式排查:
客戶端訪問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。您可以在云監控或者訪問日志中查看問題時間段的延時情況,云監控查看upstream_rt, 訪問日志中查看upstream_response_time。
使用ALB Ingress有哪些注意事項?
通常情況下,通過ALB Ingress創建的ALB實例不應該在控制臺做手動修改,ALB的配置以AlbConfig資源同步為主。關于ALB Ingress的相關介紹,請參見ALB Ingress概述和ALB Ingress功能操作指導。
如果您在控制臺進行了手動修改,會因為AlbConfig配置沒有修改而導致控制臺手動修改的配置被覆蓋,從而會出現例如訪問日志被關閉、路由規則被刪除等問題。
如果發現某個ALB控制臺的能力在AlbConfig上未支持,請聯系我們。
ALB支持跨域常見問題
跨域配置后不生效,瀏覽器報錯預檢請求有問題
如果此時"允許的請求頭部"沒有配置"*",而是配置的詳細的header name,可以將"允許的請求頭部"配置為"*"進行測試,如果問題解決,可以后續排查預檢請求攜帶的Access-Control-Request-Headers里包含的header_name是否有不在配置中的,導致預檢請求失敗。
預檢請求和實際請求進入不同的轉發規則
ALB支持豐富的轉發規則匹配方式,而跨域中的預檢請求因為其特殊性,導致其header和方法與實際請求不一致,建議您在使用跨域的情況下,使用域名進行轉發規則配置,保證預檢請求和實際請求不會落在沒有配置跨域規則的轉發規則中,造成不必要的困擾。