ADC

如果后端服务器响应超时,请求重试

请求重试可用于另一种情况,在这种情况下,如果后端服务器需要更多时间来响应请求,则设备会在超时时执行重新负载平衡并将请求转发到下一个可用服务器。

后端服务器响应超时时请求重试的工作原理

下图显示了组件之间的相互作用:

后端服务器响应超时时请求重试的工作原理

  1. 该过程从在您的设备上启用 appqoe 功能开始。
  2. appqoe 配置有“retryonTimeout”参数,以毫秒为单位。
  3. 当设备发送请求时,如果服务器需要更多时间来响应,则设备会根据配置的超时 值执行重新负载平衡。设备重置连接,选择其他服务并转发请求,而不是等待服务器响应。
  4. 负载平衡虚拟服务器收到响应后,设备将响应转发给客户端。使用超时参数可防止设备继续等待服务器响应,从而增加 RTT。
  5. 如果可用的后端服务器等于或小于重试次数,并且所有服务器都 因请求而超时,则设备将响应 500 内部服务器错误。考虑一个具有五台可用服务器且重试计数设置为 6 台的场景。如果所有五台服务器的请求都超时,则设备会向客户端返回 500 内部服务器错误。
  6. 同样,如果后端服务器的数量超过重试次数,并且如果后端服务器在请求时超时,则设备会继续等待最后一次服务,直到服务器发出响应或客户端空闲连接超时。考虑一个包含三台后端服务器并将重试计数设置为两台的场景。如果所有三台服务器在请求时都超时,则设备会继续等待第三个服务,直到服务器发出响应或客户端空闲连接超时。

在后端服务器响应超时时配置请求重试(GET 和 POST 方法)

要在超时时配置 GET 方法的请求重试,必须完成以下步骤。

  1. 启用应用程序
  2. 配置应用程序操作
  3. 添加 appqoe 策略
  4. 将 appqoe 策略绑定 到负载平衡虚拟服务器

注意:

请求超时重试场景也适用于 POST 方法。

启用应用程序

在命令提示符下,键入:

enable ns feature appqoe

为超时添加 appqoe 操作

您必须将 appqoe 操作配置为在超时时重试,并定义重试次数。

在命令提示符下,键入:

add appqoe action <name> -retryOnTimeout <msecs> -numRetries <positive_integer>

示例:

add appqoe action appact1 -retryOnTimeout 35 –numRetries 5

添加 appqoe 策略

要实现 appqoe,必须配置 appqoe 策略以定义如何将连接排队。

在命令提示符下,键入:

add appqoe policy <name> -rule <rule> -action <name>

示例:

add appqoe policy timeout_policy -rule http.req.method.eq(get) -action appact1

将 appqoe 策略绑定 到负载平衡虚拟服务器

当后端服务器需要很长时间才能响应时,如果您希望负载平衡虚拟服务器将请求转发到下一个可用服务,则必须将 appqoe 策略绑定到平衡虚拟服务器。

在命令提示符下,键入:

bind lb vserver <name> ((<serviceName> (-policyName <string> [-priority <positive_integer>] [-gotoPriorityExpression <expression>] [-type ( REQUEST | RESPONSE )]

示例:

bind lb vserver v1 -policyName timeout_policy -type REQUEST -priority 1

使用 NetScaler GUI 配置 AppQoE 策略,以便在超时时重新进行负载平衡

  1. 导航到 AppExpert > AppQoE 策略。
  2. AppQoE 策略 页面中,单击“添加”。
  3. 在“创建 AppQoE 策略”页面中,设置以下参数:

    a. 姓名。AppQoE 策略名称 b. 操作。 添加或编辑操作。要创建新操作,请参阅创建 AppQoE 操作部分。 c. 表达式。选择或输入“http.req.method.eq (get)”策略表达式。

  4. 单击创建关闭

使用 NetScaler GUI 为请求重试配置 appQoE 操作

  1. 导航到 AppExpert > AppQoE 操作
  2. AppQoE 操作 页面中,单击“添加”。
  3. 创建 AppQoE 操作 页面中,为后端服务器响应超时时重试设置以下参数:a. 超时时重试。 向后端服务器发送请求后,在请求超时(以毫秒为单位)时重试。
  4. 单击创建关闭
如果后端服务器响应超时,请求重试