你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure Compute Gallery 中存储和共享资源

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

Azure Compute Gallery 可帮助围绕 Azure 资源(例如映像和应用程序)生成结构和组织。 Azure Compute Gallery 提供:

  • 全局复制。1
  • 资源的版本控制和分组,以便于管理。
  • 在支持可用性区域的区域中,具有区域冗余存储 (ZRS) 帐户的高可用性资源。 ZRS 提高了针对区域性故障的恢复能力。
  • 高级存储支持 (Premium_LRS)。
  • 在社区、订阅和 Active Directory (AD) 租户之间共享。
  • 使用每个区域中的资源副本缩放部署。

使用库,可以将资源共享给所有人,或将共享限制为组织内的不同用户、服务主体或 AD 组。 资源可以复制到多个区域,以便更快地缩放部署。

1 Azure Compute Gallery 服务不是全局资源。 对于灾难恢复方案,最佳做法是在不同的区域中至少具有两个库。

图像

若要详细了解如何在 Azure Compute Gallery 中存储映像,请参阅在 Azure Compute Gallery 中存储和共享映像

VM 应用

尽管可以创建预安装了应用的 VM 的映像,但每次应用程序变化时都需要更新映像。 如果将应用程序安装与 VM 隔离,则意味着无需在更改每行代码后都要发布新的映像。

若要详细了解如何在 Azure Compute Gallery 中存储应用程序,请参阅 VM 应用程序

区域支持

所有公共区域都可以是目标区域,但某些区域要求客户完成请求过程才能获得访问权限。 要请求将订阅添加到区域(如澳大利亚中部或澳大利亚中部 2)的允许列表,请提交访问请求

限制

使用 Azure Compute Galleries 部署资源时,每个订阅都有限制:

  • 每个区域每个订阅限 100 个库
  • 每个区域的每个订阅限制为 1,000 个映像定义
  • 每个区域的每个订阅限制为 10,000 个映像版本
  • 每个映像版本限 100 个副本,但对于大多数用例来说,50 个副本应当足够了
  • 附加到映像的任何磁盘的大小都必须小于或等于 1 TB
  • Azure Compute Gallery 资源不支持资源移动

有关详细信息,请参阅根据限制检查资源使用情况,以获取有关如何检查当前使用情况的示例。

扩展

使用 Azure Compute Gallery 可以指定要保留的副本数。 在多 VM 部署方案中,可将 VM 部署分散到不同的副本,减少单个副本过载导致实例创建过程受到限制的可能性。

使用 Azure Compute Gallery,可以在规模集中部署最多 1,000 个 VM 实例。 可以在每个目标区域中设置不同的副本计数,具体视该区域的缩放需求而定。 由于每个副本都是资源的副本,这有助于使用每个额外的副本线性扩展部署。 虽然我们了解没有两个资源或区域是相同的,但是,需要遵循下面有关如何在区域中使用副本的一般原则:

  • 对于并行创建的每 20 个 VM,我们建议保留一个副本。 例如,如果使用某个区域中的同一映像同时创建 120 个 VM,建议你保留至少 6 个映像副本。
  • 对于并行创建的每个规模集,建议保留一个副本。

由于资源大小、内容和 OS 类型等因素,我们始终建议额外提供副本数。

Graphic showing how you can scale images

高可用性

Azure 区域冗余存储 (ZRS) 提供了针对区域中可用性区域故障的恢复能力。 随着 Azure Compute Gallery 的正式发布,可以选择使用可用性区域将映像存储在区域的 ZRS 帐户中。

你还可以为每个目标区域选择帐户类型。 默认存储帐户类型为 Standard_LRS,但你可以使用可用性区域选择各区域的 Standard_ZRS。 有关 ZRS 的区域可用性的详细信息,请参阅数据冗余

Graphic showing ZRS

复制

使用 Azure Compute Gallery 还可以自动将资源复制到其他 Azure 区域。 可以根据组织的需要,将每个映像版本复制到不同的区域。 例如,始终在多个区域复制最新的映像,而只在 1 个区域提供所有旧映像。 这有助于节省存储成本。

创建资源后,可以更新该资源要复制到的区域。 复制到不同区域所需的时间取决于要复制的数据量,以及该版本要复制到的区域数。 在某些情况下,这可能需要几个小时。 在复制期间,可以查看每个区域的复制状态。 在一个区域中完成映像复制后,接着可以在该区域中使用该资源部署 VM 或规模集。

Graphic showing how you can replicate images

共享

有三种主要方法可以共享 Azure Compute Gallery 中的映像,具体取决于要与谁共享:

共享对象: 人员 Service Principal 特定订阅(或)租户中的所有用户 与 Azure 中的所有用户公开共享
RBAC 共享
RBAC + 直接共享库
RBAC + 社区库 No

注意

请注意,映像可在具有读取权限的情况下用于部署虚拟机和磁盘。

使用直接共享库时,映像将广泛分发给订阅/租户中的所有用户,而社区库则会公开分发映像。 建议谨慎共享包含知识产权的映像,以防止广泛分发。

RBAC

由于 Azure Compute Gallery、定义和版本都是资源,因此可以使用内置的原生 Azure 基于角色的访问控制 (RBAC) 角色来共享它们。 使用 Azure RBAC 角色可与其他用户、服务主体和组共享这些资源。 甚至可以与创建这些资源的租户外部的个人共享访问权限。 用户获得对资源版本的访问权限后,便可使用该权限来部署 VM 或虚拟机规模集。 以下共享矩阵可以帮助你了解用户有权访问哪些资源:

与用户共享 Azure Compute Gallery 映像定义 映像版本
Azure Compute Gallery
映像定义

建议在库级别共享以获得最佳体验。 建议不要共享单独的映像版本。 有关 Azure RBAC 的详细信息,请参阅分配 Azure 角色

有关详细信息,请参阅使用 RBAC 共享

直接共享到租户或订阅

使特定订阅或租户能够访问直接共享的 Azure Compute Gallery。 与租户和订阅共享库使它们能够对你的库进行只读访问。 有关详细信息,请参阅与订阅或租户共享库

重要

Azure Compute Gallery - 直接共享库目前处于预览阶段,并受 Azure Compute Gallery 预览条款的约束。

要在预览期间将映像发布到直接共享库,需要在 https://aka.ms/directsharedgallery-preview 注册。 从直接共享库创建 VM 的功能将对所有 Azure 用户开放。

在预览期间,需要新建一个库,并将属性 sharingProfile.permissions 设置为 Groups。 使用 CLI 创建库时,请使用 --permissions groups 参数。 不能使用现有库,当前无法更新该属性。

目前无法从另一租户共享给你的映像创建灵活的虚拟机规模集。

限制

预览期间:

  • 只能共享到也处于预览版阶段的订阅。
  • 只能共享到 30 个订阅和 5 个租户。
  • 直接共享库不能包含加密的映像版本。 无法在直接共享库中创建加密映像。
  • 只有订阅的所有者或在订阅或库级别分配有 Compute Gallery Sharing Admin 角色的用户或服务主体将能够启用基于组的共享。
  • 需要新建一个库,并将属性 sharingProfile.permissions 设置为 Groups。 使用 CLI 创建库时,请使用 --permissions groups 参数。 不能使用现有库,当前无法更新该属性。

要与所有 Azure 用户共享库,可以创建社区库。 任何拥有 Azure 订阅的人都可以使用社区库。 创建 VM 的人可使用门户、REST 或 Azure CLI 浏览与社区共享的映像。

将映像共享到社区是 Azure Compute Gallery 中的一项新功能。 可以公开映像库并与将其共享给所有 Azure 客户。 如果某个库被标记为社区库,则该库下的所有映像都将作为 Microsoft.Compute/communityGalleries 下的新资源类型提供给所有 Azure 客户。 所有 Azure 客户均可查看这些库并使用它们来创建 VM。 Microsoft.Compute/galleries 类型的原始资源仍位于订阅中,并且是专用资源。

有关详细信息,请参阅使用社区库共享映像

重要

目前无法从另一租户共享的映像创建灵活虚拟机规模集。

活动日志

活动日志在库、映像或版本上显示最近的活动,包括任何配置更改以及创建和删除它的时间。 查看 Azure 门户中的活动日志,或创建诊断设置以将其发送到 Log Analytics 工作区,你可以在该工作区中查看一段时间内的事件,或使用其他已收集的数据对其进行分析

下表列出了一些与活动日志中库操作相关的示例操作。 有关可能的日志条目的完整列表,请参阅 Microsoft.Compute 资源提供程序选项

操作 说明
Microsoft.Compute/galleries/write 创建新的库或更新现有库
Microsoft.Compute/galleries/delete 删除库
Microsoft.Compute/galleries/share/action 将库共享到不同的范围
Microsoft.Compute/galleries/images/read 获取库映像的属性
Microsoft.Compute/galleries/images/write 创建新的库映像或更新现有库映像
Microsoft.Compute/galleries/images/versions/read 获取库映像版本的属性

计费

使用 Azure Compute Gallery 服务不会产生额外的费用。 以下资源会产生费用:

  • 存储每个副本的存储成本。 对于映像,存储按快照收费,基于映像版本的占用大小、映像版本的副本数量以及将版本复制到的区域数。
  • 将第一个资源版本从源区域复制到目标区域的网络出口费用。 后续副本将在区域中处理,因此不会产生额外的费用。

例如,假设你有一个 127 GB 的 OS 磁盘的映像,它只占用 10 GB 的存储空间,还有一个 32 GB 的空数据磁盘。 每个映像的占用大小仅为 10 GB。 将映像复制到 3 个区域,每个区域有两个副本。 总共有 6 个快照,每个快照使用 10 GB。 将根据 10 GB 的占用大小向你收取每个快照的存储成本。你将为要复制到另外两个区域的第一个副本支付网络流出量费用。 有关每个区域中快照定价的详细信息,请参阅托管磁盘定价。 有关网络流出量的详细信息,请参阅带宽定价

最佳实践

  • 为了防止映像被意外删除,请在库级别使用资源锁。 有关详细信息,请参阅使用锁来保护 Azure 资源

  • 在可用的位置中使用 ZRS,实现高可用性。 创建映像或 VM 应用程序的版本时,可以在复制选项卡中配置 ZRS。 有关哪些区域支持 ZRS 的详细信息,请参阅具有可用性区域的 Azure 区域

  • 为生产映像保留至少 3 个副本。 对于并行创建的每 20 个 VM,我们建议保留一个副本。 例如,如果同时创建 1000 台 VM,应保留 50 个副本(每个区域最多可以有 50 个副本)。 若要更新副本计数,请转到库 -> 映像定义 -> 映像版本 -> 更新复制。

  • 为生产和测试映像维护单独的库,不要将它们放在单个库中。

  • 创建映像定义时,使发布者/产品/服务/SKU 与市场映像保持一致,以便轻松地识别 OS 版本。 例如,如果要从市场自定义 Windows Server 2019 映像并将它存储为计算库映像,请在你的计算库映像中使用在市场映像中使用的同一发布者/产品/服务/SKU。

  • 如果要在 VM 或规模集创建期间排除特定映像版本,请在发布映像时使用 excludeFromLatest库映像版本 - 创建或更新

    如果要排除特定区域中的版本,请使用 regionalExcludeFromLatest,而不是全局 excludeFromLatest。 可以同时设置全局和区域 excludeFromLatest 标志,但同时指定两者的情况下,区域标志将优先。

    "publishingProfile": {
      "targetRegions": [
        {
          "name": "brazilsouth",
          "regionalReplicaCount": 1,
          "regionalExcludeFromLatest": false,
          "storageAccountType": "Standard_LRS"
        },
        {
          "name": "canadacentral",
          "regionalReplicaCount": 1,
          "regionalExcludeFromLatest": true,
          "storageAccountType": "Standard_LRS"
        }
      ],
      "replicaCount": 1,
      "excludeFromLatest": true,
      "storageAccountType": "Standard_LRS"
    }
    
  • 对于灾难恢复方案,最佳做法是在不同的区域中至少具有两个库。 你仍然可以在其他区域中使用映像版本,但如果你的库所在的区域出现故障,则无法创建新的库资源或更新现有库资源。

  • 在映像版本上将 safetyProfile.allowDeletionOfReplicatedLocations 设置为 false,以防止意外删除复制的区域并防止出现中断。 也可以使用 CLI allow-replicated-location-deletion 进行设置

{ 
  "properties": { 
    "publishingProfile": { 
      "targetRegions": [ 
        { 
          "name": "West US", 
          "regionalReplicaCount": 1, 
          "storageAccountType": "Standard_LRS", 
          // encryption info         
        }
      ], 
      "replicaCount": 1, 
      "publishedDate": "2018-01-01T00:00:00Z", 
      "storageAccountType": "Standard_LRS" 
    }, 
    "storageProfile": { 
      "source": { 
        "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/images/{imageName}" 
      }, 
    }, 
   “safetyProfile”: { 
      “allowDeletionOfReplicatedLocations” : false 
    }, 
  }, 
  "location": "West US", 
  "name": "1.0.0" 
} 

SDK 支持

以下 SDK 支持创建 Azure Compute Galleries:

模板

可使用模板创建 Azure Compute Gallery 资源。 有多个快速启动模板可供使用:

后续步骤

了解如何使用 Azure Compute Gallery 部署映像VM 应用