Citrix ADC

负载均衡服务的优先顺序

服务优先级顺序功能使您能够根据负载平衡选择首选项确定服务或服务组的优先顺序。执行以下操作时,可以配置优先级顺序:

  • 将服务绑定到负载平衡虚拟服务器。
  • 将服务组绑定到负载平衡虚拟服务器。
  • 将服务组成员绑定到负载平衡服务组。

目前,您可以使用以下方法配置服务的优先级顺序。但是,这些方法有以下限制:  

  • 配置备份虚拟服务器链:配置行数很多,您必须多次运行 show 命令才能知道每个虚拟服务器的所有 LB 服务的状态。

  • 配置首选位置:您必须为所有应用程序终端节点创建位置条目。

服务的优先级顺序功能使用较少的配置命令解决了上述限制,并帮助您完成首选位置配置,而无需使用所有负载平衡服务的 IP 地址的位置表示。

为负载平衡服务配置优先级顺序

要配置负载平衡服务的优先级顺序,请将 -order <number> 参数添加到 bind 命令中。

注意:

最低订单号的优先级最高。

命令:

bind lb vserver <vservername> <servicename/servicegroupname> -order <number>

例如,假设一组绑定到负载平衡虚拟服务器 (vs1) 的服务。使用
- order <number> 参数,您可以按如下方式确定服务选择顺序的优先级:

  • Set 1 (s1, s2) bound to vs1 – order 1 
  • Set 2 (s3, s4) bound to vs1 – order 2 
  • Set 3 (s5, s6) bound to vs1 – order 3 

将服务绑定到 vs1 后,当 vs1 收到客户端流量时,服务的选择顺序如下:

  • 虚拟服务器 (vs1) 首先选择顺序编号为1的集合1(s1和s2)中的服务,因为为该集分配了最低的订单号。默认情况下,最低订单号的优先级最高。
  • 如果集合1中的所有服务都已关闭,则vs1选择顺序编号为2的集合2(s3和s4)。
  • 如果集合1和集合2中的所有服务都关闭了,vs1选择顺序号为3的集合3(s5和s6)。

使用 CLI 为负载平衡服务配置优先级顺序

要配置负载平衡服务的优先级顺序,请在命令提示符下键入以下命令:

  1. 添加 LB 虚拟服务器。

    add lb vserver vs1 HTTP 1.1.1.1 80

  2. 添加 LB 服务。

    add service s[1-6] 2.2.2.[1-6] HTTP 80

  3. 设置订单号并将服务绑定到 LB 虚拟服务器。

    bind lb vserver vs1 s1 -order 1

    bind lb vserver vs1 s2 -order 1

    bind lb vserver vs1 s3 -order 2

    bind lb vserver vs1 s4 -order 2

    bind lb vserver vs1 s5 -order 3

    bind lb vserver vs1 s6 -order 3

使用 GUI 配置负载平衡服务的优先级顺序

必备条件:

  • 您已创建负载平衡虚拟服务器。
  • 您已经创建了服务。

要配置负载平衡服务的优先级顺序并将其绑定到虚拟服务器,请执行以下操作:

  1. 导航到流量管理 > 负载平衡 > 虚拟服务器,然后双击负载平衡虚拟服务器。

  2. 负载平衡虚拟服务器服务和服务组部分下,单击 负载平衡虚拟服务器服务绑定

  3. 在 “负载平衡虚拟服务器服务绑定” 对话框中,单击 “添加绑定”。

  4. 在 “服务绑定” 对话框中,选择一个服务。

  5. Order(顺序)字段中键入数字以设置服务的优先级顺序。

    配置优先顺序和绑定 LB 服务

  6. 单击 “绑定”。

  7. 重复步骤 1-6,为不同的服务配置不同的优先级顺序号。

使用 LB 策略命令为负载平衡服务配置优先级顺序

默认情况下,最低订单号的优先级最高。但是,您可以使用新的 LB 操作和策略命令推迟此默认行为。您可以根据传入的客户端流量或客户端数据配置服务选择顺序。

例如,假设一组绑定到虚拟服务器 (vs1) 的服务。使用 - order <number> 参数,您已按如下方式配置了服务的优先级顺序:

  • Set 1 (s1, s2) bound to vs1 – order 1 

  • Set 2 (s3, s4) bound to vs1 – order 2 

  • Set 3 (s5, s6) bound to vs1 – order 3 

默认情况下,最低订单号的优先级最高。因此,对于集合 1、set2 和 set3 中的服务,默认优先级顺序分别为 1、2 和 3。但是,对于特定的客户端流量,您希望将优先级顺序更改为 3、1 和 2。为此,您可以添加一个 LB 策略并将其绑定到 vs1。

LB 策略命令由两个元素组成:规则和操作。该规则与操作相关联,如果请求与规则匹配,则执行该操作。

注意:

LB 策略命令对于 LB 和 GSLB 配置都很常见,适用于 Citrix ADC 设备处理的请求。

LB 操作

**表达式:**

add lb action <name> <type> <string>

**示例:**

add lb action act1 -type SELECTIONORDER -value 3 2 1

参数:

  • name:操作的名称。

  • type:操作类型。

  • string:指定操作的值。

LB 策略

**表达式:**

add lb policy <name> <rule> <action> <undefaction>

**示例:**

add lb policy pol1 -rule CLIENT.IP.SRC.EQ(8.8.8.8) -action act1

参数:

  • name:策略的名称。

  • rule:规则由一个或多个表达式组成。该规则与操作相关联,如果请求与规则匹配,则执行该操作。

  • action:支持 DROP、NOLBACTION 和 RESET。

  • undefaction:当请求与策略不匹配时,Citrix ADC 设备将生成未定义的事件(UNDEF 事件)。您可以使用 set lb param -undefAction <action> 命令来设置未定义的操作。您可以将这些操作分配给未定义的事件:DROP、NOLBACTION 和 RESET。

让我们来看一个示例,在该示例中,您可以添加 LB 操作、负载平衡策略,然后将策略绑定到负载平衡虚拟服务器 (vs1),如下所示:

add lb action act1 -type SELECTIONORDER -value 3 1 2

add lb policy pol1 -rule CLIENT.IP.SRC.EQ(8.8.8.8) -action act1

bind lb vserver vs1 -policyName pol1 -priority 10

该规则选择与 IP 地址 8.8.8.8 匹配的客户端流量,然后将该流量发送到 vs1。LB 操作类型 (SELECTIONORDER) 定义了服务选择顺序。将 LB 策略绑定到 vs1 后,当 vs1 收到来自 IP 地址 8.8.8.8 的客户端流量时,将按以下顺序选择服务:

  1. 虚拟服务器 (vs1) 选择优先级顺序为3的集合3(s5和s6)中的服务。

  2. 如果集合 3 中的所有服务都已关闭,则 vs1 选择优先级顺序为 2 的集合 1(s1 和 s2)。

  3. 如果集合3和集合2中的所有服务都关闭了,vs1选择顺序为1的集合1(s1和s2)。

使用 CLI 使用 LB 策略命令为负载平衡服务配置优先级顺序

要使用 LB 策略命令配置负载平衡服务的优先级顺序,请在命令提示符下键入以下命令:

  1. 添加 LB 操作。

    add lb action act1 -type SELECTIONORDER -value 3 1 2

  2. 添加 LB 策略。

    add lb policy pol1 -rule CLIENT.IP.SRC.EQ(8.8.8.8) -action act1

  3. 添加 LB 虚拟服务器。

    add lb vserver vs1 HTTP 1.1.1.1 80

  4. 将 LB 策略绑定到 LB 虚拟服务器。

    bind lb vs vs1 -policyName pol1 -priority 10

  5. 添加 LB 服务。

    add service s[1-6] 2.2.2.[1-6] HTTP 80

  6. 设置顺序并将服务绑定到 LB 虚拟服务器。

    bind lb vserver vs1 s1 -order 1

    bind lb vserver vs1 s2 -order 1

    bind lb vserver vs1 s3 -order 2

    bind lb vserver vs1 s4 -order 2

    bind lb vserver vs1 s5 -order 3

    bind lb vserver vs1 s6 -order 3

使用 GUI 使用 LB 策略命令配置负载平衡服务的优先级顺序

必备条件:

  • 您已创建负载平衡虚拟服务器。
  • 您已经创建了服务。

步骤 1-创建 LB 操作:

  1. 导航到 AppExpert > LB > 操作

  2. LB 操作中,单击添加

  3. 在 “创建 LB 操作 ” 对话框中,指定以下参数的值:

    • 动作名称:act1
    • 类型:选择顺序
    • :3 1 2

      注意:

      ” 字段中的数字用空格分隔。

    添加 LB 操作

  4. 单击 “ 创建”。

步骤 2-创建负载平衡策略:

  1. 导航到 AppExpert > LB > 策略

  2. LB 策略中,单击添加

  3. 在 “创建 LB 策略 ” 对话框中,指定以下参数的值:

    • 名称:pol1
    • 行动:act1
    • 未定义结果操作:NOLBACTION
    • 表达式:CLIENT.IP.SRC.EQ (8.8.8.8)

    添加 LB 策略

  4. 单击 “创建”。

步骤 3-将 LB 策略绑定到 LB 虚拟服务器:

  1. 导航到流量管理 > LB > 虚拟服务器,然后双击虚拟服务器。

  2. “高级设置”中,单击 “策略”。

  3. 在 “策略” 部分中,单击加号 (+) 图标。

  4. 在 “ 选择类型 ” 对话框中,指定以下参数的值:

    • 选择策略:LB
    • 选择类型:请求
  5. 单击 Add Binding(添加绑定)。

  6. 在 “ 策略绑 定” 对话框中,指定以下参数的值:

    • 选择策略:池 1
    • 优先级:10
    • Goto 表达式:END
    • 调用 labelType:无

    绑定 LB 策略

  7. 单击 Bind(绑定)。

步骤 4-为负载平衡服务配置优先级顺序:

要配置负载平衡服务的优先级顺序,请参阅 使用 GUI 配置负载平衡服务的优先级顺序 过程。

服务的持久性设置

如果为服务配置了持久性,则默认情况下始终优先选择持久性。

例如,假设配置了持久性且优先级为 1 的服务。如果优先级顺序为 0 的服务为 UP,则优先级顺序为 1 的服务总是被赋予优先级。

但是,您可以使用以下 CLI 命令覆盖此默认行为:

set lb param –overridePersistencyforOrder <YES/NO>

让我们考虑以下示例:

一组服务按以下优先级顺序绑定到虚拟服务器 (vs1):

  • Set 1 (s1, s2) bound to vs1 – order 1 

  • Set 2 (s3, s4) bound to vs1 – order 2 

在命令提示符下键入以下命令以覆盖持久性:

set lb parameter -overridePersistencyforOrder YES

如果set 1(配置了具有持久性的服务)为DOWN,则set 2服务将处理所有请求,直到集合1服务启动。优先级 2 的持久性条目已创建。

假设一段时间后,set 1服务已启动。现在,集合1和集合2服务都已启动以处理请求。在这种情况下,当高阶服务启动时,将做出新的负载平衡决策。持久性条目被新的负载平衡条目覆盖。

优先级切换

使用优先级切换功能,您可以在版本升级期间将优先级较高的服务的所有流量切换到低优先级服务。您可以使用以下命令切换优先级:

  • set lb vserver -toggleorder<Ascending/Descending>

  • set lb vserver v1 -orderthreshold 80

例如,让我们假设有两个具有以下优先级的服务:

  • Service 1- order 0 
  • Service 2 – order 1 

默认情况下,服务 1 处理所有流量。如果服务 1 需要升级,则需要将流量重新路由到服务 2。

在命令提示符下,键入以下命令以切换优先级:

set lb vserver –toggleorder Descending

默认情况下,0 的优先级更高。但是,切换优先级后,将1视为更高的优先级。如果存在服务的持久性条目,则持久性首选项的行为与 服务的持久性设置 部分所述相同。