当GWLB后端服务器因健康检查异常或者被移除导致不可用时,新增流量会路由到其他可用服务器,但现有流量仍然会流向不可用服务器,可能导致数据包丢失。您可以开启服务器组的重新平衡现有流量功能(即Rebalance),当后端服务器不可用时,GWLB会将现有流量重新路由到其他可用服务器。
为什么使用Rebalance功能
是否使用Rebalance功能 | 不使用 | 使用 |
场景示意 | ||
业务现有流量处理方式 | 现有流量继续流向不可用服务器,可能导致数据包丢失 | 现有流量立即流向其他可用服务器,保证了业务连续性 |
Rebalance功能重点解决的问题场景:
网络虚拟设备NVA(如第三方防火墙)的无感升级或维护
用户应用程序的处理逻辑无需特别设计,来应对因网络虚拟设备NVA切换导致的业务流量中断问题
Rebalance对应的流量处理逻辑
服务器健康检查失败或服务器移除后:
新流量将直接路由到其他可用服务器。
现有流量如何处理,需要参考多个条件进行判断。
条件1:服务器不可用的原因
条件2:是否开启连接优雅中断
条件3:是否开启Rebalance
现有流量处理结果
健康检查失败
不影响
✅
转发到其他可用服务器
❌
继续转发到不可用服务器
✅
转发到其他可用服务器
❌
继续转发到不可用服务器
服务器移除
✅
✅
在连接优雅中断超时时间内,继续转发到不可用服务器
经过连接优雅中断超时时间后,转发到其他可用服务器
✅
❌
继续转发到不可用服务器
❌
✅
转发到其他可用服务器
❌
❌
继续转发到不可用服务器
使用Rebalance功能
控制台
您可在GWLB控制台的服务器组页面,在创建服务器组时,在高级配置处选择开启或关闭重新平衡现有流量(推荐)。
或者在已有服务器组的编辑基本信息页面,选择开启或关闭重新平衡现有流量(推荐)。
API
您可通过在CreateServerGroup - 创建服务器组或UpdateServerGroupAttribute - 更新服务器组属性接口中,传入ServerFailoverMode
参数的值,开启或关闭Rebalance功能。
ServerFailoverMode
参数的枚举值:
NoRebalance(默认):不重新平衡现有流量
Rebalance:重新平衡现有流量
查询Rebalance功能开启状态,请参考:ListServerGroups - 查询服务器组列表。
若业务流量为有状态的协议流量,需要后端服务器中的网络虚拟设备(例如防火墙)配合使用。
以TCP协议为例,需要防火墙允许在没有初始 SYN 数据包的情况下建立 TCP 会话。
原理:
TCP 三次握手:TCP 协议通常需要通过三次握手来建立连接。这包括客户端发送 SYN 数据包、服务器回应 SYN-ACK,并由客户端发送 ACK 确认,从而完成连接的建立。
GWLB在进行重新平衡现有流量(Rebalance)时,可能会将现有连接从一个网络虚拟设备移动到另一个网络虚拟设备,这种操作可能会导致 TCP 会话在没有发起完整的三次握手的情况下被转移到新的网络虚拟设备上,如果新的网络虚拟设备不支持在没有初始 SYN 数据包的情况下建立 TCP 会话,则将导致连接中断。因此,网络虚拟设备需要能够无缝地接受这种“无SYN”的中间连接,以避免连接被中断。
配置示例:以FortiGate防火墙为例,您可在防火墙策略中启用
tcp-session-without-syn
。详情可参考防火墙厂商官方文档。