本文介绍如何更新规模集上的实例组合设置,包括更改 VM 大小和分配策略。
更新现有规模集上的实例组合设置
可以通过 CLI、PowerShell 和 REST API 在规模集上更新实例组合设置。 可以在单个调用中更改虚拟机 (VM) 大小或分配策略,也可以同时更改这两者。
注释
更改分配策略时,新策略仅在规模集横向缩减或横向扩展后生效。在缩放操作发生之前,现有 VM 不会受到影响。
从 Prioritized (preview) 更改为其他分配策略时,必须首先置空与 VM 大小相关的优先级。
确保使用的是 Azure CLI 版本 2.66.0 或更高版本。
更改分配策略
例如,若要将分配策略更新为 CapacityOptimized:
az vmss update \
--resource-group {resourceGroupName} \
--name {scaleSetName} \
--set skuProfile.allocationStrategy=CapacityOptimized
更改 VM 大小
若要更新skuProfile中的 VM 大小,例如:Standard_D2as_v4、Standard_D2as_v5 和 Standard_D2s_v5:
注释
更新 VM 大小时,必须在规模集中指定所需的完整大小列表。 此操作将替换整个列表,而不仅仅是添加或删除单个大小。
az vmss update \
--resource-group {resourceGroupName} \
--name {scaleSetName} \
--skuprofile-vmsizes Standard_D2as_v4 Standard_D2as_v5 Standard_D2s_v5
更改分配策略
更新分配策略:
# Set variable values
$resourceGroupName = "resourceGroupName"
$vmssName = "scaleSetName"
$allocationStrategy = "CapacityOptimized"
# Get the scale set
$vmss = Get-AzVmss -ResourceGroupName $resourceGroupName -VMScaleSetName $vmssName
# Update the allocation strategy
$vmss.SkuProfile.AllocationStrategy = $allocationStrategy
# Apply the update
Update-AzVmss -ResourceGroupName $resourceGroupName -VMScaleSetName $vmssName -VirtualMachineScaleSet $vmss
更改 VM 大小
若要更新 VM 大小,请执行以下作:
# Set variable values
$resourceGroupName = "resourceGroupName"
$vmssName = "scaleSetName"
# Create a list of new VM sizes
$vmSizeList = [System.Collections.Generic.List[Microsoft.Azure.Management.Compute.Models.SkuProfileVMSize]]::new()
$vmSizeList.Add("Standard_D2as_v4")
$vmSizeList.Add("Standard_D2as_v5")
$vmSizeList.Add("Standard_D2s_v5")
# Get the scale set
$vmss = Get-AzVmss -ResourceGroupName $resourceGroupName -VMScaleSetName $vmssName
# Update the VM sizes
$vmss.SkuProfile.vmSizes = $vmSizeList
# Apply the update
Update-AzVmss -ResourceGroupName $resourceGroupName -VMScaleSetName $vmssName -VirtualMachineScaleSet $vmss
若要使用 REST API 更新实例混合设置,请向规模集资源发送 PATCH 请求。 使用 API 版本 2023-09-01 或更高版本:
PATCH https://management.azure.com/subscriptions/{YourSubscriptionId}/resourceGroups/{YourResourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{yourScaleSetName}?api-version=2023-09-01
更改分配策略
指定 VM 大小和分配策略。 例如,若要将分配策略设置为 capacityOptimized:
{
"properties": {
"skuProfile": {
"vmSizes": [
{ "name": "Standard_D2as_v4" },
{ "name": "Standard_D2as_v5" },
{ "name": "Standard_D2s_v4" },
{ "name": "Standard_D2s_v3" },
{ "name": "Standard_D2s_v5" }
],
"allocationStrategy": "capacityOptimized"
}
}
}
更改 VM 大小
仅更新 VM 大小:
{
"properties": {
"skuProfile": {
"vmSizes": [
{ "name": "Standard_D2as_v4" },
{ "name": "Standard_D2as_v5" },
{ "name": "Standard_D2s_v4" },
{ "name": "Standard_D2s_v3" },
{ "name": "Standard_D2s_v5" }
]
}
}
}
对现有规模集启用实例混合
若要在尚未使用实例混合的规模集上启用该功能,请指定skuProfile 属性。 您必须进行以下设置:
-
sku.name 至 "Mix"
-
sku.tier 至 null
-
vmSizes 下的 skuProfile 中至少有一个值
- 一个
allocationStrategy(如果未指定,Azure 默认为 lowestPrice)
以下示例演示如何在现有规模集上启用实例混合。
此示例更新一个灵活业务流程模式下的现有规模集,以使用包含 VM 大小 Standard_D2as_v4、Standard_D2s_v5 和Standard_D2as_v5 及 capacityOptimized 分配策略的实例混合:
az vmss update \
--name {scaleSetName} \
--resource-group {resourceGroupName} \
--set sku.name=Mix sku.tier=null \
--skuprofile-vmsizes Standard_D2as_v4 Standard_D2s_v5 Standard_D2as_v5 \
--set skuProfile.allocationStrategy=capacityOptimized
若要使用 REST API 启用实例混合,请向规模集资源发送 PATCH 请求。 使用 API 版本 2023-09-01 或更高版本:
PATCH https://management.azure.com/subscriptions/{YourSubscriptionId}/resourceGroups/{YourResourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{yourScaleSetName}?api-version=2023-09-01
在请求正文中,将 sku.name 设置为 "Mix",并将 skuProfile 与所需的 vmSizes 和 allocationStrategy 一起包含在内:
{
"sku": {
"name": "Mix"
},
"properties": {
"skuProfile": {
"vmSizes": [
{ "name": "Standard_D2as_v4" },
{ "name": "Standard_D2as_v5" },
{ "name": "Standard_D2s_v4" },
{ "name": "Standard_D2s_v5" }
],
"allocationStrategy": "lowestPrice"
}
}
}
常见更新方案
删除特定 VM 大小
若要从实例组合配置中删除特定 VM 大小,请指定要保留的 VM 大小的完整列表,不包括要删除的大小。
示例:从具有 Standard_D2as_v4、Standard_D2as_v4、Standard_D2s_v4和 Standard_D2as_v5 的比例集移除 Standard_D2s_v5:
az vmss update \
--resource-group {resourceGroupName} \
--name {scaleSetName} \
--skuprofile-vmsizes Standard_D2s_v4 Standard_D2as_v5 Standard_D2s_v5
添加特定 VM 大小
若要向实例组合配置添加新的 VM 大小,请指定 VM 大小的完整列表,包括现有大小和新大小。
示例:向当前包含 Standard_D4s_v5、Standard_D2s_v4 和 Standard_D2as_v5 的规模集中添加 Standard_D2s_v5:
az vmss update \
--resource-group {resourceGroupName} \
--name {scaleSetName} \
--skuprofile-vmsizes Standard_D2s_v4 Standard_D2as_v5 Standard_D2s_v5 Standard_D4s_v5
后续步骤
了解如何对已启用实例混合的规模集进行故障排除。