共用方式為

在Azure计算库中存储和共享资源

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

Azure 计算库可帮助你为 Azure 资源(如映像和 应用)构建结构和组织。 计算图库提供:

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

通过画廊可以与所有人共享资源。 或者,可以将共享限制为组织中的特定用户、服务主体或Active Directory组。 可以将资源复制到多个区域,以便更快地缩放部署。

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

图像

有关在Azure计算库中存储映像的详细信息,请参阅在Azure计算库中存储和共享映像

VM 应用

尽管可以使用预安装的应用创建虚拟机(VM)的映像,但每次应用程序更改时都需要更新映像。 将应用程序安装与 VM 映像分离意味着无需为每个代码行更改发布新映像。

有关在 Azure 计算库中存储应用程序的详细信息,请参阅 VM 应用程序

限制

使用Azure计算库部署资源时,以下限制适用:

  • 每个订阅、每个区域最多可以有 100 个画廊。
  • 每个订阅在每个区域最多可以有 1,000 个映像定义。
  • 每个订阅和每个区域最多可以有 10,000 个映像版本。
  • 每个映像版本最多可以有 100 个副本。 但是,对于大多数用例,50 个副本应该足够。
  • 映像大小应小于 2 TB,但可以使用浅表复制来支持更大的映像大小(最多 32 TB)。
  • Azure 计算画廊资源不支持资源移动。

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

扩展

Azure计算库允许指定要保留的副本数。 在多 VM 部署方案中,可以将 VM 部署分散到其他副本。 此动作可以减少单个副本过载阻碍实例创建过程的可能性。

使用计算库,可以在规模集中部署多达 1,000 个 VM 实例。 可以在每个目标区域中设置不同的副本计数,具体视该区域的缩放需求而定。 由于每个副本都是资源的复制,因此此方法有助于通过增加副本数量来线性扩展部署。

虽然我们知道两个资源或区域都不相同,但有关如何在区域中使用副本的一般准则如下:

  • 对于并发创建的每个 20 个 VM,建议保留一个副本。 例如,如果要使用区域中的同一映像同时创建 1,000 个 VM,建议至少保留映像的 50 个副本。
  • 对于每个同时创建的规模集,建议保留一个实例。

我们始终建议适量增加副本数,以应对资源大小、内容和操作系统类型等因素的影响。

显示如何缩放图像的关系图。

高可用性

Azure ZRS针对区域中可用性区域的故障提供复原能力。 随着 Azure 计算图库的正式发布,可以选择将映像存储在具有可用区的区域中的 ZRS(区域冗余存储)账户中。

还可以为每个目标区域选择帐户类型。 默认存储帐户类型为标准 LRS,但可以为具有可用性区域的区域选择标准 ZRS。 有关 ZRS 的区域可用性的详细信息,请参阅 Azure Storage 冗余

显示区域冗余存储的示意图。

复制

Azure计算库还允许自动将资源复制到其他Azure区域。 可以将每个图像版本复制到不同的地区,具体取决于哪个对您的组织更合适。 一个示例是始终复制多个区域中的最新映像,而所有较旧映像版本仅在一个区域中可用。 此方法可帮助你节省存储成本。

创建之后,您可以更新资源的复制区域。 复制到其他区域所需的时间取决于要复制的数据量以及版本复制到的区域数。 在某些情况下,此过程可能需要几个小时。

复制发生时,可以查看其每个区域的状态。 在区域中完成映像复制后,可以使用该区域中的该资源部署 VM 或规模集。

共享

在 Azure Compute Gallery 中共享映像的方法主要有一种,这取决于您想要与哪些用户共享。

共享对象: 人员 群组 服务主体 特定订阅或租户中的所有用户 向Azure中的所有用户公开
基于角色的访问控制 (RBAC) 共享

注释

可以使用具有读取权限的映像来部署虚拟机和磁盘。

RBAC

由于库、定义和版本都是资源,因此可以使用内置Azure RBAC 角色来共享它们。 通过使用 Azure RBAC 角色,可以与其他用户、服务主体和组共享这些资源。 您甚至可以与不属于创建资源所在租户的个人共享访问权限。

用户有权访问资源版本后,可以使用它部署 VM 或虚拟机规模集。 下面是一个共享矩阵,可帮助你了解用户有权访问的内容:

与用户共享 计算画廊 映像定义 映像版本
计算画廊
映像定义

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

活动日志

活动日志显示图库、映像或版本的最近活动。 此信息包括任何配置更改,以及创建和删除项时。

可以在Azure门户中查看活动日志,或创建诊断设置,以将日志发送到Log Analytics工作区。 在工作区中,可以查看随时间推移的事件,或使用其他收集的数据对其进行分析。

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

操作 说明
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 计算库服务无需额外付费。 但是,需要为以下资源付费:

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

例如,假设:

  • 你有一个 127 GB OS 磁盘的映像,该磁盘只占用 10 GB 的存储空间,并且有一个空的 32 GB 数据磁盘。 每个映像的占用大小仅为 10 GB。
  • 映像将复制到三个区域,每个区域都有两个副本。 总共有六个快照,每个快照使用 10 GB。

在此示例中,存储成本是根据每个快照的占用大小(10 GB)计算的。 为第一个副本复制到额外的两个区域支付网络出口费用。

有关每个区域中快照定价的详细信息,请参阅 托管磁盘定价。 有关网络流出量的详细信息,请参阅带宽定价

最佳实践

  • 若要防止意外删除映像,请在库级别使用资源锁。 有关详细信息,请参阅锁定Azure资源以保护基础结构

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

  • 为生产映像保留至少三个副本。 对于并发创建的每个 20 个 VM,建议保留一个副本。

    例如,如果同时创建 1,000 个 VM,则应保留 50 个副本。 (每个区域最多可以有 50 个副本。若要更新副本计数,请转到库并选择 映像定义>映像版本>更新复制

  • 为生产和测试映像维护单独的图库。 不要将这两种图像类型放在单个库中。

  • 对于灾难恢复场景,至少要在不同区域中设置两个画廊。 你仍然可以在其他区域中使用映像版本,但如果一个库的区域出现故障,则无法创建新的库资源或更新现有库资源。

  • 在创建映像定义时,请保持 PublisherOfferSKU 的值与 Azure Marketplace 映像一致,以便轻松识别 OS 版本。

    例如,如果要从 Azure Marketplace 自定义 Windows Server 2019 映像并将其存储为计算库映像,请使用您在 Azure Marketplace 映像中使用的相同 PublisherOfferSKU 值。

  • 如果要在创建 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的映像版本上。 还可以通过在Azure 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" 
    } 
    
  • 若要在支持终止日期之前阻止删除映像,请设置 BlockDeletionBeforeEndOfLife。 此功能有助于防止意外删除。 你可以通过在REST API 中使用blockdeletionbeforeendoflife来设置它。

SDK 支持

以下 SDK 支持创建画廊:

模板

可以使用快速启动模板创建 Azure 计算图库资源: