通过使用客户选择的可用性区域,可以通过设置属性来指定虚拟机规模集可以使用的区域 zones 。 可以为区域部署选择一个区域,也可以为跨区域部署选择多个区域。
当工作负荷必须使用特定可用性区域时,请使用客户选择的区域。 如果希望Azure根据容量和 SKU 可用性选择区域,请考虑自动区域放置。
Prerequisites
- 在支持可用区的 Azure 区域中创建规模集。
- 验证 VM 大小和磁盘类型是否在要使用的区域中可用。 使用 计算资源 SKU API 确定每个区域中可用的大小。
创建区域跨区域或区域规模集
部署虚拟机规模集时,可以选择在一个区域或多个区域中使用单个可用性区域。
可以使用下列方法之一创建使用可用性区域的规模集:
- Azure 门户
- Azure CLI
- Azure PowerShell
- Azure 资源管理器 模板
使用 Azure 门户
创建使用可用性区域的规模集的过程与 入门文章中详述的过程相同。 选择受支持的Azure区域时,可以在一个或多个可用区域中创建规模集,如以下示例所示:
规模集和支持资源(例如Azure负载均衡器和公共 IP 地址)是在指定的单个区域中创建的。
使用Azure CLI
创建使用可用性区域的规模集的过程与 入门文章中详述的过程相同。 若要使用可用性区域,请在受支持的Azure区域中创建规模集。
在 --zones 命令中添加 参数并指定要使用的区域(例如区域 1、2 或 3)。
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image <SKU Image> \
--upgrade-policy-mode automatic \
--admin-username azureuser \
--generate-ssh-keys \
--zones 1 2 3
在您指定的可用区中创建和配置所有规模集资源和虚拟机需要几分钟时间。 有关区域冗余规模集和网络资源的完整示例,请参阅此示例 CLI 脚本
使用Azure PowerShell
若要使用可用性区域,请在受支持的Azure区域中创建规模集。 向 -Zone 命令添加 参数并指定要使用的区域(例如区域 1、2 或 3)。
New-AzVmss `
-ResourceGroupName "myResourceGroup" `
-Location "chinanorth2" `
-VMScaleSetName "myScaleSet" `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer" `
-UpgradePolicy "Automatic" `
-Zone "1", "2", "3"
使用 Azure 资源管理器模板
创建使用可用性区域的规模集的过程与适用于 Linux 或 Windows 的入门文章中详述的过程相同。
{
"type": "Microsoft.Compute/virtualMachineScaleSets",
"name": "myScaleSet",
"location": "China North 2",
"apiVersion": "2017-12-01",
"zones": [
"1",
"2",
"3"
]
}
如果创建公共 IP 地址或负载均衡器,请指定 "sku": {"name":"Standard"} 属性以创建区域冗余网络资源。 还需要创建网络安全组和规则以允许任意流量。 有关详细信息,请参阅 Azure 负载均衡标准概述和 标准负载均衡器与可用性区域。
更新规模集以添加可用性区域
可以修改规模集以扩展要在其中分散 VM 实例的区域集。 通过增加可用区数量,您可以获得更高的可用性 SLA(99.99%),相比区域级(非分区)可用性 SLA(99.95%)。 或者扩展规模集,以利用创建规模集时不可用的新可用性区域。
此功能可用于 API 版本 2023-03-01 或更高版本。
扩展规模集以使用可用性区域
可以将规模集更新,以将实例扩展到一个或多个额外的可用性区域,最多可扩展到区域支持的可用性区域数目。 对于支持区域的区域,最小区域数为 3。
Important
将规模集扩展到其他区域时,原始实例不会迁移或更改。 横向扩展时,将创建新实例并在所选可用性区域中均匀分布。 原始实例中的数据不会迁移到新区域。 在缩减规模集时,将优先删除任何区域性(非区域性)实例。 之后,将基于扩容策略删除实例。
将规模集扩展为跨可用区规模集分三步完成:
- 准备区域扩展
- 更新规模集上的区域参数
- 添加新的区域实例并移除原始实例
准备区域扩展
Warning
此功能允许向规模集添加区域。 添加区域(非区域)规模集后,不能返回到区域(非区域)规模集或删除区域。
准备区域扩展:
- 检查您在所选区域的 VM 大小是否有足够的配额来处理更多实例。
- 检查所使用的 VM 大小和磁盘类型是否在所有所需区域中可用。 使用 计算资源 SKU API 来确定哪些大小可用于哪些区域。
- 验证扩展集配置是否对区域性和跨区域的扩展集有效:
- 设置为
platformFaultDomainCount1 或 5。 区域规模集和区域跨区域规模集不支持使用 2 或 3 个容错域进行固定分布。 - 区域扩展期间不支持产能预留。 在规模集完全跨可用区或单可用区(不再有区域性(非可用区)实例)后,可以将容量预留组添加到规模集。
- 不支持 Azure 专用主机部署。
- 设置为
更新规模集上的区域参数
更新规模集以更改区域参数。
- Azure 门户
- Azure CLI
- Azure PowerShell
- REST API
- 导航到要更新的规模集
- 在规模集登陆页的 “可用性 ”选项卡上,找到 可用性区域 属性,然后选择“ 编辑”。
- 在 “编辑位置 ”对话框中,选择所需的区域。
- 选择应用。
添加新的区域实例并移除原始实例
可以通过触发扩展操作来横向扩展规模集,然后缩减规模集,在各个区域之间实现手动平衡。 有关详细信息,请参阅 如何手动平衡规模集。
已知问题和限制
原始实例不会迁移到新添加的区域。 工作负荷必须处理任何必需的数据迁移或复制。
不支持运行 Service Fabric RP 或 Azure Kubernetes 服务的规模集。
无法移除或替换区域,只能添加区域
无法从跨区或分区规模集更新到非局部性的区域规模集。
platformFaultDomainCount必须设置为 1 或 5。 不支持在跨区域或区域性部署中进行 2 或 3 个容错域的固定分配。区域扩展期间不支持产能预留。 在规模集完全跨可用区或单可用区(不再有区域性(非可用区)实例)后,可以将容量预留组添加到规模集。
不支持 Azure 专用主机部署
后续步骤
在可用性区域中创建规模集后,可以了解如何 在虚拟机规模集上部署应用程序 ,或对 虚拟机规模集使用自动缩放。