Citrix ADC

请求重试

当后端服务器重置 TCP 连接时,请求重试功能会将请求转发到下一个可用的服务器,而不是将重置发送到客户端。通过执行重新负载平衡,当设备向下一个可用服务发起相同的请求时,客户端可以保存 RTT。

请求重试功能适用于以下错误情况:

  • 当设备发送请求数据包时,后端服务器会重置 TCP 连接。

请求重试的工作原理

下图显示了组件之间的交互方式。

请求重试的工作原理

  1. 此过程首先在设备上启用 AppQoE 功能。
  2. 当客户端发送 HTTP 或 HTTPS 请求时,负载平衡虚拟服务器将请求发送到后端服务器。
  3. 如果请求的服务不可用,后端服务器将重置 TCP 连接。
  4. 如果 AppQoE 配置启用了“重试”,并指定了所需的重试次数,则负载平衡虚拟服务器将使用配置的负载平衡算法将请求转发到下一个可用的应用程序服务器。
  5. 负载平衡虚拟服务器收到响应后,设备将响应转发给客户端。
  6. 如果可用的后端服务器等于或小于重试计数,并且所有服务器都发送重置,则设备将响应 500 个内部服务器错误。假设有五个可用服务器并且重试计数设置为六个的情况。如果所有五台服务器都重置了连接,则设备将向客户端返回 500 内部服务器错误。
  7. 同样,如果后端服务器的数量超过重试计数,并且后端服务器重置连接,则设备将重置转发给客户端。考虑将三个后端服务器并将重试计数设置为两个的情况。如果三台服务器重置连接,则设备会向客户端发送重置响应。

为 GET 方法配置请求重试

要配置 GET 方法的重试功能,必须完成以下步骤。

  1. 启用应用 QoE
  2. 添加 AppQoE 操作
  3. 添加 AppQoE 策略
  4. 将负载平衡虚拟服务器绑定到 AppQoE 策略

启用应用 QoE

在命令提示窗口中,键入: enable ns feature appqoe

添加 AppQoE 操作

您必须配置 AppQoE 操作,以指定是否希望设备在 TCP 重置后重试以及重试次数。

add appqoe action reset_action -retryOnReset ( YES | NO ) -numretries <positive_integer>]

示例:

add appqoe action reset_action –retryOnReset YES –numretries 5

其中, retryOnReset. 如果后端服务器重置 TCP 连接,请启用重试。 数字。重试计数。

添加 AppQoE 策略

要实施 AppQoE,您必须配置 AppQoE 策略,以便在特定队列中优先传入的 HTTP 或 SSL 请求。

在命令提示窗口中,键入:

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

示例:

add appqoe policy reset_policy -rule http.req.method.eq(get) -action reset_action

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

当后端服务器重置 TCP 数据包请求时,如果希望负载平衡虚拟服务器将请求转发到下一个可用服务,则必须将负载平衡虚拟服务器绑定到 AppQoE 策略。

在命令提示窗口中,键入:

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

示例:

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

配置 POST 请求的请求重试

重新负载将数据写入后端服务器的平衡请求时,必须始终谨慎。对于此类请求,请确保内容长度很短。如果内容长度很长,则可能会导致资源消耗。按照以下给出的步骤配置 POST 请求的重新负载平衡。

  1. 启用应用 QoE
  2. 添加 AppQoE 操作
  3. 添加 AppQoE 策略
  4. 将负载平衡虚拟服务器绑定到 AppQoE 策略

启用应用 QoE

在命令提示窗口中,键入:

enable ns feature appqoe

添加应用程序操作

您必须添加 AppQoE 操作,以便在 TCP 重置后重试和重试次数。

add appqoe action reset_action -retryOnReset ( YES | NO ) -numretries <positive_integer>]

示例:

add appqoe action reset_action –retryOnReset YES –numretries 5

添加应用程序策略

要实施 AppQoE,必须配置 AppQoE 策略,以定义如何在特定队列中排队连接。

在命令提示窗口中,键入:

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

示例:

add appqoe policy reset_policy -rule HTTP.REQ.CONTENT_LENGTH.le(2000) -action reset_action

注意:

如果您希望限制请求重试功能的内容长度小于 2000,则可以使用此配置。

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

当后端服务器重置 TCP 数据包请求时,如果希望负载平衡虚拟服务器通过特定队列将请求转发到下一个可用服务,则必须将负载平衡虚拟服务器绑定到 AppQoE 策略。

在命令提示窗口中,键入:

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

示例: bind lb vserver v1 -policyName reset_policy -type REQUEST -priority 1

使用 Citrix ADC GUI 为请求重试配置 AppQoE 策略

  1. 导航至AppExpert > 应用 QoE > 策略
  2. AppQoE 策略页中,单击添加
  3. 创建 AppQoE 策略页中,设置以下参数: a. 名称。应用 QoE 策略名称 b. 操作。添加或编辑操作。要创建操作,请参阅创建应用 QoE 操作 部分。 c. 表达式。选择或输入 HTTP.REQ.CONTENT_LENGTH.le (2000) 策略表达式。
  4. 点击 创建关闭

    请求重试或重新负载平衡的 AppQoE 策略

使用 Citrix ADC GUI 为请求重试平衡配置 AppQoE 操作

  1. 导航至AppExpert > 应用 QoE > 操作
  2. AppQoE 操作 页面中,单击 添加
  3. 创建 AppQoE 操作页中,为 TCP 重置时重试设置以下参数: a. 重试 TCP 重置时重试。选中该复选框可启用 TCP 重置的重试操作。 b. 重试计数。输入重试计数。
  4. 点击 创建关闭

    为请求重试平衡配置 AppQoE 操作

请求重试