本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
应用型负载均衡ALB支持跨AZ负载均衡以避免单可用区资源瓶颈。但在金融量化交易、实时通信等对时延高度敏感的场景,跨AZ负载均衡可能带来一定的延时。为此,您可以关闭跨AZ负载均衡,使ALB在同地域同可用区内分配流量,发送到后端服务器组的流量不进行跨可用区分发,从而提升业务访问速度。
功能简介
ALB默认开启跨AZ负载均衡,即ALB在同地域跨可用区的后端服务之间分配流量。当ALB挂载的服务器组关闭跨AZ负载均衡时,ALB仅在同地域同可用区的后端服务之间分配流量。
如果您需要关闭跨AZ负载均衡,请确保在ALB内每个可用区都有可用的后端服务器,并确保这些服务器资源充足。为避免对您的实际业务造成影响,请谨慎操作。
关键特性
降低时延:在同地域同可用区进行流量分配,可以减少数据跨可用区传输时延,提升业务的访问速度。
使用场景
主要适用于对时延要求较高的场景:
金融交易场景:在高频量化交易场景下,低时延确保交易的快速处理,减少交易失败或超时风险。
实时通信场景:在视频会议、即时消息等场景下,低时延确保无缝、流畅的用户体验。
物联网场景:在实时数据采集等场景下,低时延确保及时的数据分析和响应,提升系统整体的效率和准确性。
使用限制
仅标准版、WAF增强版ALB实例支持关闭跨AZ负载均衡,基础版ALB不支持。
关闭跨AZ负载均衡时,不支持开启会话保持。
开启远端IP的IP类型服务器组,不支持关闭跨AZ负载均衡。
函数计算类型的服务器组无需配置该参数。
场景示例
企业在阿里云杭州地域部署了高可用的业务,默认开启了跨AZ负载均衡。由于业务转型,该企业对时延提出了更高的要求。
为了满足此诉求,该企业决定关闭跨AZ负载均衡,使ALB仅向同地域同可用区的后端服务分配流量。通过这种方式,企业成功降低了时延,提升了业务的访问速度。
前提条件
操作步骤
步骤一:关闭跨AZ负载均衡
本文前提条件中已创建过服务器组,本步骤仅以编辑服务器组并关闭跨AZ负载均衡为例进行配置说明。如果您未创建服务器组,您也可以在创建服务器组时关闭跨AZ负载均衡功能。
在服务器组页面,找到目标服务器组,单击目标ID。
在详细信息页面,基本信息区域,单击编辑基本信息。
在编辑基本信息对话框,单击高级配置,关闭跨AZ负载均衡开关,然后单击保存完成关闭操作。
(可选)步骤二:验证关闭跨AZ负载均衡
此步骤仅用来验证关闭跨AZ负载均衡是否生效。实际业务场景中,建议您通过域名方式访问服务,并在步骤三中测试时延效果。
在目标实例详情页面,可用区区域,分别复制可用区H和可用区K的弹性公网IP。
通过浏览器访问可用区H的弹性公网IP,例如
http://<弹性公网IP>
,多次刷新浏览器,只能访问到可用区H对应的后端服务器ECS01。通过浏览器访问可用区K的弹性公网IP,例如
http://<弹性公网IP>
,多次刷新浏览器,只能访问到可用区K对应的后端服务器ECS02。
步骤三:时延效果测试
测试结果可能因地域和可用区的不同有所差异,请以实际业务测试结果为准。本示例的验证测试以查看数据包延迟效果为例进行说明。
在德国(法兰克福)地域创建一台公网ECS03实例,作为测试客户端。如果您已有测试服务器,则无需创建。
登录测试客户端ECS03,执行以下命令,测试访问时延。
curl http://www.example.com -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n"
参数说明:
time_connect:连接时间。从开始到建立TCP连接完成所用的时间,单位:秒。
time_starttransfer:开始传输时间。在客户端发出请求后,到后端服务器响应第一个字节所用的时间,单位:秒。
time_total:连接总时间。客户端发出请求后,到后端服务器响应会话所用的时间,单位:秒。
开启跨AZ负载均衡请求响应时长:
关闭跨AZ负载均衡请求响应时长:
测试结果表明,关闭跨AZ负载均衡后,连接时间、传输时间以及连接总时间均有所缩短。
常见问题
为什么关闭跨AZ负载均衡后,请求会返回503?
可能是由于在关闭跨AZ负载均衡的服务器组中,ALB实例所在的某个可用区内不存在可用的后端服务器,导致ALB无法将请求转发到后端服务器,从而返回503错误码。
关闭跨AZ负载均衡后,为什么不支持会话保持功能?
开启会话保持功能时,ALB实例可用区A的请求可能会持续转发至可用区B的后端服务器,当关闭跨AZ负载均衡后,将无法继续会话保持。
关闭跨AZ负载均衡后,若ALB实例所在可用区和服务器组里后端服务器的可用区不完全相同时,健康检查状态是怎样?
关闭跨AZ负载均衡后,与ALB实例不在相同可用区的后端服务器健康检查状态是未使用(Unused)。
相关文档
关于ALB支持的地域和可用区,请参考ALB支持的地域与可用区。
如果配置过程中遇到问题,您可参考ALB常见问题进行定位处理。
如果遇到健康检查异常问题,您可参考ALB健康检查异常排查方法。
CreateServerGroup:创建服务器组。
UpdateServerGroupServersAttribute:更新后端服务器配置。
ListServerGroups:查询服务器组。
GetListenerHealthStatus:查询健康检查。