跨 区域 规模集将虚拟机(VM)实例分散到多个可用性区域,并使用 区域均衡 来尝试跨所选区域均匀分配实例。 本文讨论跨区域规模集如何使用区域均衡,包括均衡规模集与不平衡规模集之间的差异、均衡模式以及如何重新平衡规模集。
均衡和不平衡的规模集
当每个区域的 VM 数量为相同或相差不超过 1 个 VM 时,规模集被视为 均衡。 偏差为 1 使你能够扩展到任意数量的实例,而不仅仅是规模集中使用的区域数的倍数。
确定某个规模集是否均衡时,满足任一以下条件的 VM 仍将被计数:
- VM 已成功创建,但 VM 上的扩展无法部署。
- VM 已解除分配。
下面是虚拟机规模集如何为配置为使用三个区域的跨区域规模集确定区域均衡的一些示例:
示例 1:区域 1、区域 2 中的 2 个 VM 和区域 3 中 2 个 VM 的规模集被视为 均衡。 每个区域都有完全相同的实例数。
示例 2:区域 1、区域 2 中的 3 个 VM 和区域 3 中的 3 个 VM 的规模集被视为 均衡。 只有一个区域具有不同的虚拟机计数,它只比其他区域少 1 个虚拟机。
示例 3:区域 1、区域 2 中的 3 个 VM 和区域 3 中的 3 个 VM 的规模集被视为 不平衡。 区域 1 的 VM 比区域 2 和 3 少 2 个,这超过了 ±1 VM 的允许阈值。
示例 4:在区域 1 中有 2 个 VM,区域 2 中有 2 个 VM,区域 3 中有 2 个 VM 的规模集被视为均衡,即使区域 1 中的所有扩展都失败,区域 2 中的所有扩展都成功,而区域 3 中的 VM 已被释放。
区域平衡模式
若要设置区域平衡模式,规模集必须使用多个区域。 不使用区域或仅使用一个区域的规模集不需要均衡,因此没有均衡模式。
对于使用多个区域的规模集,可以在两种区域平衡模式之间进行选择:
最佳工作区域均衡(默认模式): 规模集旨在在缩放作期间跨区域保持平衡,但不能保证保持均衡。
如果一个区域不可用,负载均衡组将尝试将扩展到仍可用的区域,允许暂时的不平衡。 但是,仅当单个区域不可用时,才允许这种不平衡。 区域可用后,在后续缩放操作期间,规模集尝试通过以下方法确保平衡:
- 在缩减规模时,从过度预配的区域删除虚拟机
- 横向扩展时,将 VM 添加到预配不足的区域
如果两个或更多个区域不可用,则缩放集无法继续执行缩放操作,并且任何缩放操作都会被阻止。
严格区域均衡: 规模集必须始终保持均衡。 即使一个或多个区域关闭,也会阻止导致不均衡规模集的任何缩放作。
如何手动平衡规模集
将可用性区域添加到现有规模集时,现有 VM 保持不变,不会移动或重新分发。 此外,添加区域不会触发重新均衡作业。 在横向扩展操作期间,只有在将新实例添加到规模集时,才会发生区域均衡。 区域平衡不会替换现有实例。
可以通过运行以下作序列来手动重新平衡规模集:
横向扩展。 通过 更新规模集的容量来添加更多实例。 新的容量应设置为原始容量加上新增实例数。
规模集尝试在规模集上配置的区域中创建新实例。
缩小。 新实例准备就绪后,缩小规模集以删除旧实例。 此过程使规模集处于均衡状态。
可以手动删除特定实例,也可以通过减少规模集容量进行缩减。 通过减少规模集容量进行缩减时,平台始终倾向于删除非区域性实例,然后遵循规模集的 缩减策略。
注释
如果使用灵活编排模式,并附加、分离或删除单个 VM,则应检查您的 VM 所在的区域。 如果虚拟机全部位于单个区域,那么您的规模集无法抵御该区域的服务中断。
下面是一些示例,说明在不同情况下如何手动重新平衡规模集:
假设你有一个具有 5 个实例的非区域性规模集:
将它升级到跨区域跨三个区域的规模集。 更新规模集的区域配置后,现有实例将保持非区域状态。
横向扩展: 由于规模集当前有 5 个非区域实例,因此你想要横向扩展,以便有 5 个实例分布在 3 个区域,因此应将容量设置为 10(5 + 5)。 新实例跨区域创建,旧实例仍保留在以下位置:
缩容: 将容量减少到 5。 Azure 删除非区域实例,使 5 个实例分散在区域中: