适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集
Azure 计算库可帮助你围绕 Azure 资源(如映像和 应用程序)构建结构和组织。 计算库提供:
- 全局复制。1
- 资源的版本控制和分组,以便于管理。
- 支持可用性区域的区域中,具有区域冗余存储(ZRS)帐户的高可用性资源。 ZRS 提供针对区域性故障的复原能力。
- 本地冗余存储(LRS)的高级存储支持。
- 跨订阅和 Active Directory 租户共享到社区。
- 使用每个区域中的资源副本缩放部署。
使用库可以与所有人共享资源。 或者,可以将共享限制为组织中的特定用户、服务主体或 Active Directory 组。 可以将资源复制到多个区域,以便更快地缩放部署。
1 Azure Compute Gallery 服务不是全局资源。 对于灾难恢复方案,最佳做法是在单独的区域中至少有两个库。
图像
有关在 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 实例。 可以在每个目标区域中设置不同的副本计数,具体视该区域的缩放需求而定。 由于每个副本都是资源的副本,因此此方法有助于使用每个额外副本线性缩放部署。
虽然我们知道两个资源或区域都不相同,但有关如何在区域中使用副本的一般准则如下:
- 对于并发创建的每个 50 个 VM,建议保留一个副本。 例如,如果要使用区域中的同一映像同时创建 500 个 VM,建议至少保留映像的 10 个副本。
- 对于同时创建的每个规模集,建议保留一个副本。
我们始终建议过度预配副本数,因为资源大小、内容和 OS 类型等因素。
高可用性
Azure ZRS 针对区域中可用性区域的故障提供复原能力。 使用 Azure 计算库的正式版,可以选择将映像存储在具有可用性区域的区域中的 ZRS 帐户中。
还可以为每个目标区域选择帐户类型。 默认存储帐户类型为标准 LRS,但可以为具有可用性区域的区域选择标准 ZRS。 有关 ZRS 的区域可用性的详细信息,请参阅 Azure 存储冗余。
复制
使用 Azure Compute Gallery 还可以自动将资源复制到其他 Azure 区域。 可以将每个映像版本复制到不同的区域,具体取决于组织有意义的内容。 一个示例是始终复制多个区域中的最新映像,而所有较旧映像版本仅在一个区域中可用。 此方法可帮助你节省存储成本。
创建时间后,可以更新资源复制到的区域。 复制到其他区域所需的时间取决于要复制的数据量以及版本复制到的区域数。 在某些情况下,此过程可能需要几个小时。
复制发生时,可以查看其每个区域的状态。 在区域中完成映像复制后,可以使用该区域中的该资源部署 VM 或规模集。
共享
在 Azure 计算库中共享映像有一种主要方法,具体取决于要与之共享的用户:
共享对象: | 人员 | 组 | 服务主体 | 特定订阅或租户中的所有用户 | 与 Azure 中的所有用户公开共享 |
---|---|---|---|---|---|
基于角色的访问控制 (RBAC) 共享 | 是 | 是 | 是 | 否 | 否 |
注释
可以使用具有读取权限的映像来部署虚拟机和磁盘。
RBAC
由于库、定义和版本都是资源,因此可以使用内置的 Azure RBAC 角色来共享它们。 通过使用 Azure RBAC 角色,可以与其他用户、服务主体和组共享这些资源。 甚至可以与在其中创建资源的租户外部的个人共享访问权限。
用户有权访问资源版本后,可以使用它部署 VM 或虚拟机规模集。 下面是一个共享矩阵,可帮助你了解用户有权访问的内容:
与用户共享 | 计算库 | 映像定义 | 映像版本 |
---|---|---|---|
计算库 | 是 | 是 | 是 |
映像定义 | 否 | 是 | 是 |
建议在库级别共享,以获得最佳体验。 建议不要共享单独的映像版本。 有关 Azure RBAC 的详细信息,请参阅使用 RBAC分配 Azure 角色和共享。
活动日志
活动日志在库、映像或版本上显示最近的活动。 此信息包括任何配置更改,以及创建和删除项时。
可以在 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 计算库服务无需额外付费。 但是,需要为以下资源付费:
- 每个副本的存储成本。 对于映像,存储费用作为快照收费。 它基于映像版本占用的大小、映像版本的副本数以及将版本复制到的区域数。
- 将第一个资源版本从源区域复制到目标区域的网络出口费用。 后续副本将在区域中处理,因此不会产生额外的费用。
例如,假设:
- 你有一个 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 个副本。若要更新副本计数,请转到库并选择 映像定义>映像版本>更新复制。
为生产和测试映像维护单独的库。 不要将这两种图像类型放在单个库中。
对于灾难恢复方案,在单独的区域中至少有两个库。 你仍然可以在其他区域中使用映像版本,但如果一个库的区域出现故障,则无法创建新的库资源或更新现有库资源。
创建映像定义时,使 发布者、 套餐和 SKU 值与 Azure 市场映像保持一致,以便轻松识别 OS 版本。
例如,如果要从 Azure 市场自定义 Windows Server 2019 映像并将其存储为计算库映像,请使用在 Azure 市场映像中使用的同一 发布者、 套餐和 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
映像版本。 还可以在 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 计算库资源: