本节介绍了 NSX Advanced Load Balancer SE 的弹性高可用性。

弹性高可用性 N+M 模式

N+M 是弹性高可用性的默认模式。

  • 在该模式下,每个虚拟服务通常仅放置在一个 SE 上。

  • N+M 中的 N 是指将虚拟服务放置在 SE 组中时所需的最小 SE 数量,该数量由 NSX Advanced Load Balancer Controller 根据“每个服务引擎的虚拟服务数”参数计算得出。N 随时间的推移而发生变化,因为将在组中放置或移除虚拟服务。

  • M 是指控制器为了在不减少 SE 组容量的情况下最多处理 M 个 SE 故障而启动的额外 SE 数量。M 显示在“缓冲区服务引擎”字段中。

注:

N+M 模式中的缓冲区 SE 是系统可以容忍的 SE 故障数,用于使虚拟服务正常运行(放置在至少 1 个 SE 上),但具有不同的容量。如果在 SE 组中设置了特定的每个虚拟服务的最小扩展数,并且除此之外还需要使用额外的 SE,则应根据计算结果增加缓冲区 SE。

弹性高可用性 N+M 示例

下图左侧显示了 20 个虚拟服务放置在一个 SE 组中。如果将每个 SE 的虚拟服务数设置为 8,则 N 为 3(20/8 = 2.5,四舍五入为 3)。如果 M = 1,则组 2 中总共需要 N+M = 3 + 1 = 4 个 SE。

注:

组中没有一个 SE 完全空闲。控制器会将虚拟服务放置在所有可用 SE 上。在 N+M 模式下,NSX Advanced Load Balancer 会确保总共存在足够的缓冲区容量,以用于处理一个 (M=1) SE 故障。在此示例中,4 个 SE 中的每个 SE 都放置了 5 个虚拟服务。总共有 12 个备用插槽仍可用于放置额外的虚拟服务,这足以处理一个 SE 故障。

下图右侧显示了 SE2 发生故障之后的 SE 组。SE2 中的 5 个虚拟服务已放置在正常运行的 SE(SE1、SE3 和 SE4)的备用插槽上。



如果发生以下两种情况中的一种,或两种情况都发生,负载不均衡可能会随着时间而消失:
  1. 在组中放置新的虚拟服务。在不影响 M=1 条件的情况下,最多可以放置 4 个虚拟服务。它们会放置在 SE5 上,因为 NSX Advanced Load Balancer 会先选择负载最少的 SE。

  2. 选中“自动重新均衡”选项(如上图所示)。

如果将 M 设置为 1,则 SE 组可以容忍单个 SE 故障。需要容忍多个 SE 故障的客户可将 M 设置为更大值。NSX Advanced Load Balancer 允许管理员在不中断任何服务的情况下动态增加 M。因此,可以从 M=1(大多数 N+M 部署的典型设置)开始,并在条件允许的情况下增加该值。

如果 N+M 组已扩展到最大服务引擎数,并且每个 SE 上已放置 N 个虚拟服务,则 NSX Advanced Load Balancer 将允许(在由 M 表示的备用容量中)放置额外的虚拟服务,但会记录 HA_COMPROMISED 事件。

对于“写入访问”云,NSX Advanced Load Balancer 将在五分钟后重新引导虚拟机以尝试恢复发生故障的 SE。再过五分钟后,NSX Advanced Load Balancer 将尝试删除发生故障的 SE 虚拟机,然后启动新的 SE 以还原配置的缓冲区容量。



如上图所示,在 5 次重新放置后仅剩余了少数插槽,如果将 NSX Advanced Load Balancer Orchestrator 模式设置为“写入访问”, NSX Advanced Load Balancer 将启动 SE5 以满足 M=1 条件,在这种情况下,至少需要有 8 个插槽可用于重新放置。
注:

为了留出时间确定故障原因,即使在五分钟后,SE 组中第一个发生故障的 SE 也不会自动删除。然后,您可以对发生故障的 SE 执行故障排除,并在无法还原时手动删除虚拟机。如果您未手动删除 SE 虚拟机,控制器会在 3 天后将其删除。

弹性高可用性活动/活动

在活动/活动模式下,NSX Advanced Load Balancer 会将每个虚拟服务放置在多个 SE 上,具体数量由每个虚拟服务的最小扩展数参数指定 - 默认最小值为 2。如果组中的某个 SE 发生故障,则

  • 正在运行的虚拟服务不会中断。它们将继续在容量降级的其他 SE 上运行,直到可以再次放置这些虚拟服务为止。

  • 如果将 NSX Advanced Load Balancer 的 Orchestrator 模式设置为“写入访问”,则会自动部署一个新的 SE,以使 SE 组恢复到以前的容量。在等待新的 SE 启动后,控制器会在上面放置正在发生故障的 SE 上运行的虚拟服务。

弹性高可用性活动/活动示例

下图说明了 SE 故障和完全恢复:

  • 每个服务引擎的虚拟服务数

  • 每个虚拟服务的最小扩展数

  • 每个虚拟服务的最大扩展数

  • 最大服务引擎数

随着时间的推移,已经放置了五个虚拟服务 (VS1-VS5)。在这些虚拟服务中,VS3 从最初的两个位置扩展到三个位置,这说明 NSX Advanced Load Balancer 支持“N 向活动”虚拟服务。



在下图中,由于 SE3 发生故障,因此,两个 VS2 实例中的一个实例以及三个 VS3 实例中的一个实例随之发生故障。其他三个虚拟服务(VS1、VS4、VS5)不受影响。由于先前已将实例放置在 SE4、SE5 和 SE6 上,因此 VS2 和 VS3 均不会中断。尽管性能有所下降,但它们将继续运行。



如下图所示,NSX Advanced Load Balancer Controller 部署 SE7 以替代 SE3,并在上面放置 VS2 和 VS3,这会将这两个虚拟服务提高到以前的性能水平。



对于仅放置在一个 SE 上的虚拟服务(未扩展),虚拟服务在 SE 升级期间不会发生中断,但有一种例外情况:弹性高可用性 N+M 缓冲区模式。

注:
  • 对于仅放置在一个 SE 上的虚拟服务(未扩展),虚拟服务在 SE 升级期间不会发生中断,但有一种例外情况:弹性高可用性 N+M 缓冲区模式。

  • 弹性高可用性 N+M 模式(默认模式)通常应用于符合以下情况的应用程序:

    1. 可以通过一个 SE 的部分容量来提供任何应用程序所需的 SE 性能,因此每个虚拟服务通常放置在单个 SE 上。

    2. 应用程序可以承受短暂的中断,但不能超过在现有 SE 上放置 VS 并检测其网络连接所需的时间。这通常只有几秒钟。

  • 预先存在的缓冲区 SE 容量加上启用精简放置的默认设置,加快了重新放置受故障影响的虚拟服务的速度。NSX Advanced Load Balancer 不会等待替换 SE 启动;它立即将受影响的虚拟服务放置在备用容量上。

  • M=1 满足大多数应用程序的高可用性需求。但是,在开发/测试环境中,M 可以设置为 0,因为开发/测试用户可以等待新的 SE 启动,然后再重新放置 VS。

  • 弹性高可用性活动/活动模式通常应用于任务关键型应用程序,其中,虚拟服务必须在恢复期间继续运行,而不会发生中断。

  • “自动重新均衡”选项仅适用于弹性高可用性模式,默认禁用该选项。如果“自动重新均衡”保持默认禁用状态,则会记录一个事件而不是自动执行迁移。