ADC

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

您可以将 NetScaler 设备配置为逐步增加服务的负载(该服务每秒接收的请求数),在将服务添加到负载平衡配置中或将状态从向下更改为 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 不再被视为新服务,而是接收其全部负载份额。

假设您在 Service3 的升级期间添加了另一项服务 Service4。在此示例中,当新的服务请求速率参数设置为 40 时,会添加 Service4。因此,Service4 开始每秒接收 40 个请求。

下表显示了在本示例中描述的时间段内服务的负载分布。

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

  new service request rate = 10 req/sec (Service3added) new service request rate = 20 req/sec 新服务请求率 = 40 请求/秒(service4Added) new service request rate = 0 req/sec (new services exit slow start mode)
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
新服务请求率的单位 每秒的请求

使用此配置,新服务在添加或其状态从 DOWN 更改为 UP 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
新服务请求率的单位 百分比

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

设置慢速启动参数

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

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

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

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

show lb vserver <name>
<!--NeedCopy-->

示例

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
<!--NeedCopy-->

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

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