文档首页/ 弹性负载均衡 ELB/ 最佳实践/ 高级功能/ 通过独享型ELB的延迟注销实现业务平稳下线
更新时间:2025-09-04 GMT+08:00
分享

通过独享型ELB的延迟注销实现业务平稳下线

应用场景

如果您发现后端服务器健康检查异常或出于其他业务需求需要移除后端服务器时,该后端服务器已建立的连接通常不会立即中断,导致客户端请求仍然转发至这些后端服务器。这可能会引发业务长期无法下线或出现请求错误的问题。

您可以使用独享型ELB的延迟注销功能。当移除后端服务器或健康检查异常时,该后端服务器的现有连接将在一定时间内正常传输,到达注销时间后主动断开连接,从而保障业务平稳下线。

准备工作

  • 已创建独享型ELB实例,具体操作请参考购买独享型负载均衡器
  • 创建两台ECS,ECS与已创建的ELB实例属于同一个VPC,更多详细设置请参考快速创建ECS

    本实践方案以ECS安装CentOS系统为例,一台ECS_client用作客户端发送请求,客户端需支持长连接访问,一台ECS_server用作部署后端应用的后端服务器。

步骤一:创建后端服务器组并开启延迟注销

本实践方案创建开启延迟注销功能的后端服务器组并设置延迟注销时间为30秒。

  1. 进入后端服务器组列表页面
  2. 在后端服务器列表页面,单击页面右上角“创建后端服务器组”按钮。
  3. 配置后端分配策略,关键参数详情请参见表1,其余配置项保持默认值即可。
    表1 配置后端分配策略参数说明

    参数

    示例

    说明

    名称

    server_group

    创建的后端服务器组的名称。

    负载均衡类型

    独享型

    可使用该后端服务器组的负载均衡实例类型。

    所属负载均衡器

    关联已有

    使用该后端服务器组的负载均衡实例。

    单击“关联已有”后,选择您已创建完成的负载均衡实例。

    后端协议

    TCP

    后端云服务器自身提供的网络服务的协议。

    本实践方案选择TCP协议。

    分配策略类型

    加权轮询算法

    本实践方案选择加权轮询算法。

    延迟注销

    开启

    如果后端协议为TCP/UDP/QUIC协议时,默认开启延迟注销功能。

    开启延迟注销功能后,负载均衡器停止向移除的后端云服务器或者健康检查失败的后端云服务器发送新的请求,保持现有连接在延迟注销时间内正常传输。

    延迟注销时间(秒)

    30

    负载均衡器与后端服务器的现有连接在延迟注销时间内正常传输,超过延迟注销时间后全部断开。

    本实践方案设置为30秒。

  4. 单击“下一步”,添加后端服务器并配置健康检查。
  5. 单击“添加云服务器”,选择您已创建好的ECS_server实例,其余选项保持默认,完成云服务器的添加。
  6. 开启健康检查,其余健康检查参数保持默认。
  7. 单击“下一步”。
  8. 确认配置无误后,单击“立即创建”。

步骤二:创建TCP监听器并配置后端服务器组

本实践方案以TCP监听器为例进行转发。

  1. 进入弹性负载均衡列表页面
  2. 在目标弹性负载均衡实例的操作列,单击“添加监听器”。
  3. 在添加监听器页面,协议类型选择“TCP”,监听端口选择“80”,其余配置保持默认。
  4. 单击“下一步:配置后端分配策略”,配置后端服务器组。

    单击“使用已有”,并选择步骤一:创建后端服务器组并开启延迟注销中创建的后端服务器组。

  5. 单击“下一步:确认配置”,确认完成后,完成TCP监听器的创建。

步骤三:在后端服务器中部署应用

  1. 远程登录后端服务器ECS_server。

    弹性云服务器有多种登录方法,具体请参见登录弹性云服务器

  2. 在后端服务器中,新建目录websocket。
    mkdir Test
  3. 在Test目录下,新建一个server.py文件,并且在其中部署测试延迟注销的服务,每秒打印服务端与客户端的连接状态
    1. 新建server.py文件。
      python server.py
    2. i键进入编辑模式。
  4. Esc键,输入:wq保存server.py文件。
  5. 运行server.py文件。
    python server.py
  6. 收到如图1的回显,表示后端服务部署成功。
    图1 后端服务启动成功

步骤四:在客户端中部署应用

  1. 远程登录客户端ECS_client。
  2. 在客户端服务器中,新建目录Test_client。
    mkdir Test_client
  3. 在Test_client目录下,新建一个python_client.py文件,并且在其中部署应用服务,每秒打印客户端与服务端的连接状态
    1. 新建python_client.py文件。
      vi python_client.py
    2. i键进入编辑模式。
  4. Esc键,输入:wq保存client.py文件。
  5. 运行client.py文件。
    python client.py
  6. 收到如图2的回显,客户端打印出时间和连接状态,表示后端服务部署成功。
    图2 客户端启动成功
  7. 查看后端服务器ECS_server,后端服务服务收到如图3的回显,打印出与客户端的连接状态。
    图3 后端服务器收到客户端请求

步骤五:移除后端服务器并记录移除时间

本实践以移除后端服务器的场景为例验证延迟注销生效。

  1. 进入后端服务器组列表页面
  2. 在后端服务器组列表页面,单击需要移除后端服务器的后端服务器组名称。
  3. 切换到“后端服务器”页签,选择下方“云服务器”页签。
  4. 勾选需要移除的服务器,单击服务器列表上方的“移除”。
  5. 在移除后端服务器的对话框中单击“是”。
  6. 记录下后端服务服器被移除的时间,此时客户端打印时刻为09:52:33

步骤六:验证延迟注销功能

  1. 观察在延迟注销时间内,观察客户端和服务端的打印结果。客户端和服务端分别打印出连接状态如图4图5,表示两者间保持长连接。
    图4 客户端打印连接状态
    图5 服务器打印连接状态
  2. 等待延迟注销时间30秒后,观察客户端和服务端的打印结果。客户端和服务端分别打印出如图6图7的回显,表明延迟注销时间结束后,客户端与后端服务器之间的连接断开。根据图6显示连接断开时间为09:53:03,与移除后端服务器时间09:52:33间隔为设置的延迟注销时间30秒。
    图6 客户端打印连接断开
    图7 服务器端打印连接断开

相关文档