本节介绍了 NSX Advanced Load Balancer 服务引擎的弹性高可用性。
高可用性模式
NSX Advanced Load Balancer 支持以下两种模式:
-
服务引擎弹性高可用性模式:它兼具扩展性能和高可用性。
-
N+M 模式(默认模式)
-
活动/活动
-
-
传统高可用性模式:它支持从基于设备的传统负载均衡器平稳迁移。
弹性高可用性 N+M 模式
N+M 模式是弹性高可用性的默认模式。在该模式下,每个虚拟服务仅放置在一个 SE 上。
N+M 中的“N”是在 SE 组中放置虚拟服务所需的最小 SE 数。该计算是 NSX Advanced Load Balancer 控制器 根据 Virtual Services per Service Engine 参数执行的。“N”随时间的推移而发生变化,因为将在组中放置或移除虚拟服务。最大服务引擎数标记为“E”。
N+M 中的“M”是 NSX Advanced Load Balancer 控制器 启动的额外 SE 数,以便在不减少 SE 组容量的情况下处理“M”个 SE 故障。“M”显示在缓冲区服务引擎字段中。
每个虚拟服务的最小扩展数标记为“B”,每个虚拟服务的最大扩展数标记为“C”。
N+M 模式中的缓冲区 SE 是系统可以承受的 SE 故障数,以使虚拟服务启动并正常运行(放置在至少一个 SE 上),但具有不同的容量。在 SE 组中,如果设置了每个虚拟服务的最小扩展数并且需要使用额外的 SE,请根据计算结果增加缓冲区 SE。
您可以导航到N+M 模式参数。您可以创建新的 SE 组或编辑现有的 SE 组。
以选择在放置选项卡下面提供了高可用性模式选项。
弹性高可用性 N+M 模式示例
如下图左侧所示,在 SE 组中放置 20 个虚拟服务。
如果将每个 SE 的虚拟服务数设置为 8,则 N 为 3(20/8 = 2.5,四舍五入为 3)。
如果 M = 1,则在组中总共需要 4 个 SE (N+M = 3 + 1)。
请注意,在组中没有一个 SE 是完全空闲的。控制器会将虚拟服务放置在所有可用 SE 上。在 N+M 模式下,NSX Advanced Load Balancer 确保具有足够的总缓冲区容量以处理一个 (M=1) SE 故障。在此示例中,4 个 SE 中的每个 SE 都放置了 5 个虚拟服务。总共有 12 个备用插槽仍可用于放置额外的虚拟服务,这足以处理一个 SE 故障。
如果发生以下一种或两种情况,负载不均衡将随着时间的推移而消失:
-
在组中放置新的虚拟服务。在不违反 M=1 条件的情况下,最多可以放置 4 个虚拟服务。它们将放置在 SE5 上,因为 NSX Advanced Load Balancer 先选择负载最少的 SE。
-
选择了自动重新均衡选项。
如果将“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
事件。
如上图所示,在刚刚重新放置 5 个虚拟服务后,仅剩下 4 个插槽,如果 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 故障和完全恢复。该图像显示具有下列规格的 SE 组:
-
每个服务引擎的虚拟服务数 = 3 个(UI 中的标签 A)
-
每个虚拟服务的最小扩展数 = 2 个(标签 B)
-
每个虚拟服务的最大扩展数 = 4 个(标签 C)
-
最大服务引擎数 = 6 个(标签 E)
在一段时间内,放置了 5 个虚拟服务 (VS1-VS5)。VS3 从最初的两个位置扩展到第三个位置,这说明了 NSX Advanced Load Balancer 支持“N 向活动”虚拟服务。下图说明了放置在活动/活动 SE 组上的 5 个虚拟服务。
下图显示了 SE3 发生故障。结果,在两个 VS2 实例和三个 VS3 实例中,各有一个实例发生故障。不过,其他三个虚拟服务(VS1、VS4、VS5)不受影响。此外,VS2 和 VS3 都不会发生中断,因为这些实例以前放置在 SE4、SE5 和 SE6 上,它们继续工作,但性能有所下降。在下图中,您还可以查看活动/活动 SE 组中的单个 SE 故障。
NSX Advanced Load Balancer 控制器 部署 SE7 以替代 SE3,并在上面放置 VS2 和 VS3,这会将这两个虚拟服务提高到以前的性能水平。下图显示了活动/活动 SE 组中的单个 SE 的恢复情况。
精简式放置
如果启用了精简式放置,NSX Advanced Load Balancer 将使用所需的最小数量的 SE。如果启用了分布式放置,则 NSX Advanced Load Balancer 在最大服务引擎数允许的限制内使用所需数量的 SE。默认情况下,将为弹性高可用性 N+M(缓冲区)模式启用精简式放置,而将为弹性高可用性活动/活动模式启用分布式放置。
精简式放置示例
下图显示精简式放置对弹性高可用性 N+M 模式 SE 组的影响,其中最大服务引擎数为 4 个。在精简式放置和分布式放置示例中,您可以观察到以下情况:
-
依次创建了 8 个虚拟服务。
-
在放置 VS1 后,部署了 SE2,因为 M=1(处理一个 SE 故障)。
-
在需要放置 VS2 时,NSX Advanced Load Balancer 将其分配给空闲的 SE2 以充分利用所有运行的 SE。
此时,放置行为发生变化,如下所述:
-
启用了精简式放置:后面放置的 VS3 到 VS8 不需要使用额外的 SE 以保持高可用性(M=1 => 承受一个 SE 故障)。在启用了精简式放置时,NSX Advanced Load Balancer 希望将虚拟服务放置在现有 SE 上。
-
启用了分布式放置:后面放置的 VS3 和 VS4 导致将 SE 组扩展到最大数量(4 个),这说明了 NSX Advanced Load Balancer 希望以牺牲资源为代价提高性能。在部署的 SE 数量达到 4 个(这是该组的最大 SE 数)后,NSX Advanced Load Balancer 将虚拟服务 VS5 到 VS8 放置在负载最少的现有 SE 上。下图显示了启用和禁用精简式放置的弹性高可用性 N+1 SE 组。如图所示,它连续放置了 8 个虚拟服务。
精简式放置与弹性高可用性模式的交互
在计时方面,精简式放置以微妙的方式与弹性高可用性模式进行交互。
-
Elastic HA N+M mode:由于在 N+M 模式下默认启用精简式放置,因此,NSX Advanced Load Balancer 控制器 希望延迟部署备用容量,而不是立即将虚拟服务密集打包放置到现有 SE 上。
-
Elastic HA active/active mode:由于在活动/活动模式下默认启用分布式放置选项,因此,NSX Advanced Load Balancer 控制器 延迟放置 VS2 和 VS3,直到替换 SE7 启动。不会将其他活动放置在 4 个正常运行的 SE(SE1、SE2、SE4、SE5)上,而是将两个虚拟服务放置在全新的 SE 上,以便所有虚拟服务像在发生故障之前那样运行。
自动重新均衡
自动重新均衡选项仅适用于弹性高可用性模式,默认停用该选项。如果自动重新均衡保持未启用状态,则会记录一个事件而不是自动执行迁移。要启用自动重新均衡,请参见如何使用 NSX Advanced Load Balancer CLI 配置自动重新均衡。
如果自动重新均衡保持默认状态,则会记录一个事件而不是自动执行迁移。