使用虚拟服务器级慢速启动,逐渐增加新服务的负载

您可以将 Citrix ADC 设备配置为在服务添加到负载平衡配置或状态从 DUB 更改为 UP 后立即逐步增加服务上的负载(服务每秒接收的请求数)(以下简称“新服务”用于这两种情况)。您可以使用所选择的负载值和间隔(手动慢启动)手动增加负载,也可以将设备配置为以指定间隔(自动慢启动)增加负载,直到服务收到与配置中的其他服务相同的请求。在新服务的上升期间,设备使用配置的负载平衡方法。

此功能在全球范围内不可用。必须为每个虚拟服务器配置它。此功能仅适用于使用以下负载平衡方法之一的虚拟服务器:

  • 循环
  • 最小连接
  • 最短响应时间
  • 最小带宽
  • 最少数据包
  • LRTM(最小响应时间法)
  • 定制负载

对于此功能,您需要设置以下参数:

  • 新服务请求速率,即每次递增速率时增加发送到新服务的请求数量或百分比的金额。也就是说,您可以根据每秒请求数或当时由现有服务承担的负载百分比来指定增量的大小。如果此值设置为 0(零),则不会对新服务执行慢速启动。

    注意:在自动慢速启动模式下,如果指定值会给新服务带来比其他服务更重的负载,则最终增量小于指定值。

  • 增量间隔(以秒为单位)。如果此值设置为 0(零),则不会自动增加负载。您必须手动增加它。

使用自动慢速启动时,当满足以下条件之一时,服务将退出慢速启动阶段:

  • 实际请求速率低于新的服务请求速率。
  • 该服务在三个连续增量间隔内不接收流量。
  • 请求速率已递增 200 倍。
  • 新服务必须接收的流量百分比大于或等于 100。

使用手动慢速启动时,服务将保持在慢速启动阶段,直到您将其取出该阶段。

手动慢速启动

如果要手动增加新服务的负载,请不要为负载平衡虚拟服务器指定增量间隔。仅指定新服务请求速率和单位。在没有指定间隔的情况下,设备不会定期增加负载。它将新服务的负载保持在新服务请求速率和单位组合指定的值,直到您手动修改任一参数为止。例如,如果您将新服务请求速率和单位参数分别设置为 25 和“每秒”,则设备将新服务的负载保持为每秒 25 个请求,直到您更改其中一个参数为止。如果希望新服务退出慢速启动模式并接收与现有服务相同数量的请求,请将新服务请求速率参数设置为 0。

例如,假定您正在使用虚拟服务器在循环模式下对 2 个服务(Service1 和 Service2)进行负载平衡。进一步假定虚拟服务器每秒接收 240 个请求,并且它在服务间均匀分配负载。将新服务 Service3 添加到配置中时,您可能希望通过每秒 10、20 和 40 个请求的值手动增加其上的负载,然后再向其发送其全部负载份额。下表显示了为其设置三个参数的值。

表 1. 参数值

参数
时间间隔(秒) 0
新服务请求率 10、20、40 和 0,按照您选择的间隔
新服务请求费率的单位 每秒的请求

将新服务请求速率参数设置为 0 时,Service3 不再被视为新服务,并接收其负载的全部份额。

假定您在服务 3 的提升期间添加另一个服务,即 Service4。在此示例中,当新的服务请求速率参数设置为 40 时,将添加 ServicE4。因此,服务 4 开始每秒接收 40 个请求。

下表显示了本示例所述期间服务上的负载分布。

表 2. 手动加速负载时服务上的负载分配

  新服务请求速率 = 10 个请求/秒 (Service3added) 新服务请求速率 = 20 个请求/秒 新服务请求速率 = 40 个请求/秒 (Service4added) 新服务请求速率 = 0 个请求/秒(新服务退出慢速启动模式)
Service1 115 110 80 60
Service2 115 110 80 60
Service3 10 20 40 60
Service4 - - 40 60
总请求数/秒(虚拟服务器上的负载) 240 240 240 240

自动缓慢启动

如果希望设备按指定的时间间隔自动增加新服务的负载,直到该服务可以处理其全部负载份额,请设置新的服务请求速率参数、单位参数和增量间隔。当所有参数都设置为 0 以外的值时,设备将新服务上的负载按指定时间间隔按新服务请求速率的值递增,直到服务收到负载的全部份额。

例如,假定四个服务,即服务 1、服务 2、服务 3 和服务 4 绑定到负载平衡虚拟服务器 vserver1。进一步假设 vserver1 每秒接收 100 个请求,并且它在服务间均匀分配负载(每个服务每秒 25 个请求)。将第五个服务 Service5 添加到配置时,您可能希望设备在前 10 秒内每秒发送 4 个新服务请求,在接下来的 10 秒内每秒发送 8 个请求,依此类推,直到每秒收到 20 个请求。对于此要求,下表显示了为其设置三个参数的值:

表 3. 参数值

参数
时间间隔(秒) 10
增量值 4
新服务请求费率的单位 每秒的请求

使用此配置,新服务在添加或其状态从向下更改为向上 50 秒后,开始接收与现有服务相同的请求。在此期间的每个时间间隔内,设备将在没有逐步增量的情况下发送到新服务的多余请求分配给现有服务器。例如,在没有逐步增量的情况下,包括 Service5 在内的每个服务每秒都会收到 20 个请求。通过逐步增量,在前 10 秒内,当 Service5 每秒仅接收 4 个请求时,设备将每秒多出的 16 个请求分配到现有服务,从而产生下表所示的分配模式,并在 50 秒内的时间段内分配模式。在 50 秒的时间段后,Service5 不再被视为一项新服务,并且它接收其正常的流量份额。

表 4. 立即添加 Service5 后 50 秒内所有服务的负载分配模式

  0 秒 10 秒 20 秒 30 秒 40 秒 50 秒
Req/sec forService1 25 24 23 22 21 20
Req/sec forService2 25 24 23 22 21 20
Req/sec forService3 25 24 23 22 21 20
Req/sec forService4 25 24 23 22 21 20
Req/sec forService5 0 4 8 12 16 20
总请求数/秒(虚拟服务器上的负载) 100 100 100 100 100 100

图 1. 添加 Service5 后 50 秒内所有服务的负载分布模式图

负载分布图

另一种要求可能是设备在前 5 秒内发送现有服务上 Service5 25% 的负载,在接下来 5 秒内发送 50% 的负载,依此类推,直到每秒收到 20 个请求。对于此要求,下表显示了为其设置三个参数的值。

表 5. 参数值

参数
时间间隔(秒) 5
增量值 25
新服务请求费率的单位 百分比

使用此配置,服务在添加服务或其状态从向下更改为向上 20 秒后开始接收与现有服务相同的请求。新服务提升期间的流量分布与前面描述的流量分布相同,其中步长增量的单位为“每秒请求”。

设置慢速启动参数

可以使用 set lb vserver 或 add lb vserver 命令来设置 slow start 参数。以下命令用于在添加虚拟服务器时设置慢速启动参数。

使用命令行界面为新服务配置逐步加载增量

在命令提示符处,键入以下命令以配置服务加载中的逐步增量并验证配置:

add lb vserver <name> <serviceType> <IPAddress> <port> [-newServiceRequest <positive_integer>] [<newServiceRequestUnit>] [-newServiceRequestIncrementInterval <positive_integer>]

show lb vserver <name>

示例

set lb vserver BR_LB -newServiceRequest 5 PER_SECOND -newServiceRequestIncrementInterval 10
Done

show lb vserver BR_LB
BR_LB (192.0.2.33:80) - HTTP Type: ADDRESS
State: UP
...
...
New Service Startup Request Rate: 5 PER_SECOND, Increment Interval: 10
...
...
Done

使用配置实用程序为新服务配置逐步加载增量

  1. 导航到流量管理 > 负载平衡 > 虚拟服务器,然后打开虚拟服务器。
  2. 在“高级设置”中,选择“方法”,然后设置以下慢速启动参数:
    • 新服务启动请求速率。
    • 新的服务要求股。
    • 增量间隔。

使用虚拟服务器级慢速启动,逐渐增加新服务的负载