本文介绍如何在与注册表的主区域分开的 Azure 区域中设置区域冗余副本。
Azure 容器注册表高级层中的异地复制将容器注册表的内容复制到多个 Azure 区域。
当注册表启用地理复制时,如果副本被预配在启用了可用区的区域,它们也将具有区域冗余性。 区域冗余允许在区域内的多个可用性区域中分布注册表数据和作。
默认情况下,为支持可用性区域的区域中的所有 Azure 容器注册表副本启用区域冗余,使资源能够自动复原,且无需额外付费。 此增强适用于受支持地域中的新副本和现有副本。
重要
Azure 门户和 CLI 可能尚未准确反映区域冗余更新。
zoneRedundancy
属性在您的副本配置中仍可能显示为 false,即使受支持区域中的所有副本的区域冗余被激活。 我们正在积极更新门户和 API 图面,以更透明地反映此默认行为。 所有以前启用的功能将继续按预期运行。
有关可用性区域支持要求和功能以及多区域部署选项的详细信息,请参阅 Azure 容器注册表中的可靠性。
先决条件
创建区域冗余副本
若要创建区域冗余副本,请使用 Azure 门户、Azure CLI 或 Bicep 文件。
登录到 Azure 门户。
转到高级层容器注册表,然后选择 异地复制。
在显示的地图上,执行以下作之一:
在 “创建复制 ”窗口中,确认 “位置”。
在 可用性区域中,选择“ 已启用”,然后选择“ 创建”。
请确保具有 Azure CLI 2.17.0 或更高版本。 如果需要安装或升级,请参阅 安装 Azure CLI。
通过运行 az acr replication create 创建区域冗余复制(将<resource-group-name>
区域<container-registry-name>
<replica-region>
冗余复制替换为值):
az acr replication create \
--location <region-name> \
--resource-group <resource-group-name> \
--registry <container-registry-name> \
--zone-redundancy enabled
在命令输出中,记下 zoneRedundancy
副本的属性。 如果 zoneRedundancy
设置为 "Enabled"
,注册表是区域冗余的:
{
[...]
"zoneRedundancy": "Enabled"
}
若要为现有注册表创建异地副本,请将以下 Bicep 模板复制到新文件,并使用文件名(例如 replicaZone.bicep
) 将其保存。
默认情况下,模板启用区域冗余区域副本。
@description('Globally unique name of your Azure Container Registry')
param containerRegistryName string
@description('Short name for registry replica location, such as chinanorth3')
param replicaLocation string
@description('Enable zone redundancy of registry replica. Requires replica location to support availability zones.')
@allowed([
'Enabled'
'Disabled'
])
param replicaZoneRedundancy string = 'Enabled'
resource containerRegistry 'Microsoft.ContainerRegistry/registries@2025-04-01' existing = {
name: containerRegistryName
}
resource containerRegistryReplica 'Microsoft.ContainerRegistry/registries/replications@2025-04-01' = {
parent: containerRegistry
name: replicaLocation
location: replicaLocation
properties: {
zoneRedundancy: replicaZoneRedundancy
}
}
运行以下 az deployment group create 命令,以使用前面的模板文件创建注册表(替换<resource-group-name>
<registry-name>
值和<replica-location>
值)。
az deployment group create \
--resource-group <resource-group-name> \
--template-file registryZone.json \
--parameters containerRegistryName=<registry-name> replicaLocation=<replica-location>