Compartilhar via

虚拟机规模集中的区域负载均衡

跨可用区的规模集将虚拟机(VM)实例分布在多个可用区,并使用可用区均衡尝试将实例均匀分布到您选择的区域。 本文讨论跨区域规模集如何使用区域均衡,包括均衡规模集与不平衡规模集之间的差异、均衡模式以及如何重新平衡规模集。

均衡和不平衡的规模集

当每个区域的 VM 数量为相同或相差不超过 1 个 VM 时,规模集被视为 均衡。 偏差为 1 使你能够扩展到任意数量的实例,而不仅仅是规模集中使用的区域数的倍数。

确定某个规模集是否均衡时,满足任一以下条件的 VM 仍将被计数:

  • VM 已成功创建,但 VM 上的扩展无法部署。
  • VM 已解除分配。

下面是Virtual Machine Scale Sets如何为配置为使用三个区域的跨区域规模集确定区域均衡的一些示例:

  • 示例 1:区域 1、区域 2 中的 2 个 VM 和区域 3 中 2 个 VM 的规模集被视为 均衡。 每个区域都有完全相同的实例数。

    展示一个均衡负载设置的关系图,每个区域中有两个实例。

  • 示例 2:区域 1、区域 2 中的 3 个 VM 和区域 3 中的 3 个 VM 的规模集被视为 均衡。 只有一个区域具有不同的虚拟机计数,它只比其他区域少 1 个虚拟机。

    显示一个平衡状态的平台集合关系图,其中区域 1 中有两个实例,区域 2 和 3 中各有三个实例。

  • 示例 3:区域 1、区域 2 中的 3 个 VM 和区域 3 中的 3 个 VM 的规模集被视为 不平衡。 区域 1 的 VM 比区域 2 和 3 少 2 个,这超过了 ±1 VM 的允许阈值。

    此图显示了一个不平衡的规模集,其中一个实例位于区域 1,三个实例位于区域 2 和区域 3。

  • 示例 4:在区域 1 中有 2 个 VM,区域 2 中有 2 个 VM,区域 3 中有 2 个 VM 的规模集被视为均衡,即使区域 1 中的所有扩展都失败,区域 2 中的所有扩展都成功,而区域 3 中的 VM 已被释放。

    显示均衡规模集的关系图,即使某些实例失败,并且某些实例已解除分配。

区域平衡模式

若要设置区域平衡模式,规模集必须使用多个区域。 不使用区域或仅使用一个区域的规模集不需要均衡,因此没有均衡模式。

对于使用多个区域的规模集,可以在两种区域平衡模式之间进行选择:

  • 最佳工作区域均衡(默认模式): 规模集旨在在缩放作期间跨区域保持平衡,但不能保证保持均衡。

    如果某个区域不可用,规模集将尝试扩展到仍然可用的区域,并允许出现暂时的不平衡。 但是,仅当单个区域不可用时,才允许这种不平衡。 区域可用后,在后续缩放操作期间,规模集尝试通过以下方法确保平衡:

    • 在缩减规模时,从过度预配的区域删除虚拟机
    • 横向扩展时,将 VM 添加到预配不足的区域

    如果两个或更多个区域不可用,则缩放集无法继续执行缩放操作,并且任何缩放操作都会被阻止。

  • 严格区域均衡: 规模集必须始终保持均衡。 即使一个或多个区域关闭,也会阻止导致不均衡规模集的任何缩放作。

如何手动平衡规模集

将可用区添加到现有的缩放集时,现有的虚拟机将保持不变,不会被移动或重新分配。 此外,添加区域不会触发重新均衡作业。 在横向扩展操作期间,只有在将新实例添加到规模集时,才会发生区域均衡。 区域平衡不会替换现有实例。

可以通过运行以下作序列来手动重新平衡规模集:

  1. Scale out. 通过增加实例数量来更新规模集的容量。 新的容量应设置为原始容量加上新增实例数。

    规模集尝试在规模集上配置的区域中创建新实例。

  2. 缩小。 新实例准备就绪后,缩小规模集以删除旧实例。 此过程使规模集处于均衡状态。

    可以手动删除特定实例,也可以通过减少规模集容量进行缩减。 通过减少规模集容量进行缩减时,平台始终倾向于删除非区域性实例,然后遵循规模集的 缩减策略

    注释

    如果使用灵活编排模式,并附加、分离或删除单个 VM,则应检查您的 VM 所在的区域。 如果虚拟机全部位于单个区域,那么您的规模集无法抵御该区域的服务中断。

下面是一些示例,说明在不同情况下如何手动重新平衡规模集:

假设你有一个具有 5 个实例的非区域性规模集:

显示具有五个非区域性实例的规模集示意图。

将它升级到跨区域跨三个区域的规模集。 更新规模集的区域配置后,现有实例将保持非区域状态。

  1. 扩展:因为规模集当前有 5 个非可用区实例,您希望扩展,从而有 5 个实例分布在 3 个可用区,因此应将容量设置为 10(5 + 5)。 新实例跨区域创建,旧实例仍保留在以下位置:

    此图显示一个伸缩集中包括:区域 1 的两个实例、区域 2 的两个实例、区域 3 的一个实例,以及五个不属于特定区域的实例。

  2. 缩容: 将容量减少到 5。 Azure删除非区域实例,使 5 个实例分散在区域中:

    此图显示了区域 1 中具有两个实例的规模集、区域 2 中的两个实例和区域 3 中的一个实例。

后续步骤

了解虚拟机规模集的自动区域均衡