实例大小灵活性 (ISF) 是一项 Azure 预留功能,它允许单个预留购买自动适用于多个 SKU,而不限定为单一确切大小。 只要资源属于同一灵活性组,ISF 就根据使用情况动态应用预留权益,而不是要求客户预测和预留特定 SKU。 这可确保客户在工作负载纵向扩展、缩减或在兼容大小间转移时,继续享受预留价格,从而减少运营开销并提高预留资源的利用率。
实例大小灵活性的工作原理
每个支持预留功能的服务都会定义支持 ISF 的实例大小灵活性组。 只有同一灵活性组中的 SKU 可以共享预留权益。 例如,同一 VM 系列中的多个 VM 规格可以位于一个组中,而不同系列中的规格则无法在一个组中。
在灵活性组中,每个 SKU 都有相对比率:
- 较小的尺寸具有较低的比率。
- 较大尺寸有更高的比率。
购买预留时,您承诺提供固定数量。 Microsoft将预留权益应用于符合条件的运行使用,直到完全消耗。 比率是相对单位,而不是价格。
Microsoft持续评估实际使用情况,并将预留定价的折扣应用于预留范围内按照先到先得原则的合资格资源。 如果使用量超过购买数量,则剩余使用量按即用即付费率计费。 无需手动分配。
示例
虚拟机示例
使用已优化实例大小灵活性的虚拟机预留实例时,所购买的预留可以应用到同一实例大小灵活性组中的虚拟机 (VM) 大小。 换句话说,当你购买了实例灵活性组中任何大小的虚拟机预留实例,该实例将应用于该组内的所有大小。 例如,如果您购买了列在 DSv2 系列中的某个 VM 规格(例如 Standard_DS3_v2)的预定,那么该预定折扣可以应用于同一实例灵活性组中列出的其他规格。
Standard_DS1_v2 Standard_DS2_v2 Standard_DS3_v2 Standard_DS4_v2但预留折扣不适用于不同实例大小灵活性组中列出的 VM 大小,例如 DSv2 系列高内存中的 SKU:Standard_DS11_v2、Standard_DS12_v2等。
在实例大小灵活性组中,预留折扣适用于多少 VM 取决于在购买预留时选取的 VM 大小。 也取决于运行的 VM 的大小。 比率列用于比较该实例大小灵活性组中每个 VM 大小的相对资源占用情况。 请使用比率值计算预留折扣在您运行的 VM 上的应用情况。
Microsoft Foundry 示例
假设购买 300-PTU 的全局预留,用于 Microsoft Foundry 的预配吞吐量。
- 如果为 Azure OpenAI Service 部署 250 个全局 PTU,在同一区域中为 DeepSeek 部署 50 个全局 PTU,则预留将涵盖所有 300 个 PTU。
全局、数据区域和区域预留不可互换,因此每个部署类型都需要自己的匹配预留。
其他服务
预留权益的匹配不限于虚拟机预留。 其他服务也存在类似的特定于服务的预留行为,您可以在每种预留类型的单独文档中找到详细信息。
使用Azure目录 API 提取实例大小灵活性比率
本部分介绍如何使用Azure预留目录 API 提取Azure预留的实例大小灵活性(ISF)比率。 ISF 允许跨同一资源系列和区域中的不同大小灵活应用预留权益。 这适用于各种Azure预留类型,包括Virtual Machines、Azure Redis 缓存和其他受支持的服务。
您将了解到的内容
如何通过 PowerShell 使用 Azure 目录 API 提取各种Azure预留类型的实例大小灵活性比率,构造 ISF CSV 文件,并处理支持 ISF 的不同资源类型。
先决条件
- 具有适当权限的 Azure 订阅
- 访问Azure资源管理 API
- 使用 Az.Reservations 模块的 PowerShell(适用于 PowerShell 示例)
- 了解要为其生成 ISF 比率的 Azure 资源类型
ISF CSV 文件结构
生成的 CSV 文件包含三列:
| 列 | 说明 |
|---|---|
InstanceSizeFlexibilityGroup |
灵活性组名称(例如“Av2 Series”、“General Purpose Gen5”) |
ArmSkuName |
Azure Resource Manager SKU 名称(例如“Standard_A1_v2”、“GP_Gen5_2”) |
Ratio |
SKU 所属组内的灵活性比率 |
API 参考文档
对于想要直接使用 REST API 的开发人员,请参阅 Azure 预留目录 REST API 文档。
ISF 比率信息可在每个目录项的数组中的 skuProperties API 响应中找到。 查找具有以下名称的属性:
-
ReservationsAutofitGroup- 包含灵活性组名称 -
ReservationsAutofitRatio- 包含该 SKU 的比率值
使用 PowerShell
安装所需的模块
# Install the Az.Reservations module if not already installed
Install-Module -Name Az.Reservations -Force -AllowClobber
# Connect to Azure
Connect-AzAccount
使用 PowerShell 获取目录数据
# Set parameters
$SubscriptionId = "your-subscription-id"
$Location = "chinanorth3"
$ResourceType = "VirtualMachines" # Change for different resource types
# Set subscription context
Set-AzContext -SubscriptionId $SubscriptionId
# Get catalog data
$CatalogData = Get-AzReservationCatalog -SubscriptionId $SubscriptionId -Location $Location -ReservedResourceType $ResourceType
# Display results
$CatalogData | Select-Object Name, ResourceType | Format-Table
从 PowerShell 响应中提取 ISF 比率
Catalogs API 响应中的 skuProperties 数组包含 ISF 比率信息。 查找名称为“InstanceSizeFlexibilityRatio”和“InstanceSizeFlexibilityGroup”的属性。
PowerShell 分析示例
# Function to extract ISF data from catalog response
function Get-ISFRatios {
param(
[Parameter(Mandatory=$true)]
$CatalogData
)
$ISFData = @()
foreach ($item in $CatalogData) {
$flexGroup = ""
$ratio = ""
# Extract ISF properties
foreach ($property in $item.SkuProperties) {
if ($property.Name -eq "ReservationsAutofitGroup") {
$flexGroup = $property.Value
}
elseif ($property.Name -eq "ReservationsAutofitRatio") {
$ratio = $property.Value
}
}
# Only include items with both group and ratio
if ($flexGroup -and $ratio) {
$ISFData += [PSCustomObject]@{
InstanceSizeFlexibilityGroup = $flexGroup
ArmSkuName = $item.Name
Ratio = $ratio
}
}
}
return $ISFData
}
# Extract ISF data
$ISFRatios = Get-ISFRatios -CatalogData $CatalogData
# Export to CSV
$ISFRatios | Export-Csv -Path "isf-ratios.csv" -NoTypeInformation
# Display sample results
$ISFRatios | Select-Object -First 10 | Format-Table
重要注意事项
-
分页:API 返回分页结果。 使用
nextLink属性检索所有数据。 - 特定于区域的数据:ISF 比率可能因Azure区域而异。 为每个目标区域生成单独的文件。
- 资源类型支持:并非所有Azure服务都支持 ISF。 检查 InstanceSizeFlexibilityGroup 属性的 API 响应。
- 常规更新说明:当引入新的资源容量时,ISF 比率可能会更改。 定期更新文件。
- 服务特定的比率:不同的服务可能具有不同的 ISF 计算方法和比率缩放。
故障排除
常见问题和解决方案
| 問题 | 解决方案 |
|---|---|
| 身份验证错误 | 确保你拥有 Microsoft.Capacity/catalogs/read 权限 |
| 空结果 | 验证位置参数是否与Azure区域名称匹配,并且资源类型支持 ISF |
| 缺少 ISF 属性 | 某些资源族可能不支持 ISF - 这是预期行为 |
| 资源类型无效 | 检查目标服务支持的 reservedResourceType 值 |