应用型负载均衡ALB的常见问题

本文为您介绍应用型负载均衡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实例通过弹性公网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服务化接入的区别?

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(张家口)、中国香港、华东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

  • 阿里云账号已有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限速峰值?

  • 原理:因为负载均衡系统通过集群部署的方式为负载均衡实例提供服务,所有外部的访问请求都将平均分散到这些负载均衡系统服务器上进行转发。所以,在转发规则中设置的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监控信息

    • 由于云监控的展示是分钟级的,可能无法展示秒级超限情况,您可以通过访问日志查看秒级的请求数。查看访问日志的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。您可以在云监控或者访问日志中查看问题时间段的延时情况,云监控查看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和方法与实际请求不一致,建议您在使用跨域的情况下,使用域名进行转发规则配置,保证预检请求和实际请求不会落在没有配置跨域规则的转发规则中,造成不必要的困扰。