共享容量预留组(预览版)

适用于: ✔️ Linux 虚拟机 ✔️ Windows 虚拟机 ✔️ 统一规模集 ✔️ 灵活规模集

重要

此功能目前以 预览版提供。 有关适用于 Beta 版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 预览 版使用条款。

按需容量预留组(CRG)可以与其他订阅共享。 使用此选项可以更轻松地管理一些常见配置需求:

  • 重复使用为灾难恢复保留的容量。 预留容量是当主要区域或区域不可用时,在另一个区域或区域中获取容量保证的主要手段。 预留共享支持按订阅重复使用灾难恢复容量、托管不太关键的工作负荷(例如开发和测试)或用于运行面向作业的工作负荷的订阅。 容量重用可以节省总容量成本,并从预留容量中驱动更多价值。

  • 集中管理容量。 配额请求和期限承诺通常由中心运营团队作为成本管理的一部分进行协调。 现在,可以更集中地评估和管理预留容量需求,以便与容量和成本管理保持一致。

  • 将安全性和容量问题分开。 出于安全原因,使用多个订阅实现的应用程序可以从通用容量池运行。 此模式常见于为自己的最终用户提供服务的服务提供商。

  • 具有容量保证的更经济高效的横向扩展。 按不同速率和时间缩放的应用程序可以共享一个预留容量池。

如何共享容量预留组

共享预留容量至少需要两个订阅:

  • 供应商订阅 - 创建和托管容量预留组及其成员的容量预留的订阅。
  • 使用者订阅 - 授予对预留容量的访问权限的另一个订阅,从而能够使用容量预留服务级别协议(SLA)部署虚拟机(VM)。

给定的容量预留组最多可与 100 个用户订阅共享。 组中的所有成员容量预留都可从消费者订阅中访问。

配置容量预留组共享关系有三个步骤:

  1. 在消费者订阅中,从生成者订阅配置具有权限Microsoft.Compute/capacityReservationGroups/share/action的按需容量预留(ODCR)所有者。
  2. 在生成者订阅中,将使用者订阅 ID 添加到容量预留组 共享 列表。 请参阅 “共享容量预留组 ”,了解如何将使用者订阅添加到共享配置文件。
  3. 在生成者订阅中,使用以下权限在使用者订阅中配置至少一个 VM 所有者:
    • Microsoft.Compute/capacityReservationGroups/read
    • Microsoft.Compute/capacityReservationGroups/deploy
    • Microsoft.Compute/capacityReservationGroups/capacityReservations/read
    • Microsoft.Compute/capacityReservationGroups/capacityReservations/deploy

如果 ODCR 所有者和 VM 所有者在提供程序订阅和使用者订阅中已有“所有者”或“参与者”角色,则授予共享、读取和部署权限无需执行进一步的操作。 若要详细了解如何分配 Azure 角色,请参阅 角色分配步骤Azure 自定义角色

完成后,使用者订阅中的 VM 所有者可以枚举共享 CRG。 查看订阅的容量预留组,并通过设置虚拟机或虚拟机规模集上的属性来部署 VM。 请记住,只有生产者订阅中的 ODCR 管理员才能修改容量预留组(CRG)。

注释

使用共享容量预留组功能无需额外付费。 未使用的预留费用将计入拥有该预留项的订阅。 VM 使用量按使用容量预留的订阅收费,就像现在一样。 有关预留实例(RI)如何应用于该功能的详细信息,请参阅 “使用具有共享容量预留组的预留实例 ”部分。

使用模式

共享容量预留组的提供程序订阅可以允许:

  • 用于访问提供程序订阅中特定容量预留组的消费者订阅
  • 用于访问提供程序订阅中创建的所有容量预留组的使用者订阅
  • 特定管理组中的所有消费者订阅以访问容量预留组

注释

Azure 强烈建议使用一个主要提供程序订阅来托管每个应用程序、工作负荷或使用情况范围的容量预留组,以便在其他订阅之间共享。 在许多不同的订阅中创建容量预留组,然后以矩阵方式进行交叉共享将产生管理挑战,并导致 VM 部署混乱。

共享容量预留组的先决条件

  • 在提供程序订阅中,ODCR 的所有者必须拥有足够的权限来共享 CRG。
  • 使用者订阅中的 VM 所有者必须具有足够的权限才能在共享 CRG 中的容量预留(CR)中进行部署
  • 在共享 CRG 中部署的虚拟机必须分别匹配虚拟机 SKU、区域和可用区(如果适用)。

共享容量预留组的局限性

设计限制:

  • 共享适用于目标使用者订阅的显式列表。 Azure 不支持通配符或租户级别共享。
  • CRG 最多可与 100 个消费者订阅共享。
  • 共享按容量预留组完成,该组授予对所有成员容量预留的访问权限。 个人容量预留无法共享。 若要隔离特定的容量预留,请创建多个容量预留组,并仅共享包含共享容量的容量预留。
  • 默认情况下,拥有容量预留组的订阅中的容量预留组管理员无法修改其他订阅部署的 VM 实例。 如果需要此类 VM 访问权限,则必须单独授予对共享订阅上的 VM 的更多权限。

预览版的限制:

  • 在发生区域故障期间,不支持使用共享容量预留组对虚拟机规模集 VM 进行重新部署。
  • 如果订阅在调用时没有创建任何容量预留组,按订阅 ID 列出容量预留组在列出该区域中的共享 CRG 时将不会提供正确的响应。 若要获取正确的响应,请确保在订阅中创建本地 CRG,并在要枚举共享 CRG 的同一区域中进行 API 调用。 ** 或者,使用提供的 Azure Resource Graph 查询,以获取与您的订阅共享的 CRG(共享资源组)列表。

共享容量预订组

容量预留组是通过在新创建或现有容量预留组的共享配置文件中添加使用者订阅来共享的。 共享后,属于共享配置文件的订阅可以在共享容量预留组中部署 VM 或虚拟机规模集。

将共享配置文件添加到新的容量预留组

通过在共享配置文件中添加订阅,可以在创建过程中共享容量预留组。

若要从门户创建具有共享配置文件的容量预留组,请执行以下步骤:

  1. 打开 Azure 门户
  2. 在搜索栏中,输入 容量预留组
  3. 从选项中选择 容量预留组
  4. 选择“创建”
  5. 在“ 基本信息 ”选项卡上,创建容量预留组:
    1. 选择订阅。
    2. 选择或创建资源组。
    3. 为组命名。
    4. 选择区域。
    5. (可选)选择 可用性区域 或允许 Azure 为你选择。
  6. 选择“下一步”。
  7. 在“ 预留 ”选项卡上,创建至少一个容量预留:
    1. 为每个预留指定预留名称、VM 实例数量,并选择唯一的 VM 大小。
    2. 基于所选内容的计费信息将显示在 “成本/月 ”列中。
  8. 选择“下一步”。
  9. “共享 ”选项卡上,共享容量预留组:
    1. 选择 “添加订阅”。
    2. 选择要添加的订阅。
    3. 选择 并添加
  10. 选择“下一步”。
  11. 在“ 标记 ”选项卡上,可以选择创建标记。
  12. 选择“下一步”。
  13. 在“ 查看 + 创建 ”选项卡上,查看容量预留组信息。
  14. 选择“创建”

将共享参数添加到现有容量预留组

为现有容量预留组添加共享配置文件并与订阅共享。

若要从门户将订阅添加到现有容量预留组的共享配置文件,请执行以下步骤:

  1. 打开 Azure 门户
  2. 转到容量预留组。
  3. 选择容量预留组的设置
  4. 选择“共享
  5. 选择“添加订阅
  6. 选择要添加的订阅
  7. 选择 “添加”
  8. 选择保存

停止共享容量预留组

容量预留组所有者可以随时停止与订阅或所有订阅共享容量预留组。

取消具有跨订阅 ID 的容量预留组的共享时,跨订阅中的 VM 或虚拟机规模集将继续与该容量预留组保持关联。 关联的资源将获取 SLA,直到解除分配或重新分配。

取消共享后,以前与 CRG 关联的任何 VM 或规模集将无法在解除分配或重新分配时关联。 通过从 CRG 中删除关联来避免此故障。

使用订阅取消共享容量预留组

若要从共享配置文件中取消共享具有订阅的容量预留组,请从共享配置文件中删除订阅。

若要从门户中删除现有容量预留组共享配置文件中的订阅,请执行以下步骤:

  1. 打开 Azure 门户
  2. 转到容量预留组。
  3. 选择容量预留组的设置
  4. 选择“共享
  5. 选择要删除的订阅
  6. 选择“停止共享
  7. 选择保存

取消与所有订阅共享的容量预留群组

若要取消与所有使用者订阅共享容量预留组,请从共享配置文件中删除所有订阅。

若要从门户中删除现有容量预留组共享配置文件中的订阅,请执行以下步骤:

  1. 打开 Azure 门户
  2. 转到容量预留组。
  3. 选择容量预留组的设置
  4. 选择“共享
  5. 选择要删除的所有订阅
  6. 选择“停止共享
  7. 选择保存

删除共享容量预留组

请参阅 “修改容量预留” 以了解删除的指导。

  • 拥有足够权限的用户可以删除共享容量预留组。
  • 删除所有成员容量预留时,Azure 允许删除容量预留组。
  • Azure 允许在未将任何 VM 关联到容量预留时删除容量预留。
  • 在共享容量预留组删除过程的一部分中,会取消 CRG 的共享订阅。

使用共享容量预留组

成功共享容量预留组后,具有使用者订阅足够权限的用户可以在共享容量预留组中部署 VM 或虚拟机规模集。

注释

部署共享 CRG 的提供程序订阅需要保留自己的配额才能部署 CRG。 在共享预留组中部署的消费者订阅需要保留自己的配额。

具有共享区域容量预留组的可用性区域映射

每个 Azure 订阅可见的可用性区域表示与构成物理区域的物理数据中心基础组的逻辑映射。 为了促进跨可用区的高效资源分配,每个 Azure 订阅都会获得一个区域随机的逻辑到物理的映射。 例如,订阅 A(提供程序订阅)和订阅 B(使用者订阅)可以具有不同的逻辑映射。

请看下面的示例:

如果订阅 A 部署到 AZ1,则部署将转到物理区域 1。 但是,如果订阅 B 部署到 AZ1,则部署到物理区 2:显示订阅 A 和订阅 B 的屏幕截图,物理区与逻辑区映射不同。

现在,请考虑订阅 A 部署到逻辑 AZ1 的容量预留。 结果是物理区域 1 中的预留容量。
一张截图显示订阅 A 在逻辑区域 1 中创建容量预留。

如果订阅 B 使用共享容量预留组将 VM 部署到逻辑 AZ1,则部署会失败,因为订阅 B AZ1 解析为物理区域 2,并且物理区域 2 中没有预留容量。 显示订阅 A 容量预留和订阅 B VM 的屏幕截图位于两个不同的逻辑区域中,导致失败。

解决方案是协调订阅 A 和订阅 B 的逻辑到物理映射。订阅 B 应部署到 AZ2 以访问物理区域 1 中的预留容量。 显示同一逻辑区域中的订阅 A 容量预留和订阅 B VM 的屏幕截图,导致成功。

将共享容量预留组用于区域时,所有订阅都具有 CRG 订阅中可用性区域的逻辑视图,这可能与目标订阅中可用性区域的逻辑视图不同。 将 VM 或规模集部署到共享 CRG 时,必须重新映射区域。 为了确保 Azure 资源有效地分布在区域中的可用性区域,每个订阅都有可用性区域的独立逻辑区域映射。 这意味着逻辑到物理区域的映射在不同订阅中可能相同,也可能不同。

若要查看订阅的物理区域和逻辑区域映射,请参阅订阅 - 列表位置 - REST API (Azure 资源管理)。 有关详细信息,请参阅 物理和逻辑可用性区域

在共享容量预留组中使用零容量预留保护现有区域工作负荷

区域性部署的虚拟机或虚拟机规模集可以从使用者订阅转换为使用共享容量预留,而无需重新分配。 如果现有共享容量预留组中没有容量,可以首先创建零大小的匹配预留来保护工作负荷。 基本过程涉及 3 个步骤:

  1. 创建共享容量预留组,然后在每个目标区域中匹配容量预留,并将预留数量设置为零。 这不需要服务提供商的订阅的额外配额或资源。 有关如何创建预留的详细信息,请参阅 “创建容量预留”。

  2. 将现有的正在运行的区域虚拟机或虚拟机规模集从用户订阅中关联到共享容量预留组。 将虚拟机或虚拟机规模集 (VMSS) capacityReservationGroup 属性设置为所需的共享容量预留组。 完成后,目标容量预留将被过度分配。

  3. 增加每个容量预留(CR)的保留数量,以匹配分配的虚拟机(VM)数量。 提供程序订阅必须具有足够的配额才能容纳此步骤的使用者订阅中的工作负荷。 请参阅 使用共享容量预留组。 有关如何更新预留计数的详细信息,请参阅 容量预留修改

在数量增加后,您应该能够看到 CR 处于完全分配状态,并且所有的虚拟机和虚拟机规模集也将被分配。 请参阅 使用实例视图查看 VM 分配

有关详细信息,请参阅 区域虚拟机区域虚拟机规模集

对共享容量预留组使用预留实例

容量预留组的共享不会更改任何预留实例或节省计划的范围。 如果 CRG 或 VM 是从不在预付费折扣涵盖范围内的范围部署的,则会按照即用即付价格收费。

若要在容量预留组与从使用者订阅部署的 VM 之间共享预留实例折扣,提供程序订阅和使用者订阅必须共享相同的预留实例范围。 如果两个订阅共享注册或管理组,则设置为相应范围的预留实例将自动工作。

将单个虚拟机与共享容量预留组关联或创建

单个虚拟机可以部署在共享容量预留组中。 请参阅 将虚拟机关联到容量预留组

从共享容量预留组中删除单个虚拟机

可以从共享容量预留组中删除单个虚拟机。 查看 从容量预留组中移除虚拟机器的关联

将虚拟机规模集与共享容量预留组关联或创建

可以在共享容量预留组中部署灵活和统一编排模式下的虚拟机规模集。 若要了解详细信息,请参阅 关联规模集 - 灵活关联规模集 - 统一

从共享容量预留组中删除虚拟机规模集

可以从共享容量预留组中删除灵活和统一编排模式下的虚拟机规模组。 若要了解详细信息,请参阅 “删除规模集”。

查看共享容量预留组

成功共享容量预留组后,预留将立即可用于单个虚拟机和虚拟机规模集。

查看容量预留组从共享配置文件中共享的订阅 ID。

若要了解详细信息,请参阅 “创建容量预留”。

  1. 打开 Azure 门户
  2. 转到容量预留组。
  3. 选择容量预留组的设置
  4. 选择“共享”。
  5. 查看与容量预留组共享的订阅列表。

查看订阅的容量预留组列表

可以为给定订阅查看本地创建或与其他订阅共享的所有容量预留组的列表。 需要传递额外的参数 resourceIdsonly 才能查看共享容量预留组。

容量预留组 - 按订阅 ID 列出

默认情况下,获取容量预留组的列表仅返回订阅拥有的列表。 要将容量预留组共享添加到订阅中,必须将附加参数 resourceIdsOnly 设置为 sharedwithsubscription

为与订阅共享的所有 CRG 资源启用提取资源 ID:

GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/providers/Microsoft.Compute/capacityReservationGroups?api-version=2023-09-01&resourceIdsOnly=sharedwithsubscription 

启用获取与订阅共享并在订阅中创建的所有 CRG 资源的资源 ID。

GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/providers/Microsoft.Compute/capacityReservationGroups?api-version=2023-09-01&resourceIdsOnly=All 

为该订阅中创建的所有 CRG 资源启用获取资源ID功能:

GET https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/providers/Microsoft.Compute/capacityReservationGroups?api-version=2023-09-01&resourceIdsOnly=CreatedInSubscription 
{
    "value": [
        {
            "id": "/subscriptions/{subscriptionId1}/resourceGroups/{resourceGroupName1} /providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName1} ",
            "type": "Microsoft.Compute/capacityReservationGroups",
            "location": "ChinaNorth2"
        },
        {
            "id": "/subscriptions/{subscriptionId2}/resourceGroups/{resourceGroupName2} /providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName2} ",
            "type": "Microsoft.Compute/capacityReservationGroups",
            "location": "ChinaNorth2"
        }
    ]
}

若要了解详细信息,请参阅 容量预留组 - 按订阅列出

Azure Resource Graph

使用 Azure Resource Graph 查看在给定订阅中与本地共享和创建的所有容量预留组的列表。

若要查看 CRG 列表,请转到 Azure Resource Graph 资源管理器 并尝试此查询。

启用为所有与订阅 ID 1 共享并在订阅 ID 1 中创建的 CRG 资源提取资源 ID 的功能:

resources
|where type == "microsoft.compute/capacityreservationgroups"
|where properties["sharingProfile"] contains "{subscriptionId1}" or subscriptionId == "{subscriptionId1}"
|project name, id

为所有与订阅 ID 1 共享的 CRG 资源启用资源 ID 提取:

resources
|where type == "microsoft.compute/capacityreservationgroups"
|where properties["sharingProfile"] contains "{subscriptionId}"
|project name, id

后续步骤