本文为您介绍应用型负载均衡 ALB(Application Load Balancer)的常见问题。
ALB是否有具体的实例规格?
如何提升ALB的公网带宽?
未加入共享带宽时,单ALB实例(双可用区)默认公网带宽峰值为400 Mbps。
如需更大带宽,请购买共享带宽,并将ALB实例绑定的EIP加入共享带宽。
关于如何购买共享带宽,请参见创建与管理共享带宽。
关于如何加入共享带宽,请参见创建和管理ALB实例和调整公网实例带宽峰值。
如何修改监听的健康检查配置?
在左侧导航栏,选择。
在服务器组页面,找到目标服务器组,然后单击服务器组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监听证书为通配符证书(泛域名证书)时,需满足哪些规则?
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的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(张家口)、中国香港、华东6(福州-本地地域)
亚太
菲律宾(马尼拉)、印度尼西亚(雅加达)、日本(东京)、马来西亚(吉隆坡)、新加坡、泰国(曼谷)、韩国(首尔)
欧洲与美洲
德国(法兰克福)、美国(硅谷)、美国(弗吉尼亚)、墨西哥
采用 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限速峰值?
原理:因为负载均衡系统通过集群部署的方式为负载均衡实例提供服务,所有外部的访问请求都将平均分散到这些负载均衡系统服务器上进行转发。所以,在转发规则中设置的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限速:
通过云监控查看
每秒请求数指标。云监控展示分钟级数据,可能无法反映秒级超限情况。可检查访问日志,如
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秒。可查看云监控的
UpstreamResponseTime和访问日志的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和方法与实际请求不一致,建议您在使用跨域的情况下,使用域名进行转发规则配置,保证预检请求和实际请求不会落在没有配置跨域规则的转发规则中,造成不必要的困扰。
配置跨域时,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的QUIC监听对客户端Client Hello包的长度限制
使用QUIC监听时,ALB 对客户端的Client Hello包设有最小长度限制,其长度不得小于 1024 字节,否则ALB会返回“client hello too small”并关闭连接。用户可以通过补空字符的方式将Client Hello包长度补足至1024字节以通过校验。
客户端到ALB的单个HTTP长连接最多支持多少个请求
单个长连接最多支持连续发送 100 个请求,超过该限制后连接将自动关闭。
仅当使用HTTPS监听并开启HTTP 2.0时,单个长连接支持的请求数上限可提升至 1000 个。