在 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 应用程序

限制

使用 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 或规模集。

共享

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

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

RBAC

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

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

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

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

活动日志

活动日志在库、映像或版本上显示最近的活动,包括任何配置更改以及创建和删除它的时间。 查看 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": "chinanorth2",
          "regionalReplicaCount": 1,
          "regionalExcludeFromLatest": false,
          "storageAccountType": "Standard_LRS"
        },
        {
          "name": "chinaeast2",
          "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": "chinanorth2", 
          "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": "chinaeast2", 
  "name": "1.0.0" 
} 

SDK 支持

以下 SDK 支持创建 Azure Compute Galleries:

模板

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

后续步骤

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