Habilitación de la redundancia de zona en Azure Container Registry para lograr resistencia y alta disponibilidad

Además de la replicación geográfica, que replica los datos del registro en una o varias regiones de Azure para proporcionar disponibilidad y reducir la latencia en las operaciones regionales, Azure Container Registry admite la redundancia de zona opcional. La redundancia de zona proporciona resistencia y alta disponibilidad a un recurso de registro o de replicación (réplica) en una región específica.

En este artículo se muestra cómo configurar un registro de contenedor o una réplica con redundancia de zona mediante la CLI de Azure, Azure Portal o una plantilla de Azure Resource Manager.

La redundancia de zona es una característica del nivel de servicio Premium del registro de contenedor. Para obtener información sobre los límites y los niveles de servicio de los registros, consulte Niveles de servicio de Azure Container Registry.

Compatibilidad regional

  • Las Availability Zones de ACR se admiten en las siguientes regiones:

    América Europa África Asia Pacífico
    Sur de Brasil
    Centro de Canadá
    Centro de EE. UU.
    Este de EE. UU.
    Este de EE. UU. 2
    EUAP de Este de EE. UU. 2
    Centro-sur de EE. UU.
    US Gov Virginia
    Oeste de EE. UU. 2
    Oeste de EE. UU. 3
    Centro de Francia
    Centro-oeste de Alemania
    Norte de Europa
    Este de Noruega
    Centro de Suecia
    Norte de Suiza
    Sur de Reino Unido
    Oeste de Europa
    Norte de Sudáfrica
    Este de Australia
    Centro de la India
    Norte de China 3
    Este de Asia
    Japón Oriental
    Centro de Corea del Sur
    Centro de Catar
    Sudeste de Asia
    Norte de Emiratos Árabes Unidos
  • Actualmente no se admite la conversión de regiones en zonas de disponibilidad.

  • Para habilitar la compatibilidad con las zonas de disponibilidad en una región, cree el registro en la región deseada, con la compatibilidad con zonas de disponibilidad habilitada, o bien agregue una región replicada que tenga habilitada la compatibilidad con zonas de disponibilidad.

  • Un registro con una marca habilitada para AZ crea una replicación de región principal con una marca habilitada para AZ de manera predeterminada. La marca AZ no se puede deshabilitar una vez habilitada.

  • La replicación de la región principal representa el registro de la región principal. Ayuda a ver y administrar las propiedades de la zona de disponibilidad y no se puede eliminar.

  • La zona de disponibilidad es por región; una vez creadas las replicaciones no se pueden cambiar sus estados, excepto eliminando y creando de nuevo las replicaciones.

  • No se puede deshabilitar la redundancia de zona en una región.

  • ACR Tasks todavía no admite las zonas de disponibilidad.

Acerca de la redundancia de zona

Use las zonas de disponibilidad de Azure para crear un registro de contenedor de Azure resistente y de alta disponibilidad en una región de Azure. Por ejemplo, las organizaciones pueden configurar un registro de contenedor de Azure con redundancia de zona con otros recursos de Azure compatibles para satisfacer los requisitos de residencia de datos u otros requisitos de cumplimiento, a la vez que se proporciona alta disponibilidad dentro de una región.

Azure Container Registry también admite la replicación geográfica, que replica el servicio en varias regiones, lo que permite aplicar la redundancia y la localidad para procesar recursos de otras ubicaciones. La combinación de zonas de disponibilidad para la redundancia dentro de una región y la replicación geográfica en varias regiones mejora la confiabilidad y el rendimiento de un registro.

Las zonas de disponibilidad son ubicaciones físicas exclusivas dentro de una región de Azure. Para garantizar la resistencia, hay un mínimo de tres zonas independientes en todas las regiones habilitadas. Cada zona tiene uno o varios centros de datos equipados con alimentación, refrigeración y redes independientes. Cuando se configura para la redundancia de zona, un registro (o una réplica del registro en otra región) se replica en todas las zonas de disponibilidad de la región, lo que permite que siga disponible si hay errores en el centro de datos.

Creación de un registro con redundancia de zona: CLI

Para usar la CLI de Azure para habilitar la redundancia de zona, necesita la versión 2.17.0 o posterior de esta CLI, o Azure Cloud Shell. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Crear un grupo de recursos

Si es necesario, ejecute el comando az group create para crear un grupo de recursos para el registro.

az group create --name <resource-group-name> --location <location>

Creación de un registro habilitado para zona

Ejecute el comando az acr create para crear un registro con redundancia de zona en el nivel de servicio Premium. Elija una región que admita zonas de disponibilidad para Azure Container Registry. En el ejemplo siguiente, la redundancia de zona está habilitada en la región eastus. Consulte la ayuda del comando az acr create para ver más opciones de registro.

az acr create \
  --resource-group <resource-group-name> \
  --name <container-registry-name> \
  --location eastus \
  --zone-redundancy enabled \
  --sku Premium

En la salida del comando, observe la propiedad zoneRedundancy del registro. Cuando está habilitada, el registro tiene redundancia de zona:

{
 [...]
"zoneRedundancy": "Enabled",
}

Creación de una replicación con redundancia de zona

Ejecute el comando az acr replication create para crear una réplica de registro con redundancia de zona en una región que admita zonas de disponibilidad en Azure Container Registry, como westus2.

az acr replication create \
  --location westus2 \
  --resource-group <resource-group-name> \
  --registry <container-registry-name> \
  --zone-redundancy enabled

En la salida del comando, observe la propiedad zoneRedundancy de la réplica. Cuando está habilitada, la réplica tiene redundancia de zona:

{
 [...]
"zoneRedundancy": "Enabled",
}

Creación de un registro con redundancia de zona: Azure Portal

  1. Inicie sesión en Azure Portal.

  2. Seleccione Crear un recurso>Contenedores>Registro de contenedor.

  3. En la pestaña Datos básicos, seleccione o cree un grupo de recursos y escriba un nombre de registro único.

  4. En Ubicación, seleccione una región que admita la redundancia de zona para Azure Container Registry, como Este de EE. UU.

  5. En SKU, seleccione Premium.

  6. En Zonas de disponibilidad, seleccione Habilitado.

  7. También puede configurar más opciones del registro y luego seleccionar Revisar y crear.

  8. Seleccione Crear para implementar la instancia del registro.

    Habilitación de la redundancia de zona en Azure Portal

Para crear una replicación con redundancia de zona:

  1. Vaya al registro de contenedor de nivel Premium y seleccione Replicaciones.

  2. En el mapa que aparece, seleccione un hexágono verde en una región que admita la redundancia de zona para Azure Container Registry, como Oeste de EE. UU. 2. O bien, seleccione + Agregar.

  3. En la ventana Crear replicación, confirme los datos de Ubicación. En Zonas de disponibilidad, seleccione Habilitado y, luego, elija Crear.

    Habilitación de la replicación con redundancia de zona en Azure Portal

Creación de un registro con redundancia de zona: plantilla

Crear un grupo de recursos

Si es necesario, ejecute el comando az group create para crear un grupo de recursos para el registro en una región que admita zonas de disponibilidad para Azure Container Registry, como eastus. Esta región se usa en la plantilla para establecer la ubicación del registro.

az group create --name <resource-group-name> --location eastus

Implementación de la plantilla

Puede usar la siguiente plantilla de Resource Manager para crear un registro con replicación geográfica y redundancia de zona. De forma predeterminada, la plantilla permite la redundancia de zona en el registro y en una réplica regional.

Copie el siguiente contenido en un archivo nuevo y guárdelo con un nombre de archivo como 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"
      }
    }
  }

Ejecute el siguiente comando az deployment group create para crear el registro con el archivo de plantilla anterior. Donde se indique, proporcione la siguiente información:

  • un nombre de registro único; también puede implementar la plantilla sin parámetros y se creará un nombre único automáticamente
  • una ubicación para la réplica que admita zonas de disponibilidad, como westus2
az deployment group create \
  --resource-group <resource-group-name> \
  --template-file registryZone.json \
  --parameters acrName=<registry-name> acrReplicaLocation=<replica-location>

En la salida del comando, observe la propiedad zoneRedundancy del registro y la réplica. Cuando está habilitada, cada recurso tiene redundancia de zona:

{
 [...]
"zoneRedundancy": "Enabled",
}

Pasos siguientes