Compartir a través de

虚拟机规模集和放置组

注意

本文档介绍在统一编排模式下运行的虚拟机规模集。 建议对新工作负载使用灵活业务流程。 有关详细信息,请参阅 Azure 中的虚拟机规模集的编排模式

现在可以创建容量高达 1,000 个 VM 的 Azure 虚拟机规模集。 在本文档中,大型虚拟机规模集定义为能够扩展到 100 台 VM 以上的规模集。 此功能通过规模集属性 (singlePlacementGroup=False) 设置。

大型规模集在某些方面(例如负载均衡和容错域)的表现不同于标准规模集。 本文档介绍了大型规模集的特征,说明了在应用程序中成功使用大型规模集需要了解的事项。

部署大型的云基础结构的常用方法是创建一组缩放单元,例如跨多个 VNET 和存储帐户创建多个 VM 规模集。 此方法和单个 VM 相比可以提供更简单的管理,并且多个缩放单元对于许多应用程序很有益处,尤其是那些需要其他堆叠组件(如多个虚拟网络和终结点)的应用程序。 如果您的应用需要一个大的单一群集,那么部署一个包含最多 1,000 台虚拟机的单一规模集可能更为直接。 示例方案包括:集中式大数据部署、需要对大型工作节点池进行简单管理的计算网格。 用户可以将大型规模集与虚拟机规模集附加数据磁盘结合使用,通过单次操作部署包含数千 vCPU 和千万亿字节存储的可缩放基础结构。

放置组

大型 规模集之所以特别,不是因为 VM 数,而是因为其包含的放置组 数。 放置组是一个结构,类似于 Azure 可用性集,拥有它自身的故障域和升级域。 默认情况下,一个规模集包含一个放置组,最大大小为 100 台 VM。 如果将名为 singlePlacementGroup 的规模集属性设置为 false,则该规模集可以由多个放置组组成,其范围为 0-1,000 台 VM。 设置为默认值 true 时,规模集由单个放置组组成,其范围为 0-100 台 VM。

使用大规模数据集时的核对清单

若要确定应用程序能否有效使用大型规模集,请考虑以下要求:

  • 如果计划部署大量 VM,可能需要提高计算 vCPU 配额限制。
  • 从 Azure 市场 映像或 Azure 计算图库映像创建的规模集可以扩展到 1,000 个虚拟机。
  • 从自定义映像(用户自己创建和上传的 VM 映射)创建的规模集目前的最大规模可以是 600 台 VM。
  • 大型规模集需要Azure托管磁盘。 未使用托管磁盘创建的规模集需要多个存储帐户(每 20 个 VM 一个)。 大型规模集旨在专门处理托管磁盘,以减少存储管理开销,并避免遇到存储帐户的订阅限制的风险。
  • 大型规模 (SPG=false) 不支持 InfiniBand 网络
  • 使用由多个放置组组成的规模集进行第 4 层负载均衡需要Azure 负载均衡器标准 SKU。 负载均衡器标准 SKU 提供了其他优势,例如能够在多个规模集之间进行负载均衡。 标准 SKU 还要求规模集必须关联一个网络安全组,否则 NAT 池将无法正常工作。 如果需要使用 Azure 负载均衡器基本 SKU,请确保规模集配置为使用一个放置组,这是默认设置。
  • 所有规模集都支持使用Azure 应用程序网关进行第 7 层负载均衡。
  • 规模集定义为使用单个子网,因此请确保子网的地址空间足够大以容纳所需的所有 VM。 默认情况下,规模集会进行超额预配(在部署或扩展时创建额外的 VM,在这些操作中不收取额外费用),以提高部署的可靠性和性能。 请额外预留 20% 的地址空间(相对于计划扩展的目标 VM 数)。
  • 容错域和升级域仅在放置组内保持一致性。 此体系结构不会更改规模集的整体可用性,因为 VM 在不同的物理硬件中均匀分布,但是这意味着,如果需要保证两个 VM 位于不同的硬件,请确保它们位于相同放置组中的不同容错域。 请参阅此链接:可用性选项
  • 容错域和放置组 ID 显示在规模集 VM 的实例视图 中。

创建大规模集合

在 Azure 门户中创建虚拟机规模集时,只需将 Instance count 的值指定为最大 1,000。 如果实例超过 100 个,请将“启用超过 100 个实例的缩放”设置为“是”,这样就可以扩展到多个放置组。

下图显示了Azure 门户的实例边栏选项卡。可以选择实例计数和实例大小的选项可用。

可以使用 Azure CLIaz vmss create 命令创建大型虚拟机规模集。 该命令根据 instance-count 参数设置智能默认值(例如子网大小):

az group create -l chinanorth2 -n biginfra
az vmss create -g biginfra -n bigvmss --image Ubuntu2204 --instance-count 1000

vmss create 命令会对某些配置值进行默认设置(如果用户未指定这些值)。 若要查看可重写的选项,请尝试输入以下命令:

az vmss create --help

如果要通过撰写Azure 资源管理器模板来创建大型规模集,请确保模板基于Azure托管磁盘创建规模集。 可以在 properties 部分的 Microsoft.Compute/virtualMachineScaleSets 资源中,将 singlePlacementGroup 属性设置为 false。 以下 JSON 片段显示了规模集模板的起始部分,包括 1,000 VM 容量和 "singlePlacementGroup" : false 设置:

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "location": "chinanorth2",
  "name": "bigvmss",
  "sku": {
    "name": "Standard_DS1_v2",
    "tier": "Standard",
    "capacity": 1000
  },
  "properties": {
    "singlePlacementGroup": false,
    "upgradePolicy": {
      "mode": "Automatic"
    }

有关大型集合模板的完整示例,请参阅 https://github.com/gbowerman/azure-myriad/blob/main/bigtest/bigbottle.json

将现有的规模集转换为跨多个位置组

要使现有的虚拟机规模集能够扩展到 100 个以上的 VM,需在规模集模型中将 singlePlacementGroup 属性更改为 false。 找到现有的规模集,选择“编辑”,并更改 singlePlacementGroup 属性。 如果未看到此属性,则可能是因为您正在使用较旧版本的 Microsoft.Compute API 查看规模集。

注意

可以将规模集从仅支持单个放置组(默认行为)更改为支持多个放置组,但不能反过来进行转换。 因此,请确保在进行转换之前了解大型规模集的属性。