每个 NSX Advanced Load Balancer 服务引擎 (SE) 组具有每个虚拟服务的最小/最大扩展数设置。这些设置控制虚拟服务可以扩展到的 SE 数。本主题介绍了更改这两个设置对虚拟服务的影响。

有关扩展设置的更多信息,请参见服务引擎组

在以下场景中,虚拟服务可能会受到影响:

  1. 动态更改了其 SE 组的最小-最大设置。放置在 SE 组上的所有虚拟服务都会受到影响。

  2. 将其移动到另一个具有不同设置的 SE 组。

更改的影响

更改 SE 组的 min_scaleout_per_vsmax_scaleout_per_vs 设置将导致上述的相同行为,但以下情况例外:

  • 增加 SE 组的 min_scaleout_per_vs 仅增加虚拟服务放置次数(如果新的最小值大于当前的虚拟服务放置次数)。

  • 如果禁用并重新启用虚拟服务,则放置次数上限为 max_scaleout_per_vs

  • 在将虚拟服务从一个 SE 组迁移到另一个 SE 组时,NSX Advanced Load Balancer 不考虑组中的放置次数。虚拟服务是根据目标组的 min_scaleout_per_vs 值放置的。

场景

下一节说明了更改 SE 组的每个虚拟服务的最小-最大扩展数设置时对虚拟服务的影响。

为了理解这些示例,必须注意,在内部为虚拟服务请求的 SE 数是以下两个数字之和:

  1. 其 SE 组的每个 VS 的最小扩展数 (min_scaleout_per_vs)。

  2. 用户扩展因子,这是一个内部变量,对于所有虚拟服务,它从 0 开始。在用户扩展时,该数字增加 1;在用户缩减时,该数字减少 1。

一般行为

控制每个虚拟服务的最小和最大扩展数的所有更改的规则如下所示:

  • 减小每个虚拟服务的最小扩展数不会影响组中的现有虚拟服务的扩展数。

    • 对于这种情况,用户扩展数将增加每个虚拟服务的最小扩展数减少的数量。

    • 要将现有的虚拟服务缩减到 SE 组的最低级别,用户必须明确进行缩减。

  • 增加每个虚拟服务的最小扩展数仅增加现有虚拟服务的扩展数(如果新的最小扩展数大于虚拟服务的当前扩展数)。

  • 增加或减少 SE 组的每个虚拟服务的最大扩展数不会影响组中的现有虚拟服务的扩展数。

    • 对于 SE 数超过新的最大扩展数的虚拟服务,用户仍然能够手动进行缩减。

  • 停用并重新启用的虚拟服务将保留现有的扩展数,上限为 SE 组的当前每个 VS 最大扩展数。

  • 移动到另一个 SE 组的虚拟服务将按照新 SE 组的每个 VS 的最小扩展数进行放置。

更改 SE 组设置

下一节说明了更改每个虚拟服务的最小或最大扩展数时对 SE 组中的虚拟服务的影响:

  • 增加每个 VS 的最小扩展数

对于没有任何用户扩展的虚拟服务,如果增加 SE 组的最小扩展数,则会将虚拟服务的 SE 数增加到新的最小值。

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

初始状态

1

0

1

每个 VS 的最小扩展数:1 → 2

2

0

2

对于具有用户扩展的虚拟服务,只有在新的最小值大于虚拟服务的当前扩展数时,增加最小扩展数才会增加 SE 数。

示例 1

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

初始状态

1

0

1

用户扩展数

2

1

1

每个 VS 的最小扩展数:1 → 2

2

0

2

示例 2

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

初始状态

2

1

1

每个 VS 的最小扩展数:1 → 3

3

0

3

  • 减少每个 VS 的最小扩展数

减少 SE 组的每个 VS 的最小扩展数不会影响现有虚拟服务的扩展数。为了保持相同数量的 SE,用户扩展数将增加最小扩展数减少的数量。

示例

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

初始状态

2

0

2

每个 VS 的最小扩展数:2 → 1

2

1

1

用户缩减数

1

0

1

该行为的目的是,在减少每个虚拟服务的最小扩展数时,保留位于 SE 组中的所有虚拟服务的当前状态。通过将用户扩展数增加 min_scaleout_per_vs 减少的数量,我们将请求的 SE 数保持不变。

如果上面示例中的所需结果是将 SE 组中的每个虚拟服务缩减到 1 个 SE,可以使用以下三个选项:

  1. 在更改 SE 组设置后,手动缩减每个虚拟服务以将用户扩展数减少到 0 个。

  2. 将 SE 组的每个 VS 的最大扩展数设置为 1。停用并启用所有虚拟服务(也可以在停用后减少最大扩展数)。

  3. 将 SE 组中的所有虚拟服务移动到另一个 min_scaleout_per_vs 为 1 的 SE 组。

  • 更改每个 VS 的最大扩展数

更改每个 VS 的最大扩展数不会影响其他变量。

如果减少 SE 组的每个 VS 的最大扩展数,该 SE 组中的所有虚拟服务保留相同数量的 SE。因此,在这种情况下,为虚拟服务请求的 SE 数可能大于新的每个 VS 最大扩展数。用户可以选择手动缩减以将该数量减少到新的最大值。

示例

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

每个 VS 的最大扩展数

初始状态

3

2

1

4

每个 VS 的最大扩展数:4 → 2

3

2

1

2

用户扩展数

2

1

1

2

  • 禁用并启用 VS

如果停用并随后启用虚拟服务,则放置它的 SE 数为当前的每个 VS 最小扩展数 + 用户扩展数,上限为 SE 组的当前每个 VS 最大扩展数。

如果禁用并随后启用虚拟服务而不更改 SE 组的扩展数设置,则虚拟服务保持相同的扩展数。

示例 1

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

每个 VS 的最大扩展数

初始状态

3

2

1

4

已禁用 VS

0

2

1

4

已启用 VS

3

2

1

4

示例 2

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

每个 VS 的最大扩展数

初始状态

2

0

2

4

已禁用 VS

0

0

2

4

每个 VS 的最小扩展数:2 → 1

0

1

1

4

已启用 VS

2

1

1

4

示例 3

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

每个 VS 的最大扩展数

初始状态

4

3

1

4

每个 VS 的最大扩展数:4 → 1

4

3

1

1

已禁用 VS

0

3

1

1

已启用 VS

1

0

1

1

  • 将 VS 移动到另一个具有不同设置的 SE 组

    如果将虚拟服务移动到另一个 SE 组,则放置虚拟服务的 SE 数始终为新 SE 组的 min_scaleout_per_vs

示例 1

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

每个 VS 的最大扩展数

初始状态

2

0

2

4

用户扩展数

3

1

2

4

VS 已移动到新的 SE 组(最小值:1,最大值:2)

1

0

1

2

由于虚拟服务已移动到新的 SE 组,因此, NSX Advanced Load Balancer 不会尝试保留其状态,并采用新 SE 组的设置。

示例 2

操作

请求的 SE 数

用户扩展数

每个 VS 的最小扩展数

每个 VS 的最大扩展数

初始状态

1

0

1

4

VS 已移动到新的 SE 组(最小值:2,最大值:2)

2

0

2

2

对于传统活动-备用 SE 组,每个 VS 的最小扩展数实际为 2,每个 VS 的最大扩展数 2。

摘要

下表简要说明了各种场景的预期变化:

操作

VS:SE 数

↑ min_scaleout_per_vs

仅在当前 SE 数 < min_scaleout_per_vs 时增加

↓ min_scaleout_per_vs

保持不变

↑ max_scaleout_per_vs

保持不变

↓ max_scaleout_per_vs

保持不变

禁用/启用 VS

上限为 max_scaleout_per_vs

将 VS 移动到另一个 SE 组

新 SE 组的 min_scaleout_per_vs