在 Azure Container Registry 中啟用區域備援,實現復原和高可用性
除了異地複寫 (會跨一或多個 Azure 區域複寫登錄資料,以提供可用性並減少區域作業的延遲),Azure Container Registry 還支援選擇性區域備援。 區域備援可為特定區域中的登錄或複寫資源 (複本) 提供復原能力和高可用性。
本文說明如何使用 Azure CLI、Azure 入口網站或 Azure Resource Manager 範本來設定區域備援容器登錄或複本。
區域備援是進階版容器登錄服務層級的功能。 如需登錄服務層級和限制的相關資訊,請參閱 Azure Container Registry 服務層級。
區域支援
下列區域中支援 ACR 可用性區域:
美洲 歐洲 非洲 亞太地區 巴西南部
加拿大中部
美國中部
美國東部
美國東部 2
美國東部 2 EUAP
美國中南部
美國維吉尼亞州政府
美國西部 2
美國西部 3法國中部
德國中西部
義大利北部
北歐
挪威東部
瑞典中部
瑞士北部
英國南部
西歐南非北部 澳大利亞東部
印度中部
中國北部 3
東亞
日本東部
南韓中部
卡達中部
東南亞
阿拉伯聯合大公國北部目前不支援將區域轉換為可用性區域。
若要在區域中啟用可用性區域支援,則必須在所需的區域中建立登錄,並啟用可用性區域支援,或新增複寫的區域,並啟用可用性區域支援。
已啟用 AZ 戳記的登錄預設會建立具有已啟用 AZ 戳記的主區域複寫。 一旦啟用 AZ 戳記後,就無法加以停用。
主區域複寫代表主區域登錄。 這有助於檢視和管理可用性區域屬性,而且無法刪除。
可用性區域會依據區域,一旦建立複寫後,就無法變更其狀態,除非將複寫刪除後再重新建立。
無法在區域中停用區域備援。
ACR 工作尚未支援可用性區域。
關於區域備援
使用 Azure 可用性區域在 Azure 區域內建立復原性和高可用性的 Azure 容器登錄。 例如,組織可以使用其他支援的 Azure 資源來設定區域備援的 Azure 容器登錄,以符合資料落地或其他合規性需求,同時在區域內提供高可用性。
Azure Container Registry 也支援異地複寫,可跨多個區域複寫服務,使備援和位置能夠計算其他位置的資源。 在區域內備援的可用性區域以及跨多個區域進行異地複寫的組合,可增強登錄的可靠性與效能。
可用性區域是 Azure 地區內獨特的實體位置。 若要確保復原能力,在所有已啟用的區域中都至少要有三個個別的區域。 每個區域皆具有一或多個配備獨立電力、冷卻系統及網路的資料中心。 針對區域備援設定時,登錄 (或不同區域中的登錄複本) 會複寫到區域中的所有可用性區域,並在資料中心失敗時保持登錄可供使用。
建立區域備援登錄 - CLI
若要使用 Azure CLI 來啟用區域備援,您需要 Azure CLI 2.17.0 版或更新版本,或是 Azure Cloud Shell。 如果您需要安裝或升級,請參閱安裝 Azure CLI。
建立資源群組
視需要執行 az group create 命令,以建立登錄的資源群組。
az group create --name <resource-group-name> --location <location>
建立已啟用區域功能的登錄
執行 az acr create 命令,以在進階服務層級中建立區域備援登錄。 選擇支援 Azure Container Registry 可用性區域的區域。 在下列範例中,已在 eastus 區域中啟用區域備援。 如需更多登錄選項,請參閱 az acr create
命令說明。
az acr create \
--resource-group <resource-group-name> \
--name <container-registry-name> \
--location eastus \
--zone-redundancy enabled \
--sku Premium
在命令輸出中,記下登錄的 zoneRedundancy
屬性。 啟用時,登錄為區域備援:
{
[...]
"zoneRedundancy": "Enabled",
}
建立區域備援複寫
執行 az acr replication create 命令,在支援 Azure Container Registry 可用性區域的區域 (例如 westus2) 中建立區域備援登錄複本。
az acr replication create \
--location westus2 \
--resource-group <resource-group-name> \
--registry <container-registry-name> \
--zone-redundancy enabled
在命令輸出中,記下複本的 zoneRedundancy
屬性。 啟用時,複本為區域備援:
{
[...]
"zoneRedundancy": "Enabled",
}
建立區域備援登錄 - 入口網站
登入 Azure 入口網站。
選取 [建立資源]>[容器]>[容器登錄]。
在 [基本概念] 索引標籤中,選取或建立資源群組,然後輸入唯一登錄名稱。
在 [位置] 中,選取支援 Azure Container Registry 區域備援的區域,例如美國東部。
在 SKU 中,選取 [進階]。
在 [可用性區域] 中,選取 [已啟用]。
選擇性地設定其他登錄設定,然後選取 [檢閱 + 建立]。
選取 [建立] 以部署登錄執行個體。
若要建立區域備援複寫:
瀏覽至進階版階層容器登錄,然後選取 [複寫]。
在出現的地圖上,選取支援 Azure Container Registry 區域備援區域中的綠色十六角形,例如美國西部 2。 或是選取 [+ 新增]。
在 [建立複寫] 視窗中,確認 [位置]。 在 [可用性區域] 中,選取 [已啟用],然後選取 [建立]。
建立區域備援登錄 - 範本
建立資源群組
視需要執行 az group create 命令,在支援 Azure Container Registry 可用性區域的區域 (例如 eastus) 中建立登錄的資源群組。 範本會使用此區域來設定登錄位置。
az group create --name <resource-group-name> --location eastus
部署範本
您可以使用下列 Resource Manager 範本來建立區域備援、異地複寫的登錄。 依預設,範本會在登錄和區域複本中啟用區域備援。
將下列內容複寫到新的檔案,並使用檔案名 (例如 registryZone.json
) 儲存檔案。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"acrName": {
"type": "string",
"defaultValue": "[concat('acr', uniqueString(resourceGroup().id))]",
"minLength": 5,
"maxLength": 50,
"metadata": {
"description": "Globally unique name of your Azure Container Registry"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for registry home replica."
}
},
"acrSku": {
"type": "string",
"defaultValue": "Premium",
"allowedValues": [
"Premium"
],
"metadata": {
"description": "Tier of your Azure Container Registry. Geo-replication and zone redundancy require Premium SKU."
}
},
"acrZoneRedundancy": {
"type": "string",
"defaultValue": "Enabled",
"metadata": {
"description": "Enable zone redundancy of registry's home replica. Requires registry location to support availability zones."
}
},
"acrReplicaLocation": {
"type": "string",
"metadata": {
"description": "Short name for registry replica location."
}
},
"acrReplicaZoneRedundancy": {
"type": "string",
"defaultValue": "Enabled",
"metadata": {
"description": "Enable zone redundancy of registry replica. Requires replica location to support availability zones."
}
}
},
"resources": [
{
"comments": "Container registry for storing docker images",
"type": "Microsoft.ContainerRegistry/registries",
"apiVersion": "2020-11-01",
"name": "[parameters('acrName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('acrSku')]",
"tier": "[parameters('acrSku')]"
},
"tags": {
"displayName": "Container Registry",
"container.registry": "[parameters('acrName')]"
},
"properties": {
"adminUserEnabled": "[parameters('acrAdminUserEnabled')]",
"zoneRedundancy": "[parameters('acrZoneRedundancy')]"
}
},
{
"type": "Microsoft.ContainerRegistry/registries/replications",
"apiVersion": "2020-11-01",
"name": "[concat(parameters('acrName'), '/', parameters('acrReplicaLocation'))]",
"location": "[parameters('acrReplicaLocation')]",
"dependsOn": [
"[resourceId('Microsoft.ContainerRegistry/registries/', parameters('acrName'))]"
],
"properties": {
"zoneRedundancy": "[parameters('acrReplicaZoneRedundancy')]"
}
}
],
"outputs": {
"acrLoginServer": {
"value": "[reference(resourceId('Microsoft.ContainerRegistry/registries',parameters('acrName')),'2019-12-01').loginServer]",
"type": "string"
}
}
}
執行下列 az deployment group create 命令,以使用先前的範本檔案來建立登錄。 在指出的位置中,請提供:
- 唯一的登錄名稱,或部署不含參數的範本,其會為您建立唯一的名稱
- 支援可用性區域複本的位置,例如 westus2
az deployment group create \
--resource-group <resource-group-name> \
--template-file registryZone.json \
--parameters acrName=<registry-name> acrReplicaLocation=<replica-location>
在命令輸出中,記下登錄和複本的 zoneRedundancy
屬性。 啟用時,每個資源皆為區域備援:
{
[...]
"zoneRedundancy": "Enabled",
}
下一步
- 深入了解支援可用性區域的地區。
- 深入了解在 Azure 中建置可靠性。