Citrix ADC

GSLB 服务的优先顺序

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

  • 将服务绑定到 GSLB 虚拟服务器。
  • 将服务组绑定到 GSLB 虚拟服务器。
  • 将服务组成员绑定到 GSLB 服务组。

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

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

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

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

配置 GSLB 服务的优先级顺序

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

注意:

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

命令:

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

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

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

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

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

使用 CLI 配置 GSLB 服务的优先级顺序

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

  1. 添加 GSLB 站点。

    add gslb site site1 1.1.1.1

    add gslb site site2 1.1.1.2

  2. 添加 GSLB 虚拟服务器。

    add gslb vserver gv1 HTTP

  3. 添加 GSLB 服务。

    add gslb service gsvc1 1.1.1.3 http 80 -sitename site1

    add gslb service gsvc2 1.1.1.4 http 80 -sitename site2

    add gslb service gsvc3 1.1.1.5 http 80 -sitename site1

    add gslb service gsvc4 1.1.1.6 http 80 -sitename site2

    add gslb service gsvc5 1.1.1.7 http 80 -sitename site1

    add gslb service gsvc6 1.1.1.8 http 80 -sitename site2

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

    bind gslb vserver gv1 gsvc1 -order 1

    bind gslb vserver gv1 gsvc2 -order 1

    bind gslb vserver gv1 gsvc3 -order 2

    bind gslb vserver gv1 gsvc4 -order 2

    bind gslb vserver gv1 gsvc5 -order 3

    bind gslb vserver gv1 gsvc6 -order 3

使用 GUI 配置 GSLB 服务的优先级顺序

必备条件:

  • 您已经创建了 GSLB 站点。
  • 您已创建 GSLB 虚拟服务器。
  • 您已经创建了 GSLB 服务。

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

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

  2. GSLB 虚拟服务器的 “GSLB 服务和 GSLB 服务组绑定 ” 部分下,单击 “ GSLB 虚拟服务器到 GSLB 服务绑定”。

  3. 在 “GSLB 服务和 GSLB 服务组绑定” 对话框中,单击 “添加绑定”。

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

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

    配置优先级顺序并绑定 GSLB 服务

  6. 单击 “绑定”。

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

使用 LB 策略命令配置 GSLB 服务的优先级顺序

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

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

  • 设置 1 (s1, s2) 绑定到 gv1 — 顺序 1

  • 设置 2 (s3, s4) 绑定到 gv1 — 顺序 2

  • 设置 3 (s5, s6) 绑定到 gv1 — 顺序 3

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

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 操作、LB 策略,然后将策略绑定到 GSLB 虚拟服务器 (gv1),如下所示:

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 gslb vserver gv1 -policyName pol1 -priority 20 - gotoPriorityExpression END -type REQUEST

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

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

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

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

使用 CLI 使用 LB 策略命令配置 GSLB 服务的优先级顺序

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

  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. 添加 GSLB 站点。

    add gslb site site1 1.1.1.1

    add gslb site site2 1.1.1.2

  4. 添加 GSLB 虚拟服务器。

    add gslb vserver gv1 HTTP

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

    bind gslb vserver gv1 -policyName pol1 -priority 20 - gotoPriorityExpression END -type REQUEST

  6. 添加 GSLB 服务。

    add gslb service gsvc1 1.1.1.3 http 80 -sitename site1

    add gslb service gsvc2 1.1.1.4 http 80 -sitename site2

    add gslb service gsvc3 1.1.1.5 http 80 -sitename site1

    add gslb service gsvc4 1.1.1.6 http 80 -sitename site2

    add gslb service gsvc5 1.1.1.7 http 80 -sitename site1

    add gslb service gsvc6 1.1.1.8 http 80 -sitename site2

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

    bind gslb vserver gv1 gsvc1 -order 1

    bind gslb vserver gv1 gsvc2 -order 1

    bind gslb vserver gv1 gsvc3 -order 2

    bind gslb vserver gv1 gsvc4 -order 2

    bind gslb vserver gv1 gsvc5 -order 3

    bind gslb vserver gv1 gsvc6 -order 3

使用 GUI 使用 LB 策略命令配置 GSLB 服务的优先级顺序

必备条件:

  • 您已经创建了 GSLB 站点。
  • 您已创建 GSLB 虚拟服务器。
  • 您已经创建了服务。

步骤 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 策略绑定到 GSLB 虚拟服务器:

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

  2. GSLB 虚拟服务器“高级设置” 部分下,单击 “策略”。

  3. 策略部分中,单击 GSLB 虚拟服务器 LB 策略绑定

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

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

    绑定 LB 策略

  5. 单击 Bind(绑定)。

步骤 4-配置 GSLB 服务的优先级顺序:

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

服务的持久性设置

如果为服务配置了持久性,则默认情况下始终将首选项设置为持久性。

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

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

set gslb param -overridePersistencyforOrder<YES/NO>

让我们考虑以下示例:

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

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

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

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

set gslb parameter -overridePersistencyforOrder YES

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

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

优先级切换

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

  • set gslb vserver –toggleorder <Ascending/Descending>

  • set gslb vserver v1 -orderthreshold 80

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

  • Service 1- order 0 
  • 服务 2 - 顺序 1

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

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

set gslb vserver –toggleorder Descending

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