ALB关闭跨AZ负载均衡降低请求时延

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

应用型负载均衡ALB支持跨AZ负载均衡以避免单可用区资源瓶颈。但在金融量化交易、实时通信等对时延高度敏感的场景,跨AZ负载均衡可能带来一定的延时。为此,您可以关闭跨AZ负载均衡,使ALB在同地域同可用区内分配流量,发送到后端服务器组的流量不进行跨可用区分发,从而提升业务访问速度。

功能简介

ALB默认开启跨AZ负载均衡,即ALB在同地域跨可用区的后端服务之间分配流量。当ALB挂载的服务器组关闭跨AZ负载均衡时,ALB仅在同地域同可用区的后端服务之间分配流量。

警告

如果您需要关闭跨AZ负载均衡,请确保在ALB内每个可用区都有可用的后端服务器,并确保这些服务器资源充足。为避免对您的实际业务造成影响,请谨慎操作。

关键特性

降低时延:在同地域同可用区进行流量分配,可以减少数据跨可用区传输时延,提升业务的访问速度。

使用场景

主要适用于对时延要求较高的场景:

  • 金融交易场景:在高频量化交易场景下,低时延确保交易的快速处理,减少交易失败或超时风险。

  • 实时通信场景:在视频会议、即时消息等场景下,低时延确保无缝、流畅的用户体验。

  • 物联网场景:在实时数据采集等场景下,低时延确保及时的数据分析和响应,提升系统整体的效率和准确性。

使用限制

  • 仅标准版、WAF增强版ALB实例支持关闭跨AZ负载均衡,基础版ALB不支持。

  • 关闭跨AZ负载均衡时,不支持开启会话保持

  • 开启远端IP的IP类型服务器组,不支持关闭跨AZ负载均衡。

  • 函数计算类型的服务器组无需配置该参数。

场景示例

企业在阿里云杭州地域部署了高可用的业务,默认开启了跨AZ负载均衡。由于业务转型,该企业对时延提出了更高的要求。

为了满足此诉求,该企业决定关闭跨AZ负载均衡,使ALB仅向同地域同可用区的后端服务分配流量。通过这种方式,企业成功降低了时延,提升了业务的访问速度。

image

前提条件

  • 您已在杭州地域创建了标准版的ALB实例,并在创建过程中选择了多个可用区(以可用区H和可用区K为例)。请参见创建应用型负载均衡

  • 您已创建服务器组

  • 您已在服务器组中分别添加ECS01和ECS02实例,其中ECS01属于可用区H,ECS02属于可用区K,并且这两台实例上均部署了应用服务。

    ECS中测试服务的部署命令参考示例

    ECS01服务部署命令参考:

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS01." > index.html

    ECS02服务部署命令参考:

    yum install -y nginx
    systemctl start nginx.service
    cd /usr/share/nginx/html/
    echo "Hello World ! This is ECS02." > index.html
  • 您已经为该实例配置了监听并关联了已创建的服务器组。请参见添加HTTP监听添加HTTPS监听添加QUIC监听

  • 您已注册域名并完成备案,且通过自有域名为ALB配置CNAME解析

操作步骤

步骤一:关闭跨AZ负载均衡

本文前提条件中已创建过服务器组,本步骤仅以编辑服务器组并关闭跨AZ负载均衡为例进行配置说明。如果您未创建服务器组,您也可以在创建服务器组时关闭跨AZ负载均衡功能。

  1. 登录应用型负载均衡ALB控制台

  2. 服务器组页面,找到目标服务器组,单击目标ID。

  3. 详细信息页面,基本信息区域,单击编辑基本信息

  4. 编辑基本信息对话框,单击高级配置,关闭跨AZ负载均衡开关,然后单击保存完成关闭操作。

(可选)步骤二:验证关闭跨AZ负载均衡

说明

此步骤仅用来验证关闭跨AZ负载均衡是否生效。实际业务场景中,建议您通过域名方式访问服务,并在步骤三中测试时延效果。

在目标实例详情页面,可用区区域,分别复制可用区H可用区K的弹性公网IP。

  1. 通过浏览器访问可用区H的弹性公网IP,例如http://<弹性公网IP>,多次刷新浏览器,只能访问到可用区H对应的后端服务器ECS01。

    image

  2. 通过浏览器访问可用区K的弹性公网IP,例如http://<弹性公网IP>,多次刷新浏览器,只能访问到可用区K对应的后端服务器ECS02。

    image

步骤三:时延效果测试

说明

测试结果可能因地域和可用区的不同有所差异,请以实际业务测试结果为准。本示例的验证测试以查看数据包延迟效果为例进行说明。

  1. 在德国(法兰克福)地域创建一台公网ECS03实例,作为测试客户端。如果您已有测试服务器,则无需创建。

  2. 登录测试客户端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负载均衡请求响应时长:

    image

    关闭跨AZ负载均衡请求响应时长:

    image

    测试结果表明,关闭跨AZ负载均衡后,连接时间、传输时间以及连接总时间均有所缩短。

常见问题

为什么关闭跨AZ负载均衡后,请求会返回503?

可能是由于在关闭跨AZ负载均衡的服务器组中,ALB实例所在的某个可用区内不存在可用的后端服务器,导致ALB无法将请求转发到后端服务器,从而返回503错误码。

关闭跨AZ负载均衡后,为什么不支持会话保持功能?

开启会话保持功能时,ALB实例可用区A的请求可能会持续转发至可用区B的后端服务器,当关闭跨AZ负载均衡后,将无法继续会话保持。

关闭跨AZ负载均衡后,若ALB实例所在可用区和服务器组里后端服务器的可用区不完全相同时,健康检查状态是怎样?

关闭跨AZ负载均衡后,与ALB实例不在相同可用区的后端服务器健康检查状态是未使用(Unused)。

相关文档