Activer la redondance de zone dans Azure Container Registry à des fins de résilience et de haute disponibilité

En plus de la géoréplication, qui réplique les données du registre dans une ou plusieurs régions Azure pour assurer la disponibilité et réduire la latence des opérations régionales, Azure Container Registry prend en charge la redondance de zone facultative. La redondance de zone assure la résilience et la haute disponibilité d’un registre ou d’une ressource de réplication (réplica) dans une région spécifique.

Cet article montre comment configurer un registre de conteneurs ou un réplica redondant interzone avec Azure CLI, le Portail Azure ou un modèle Azure Resource Manager.

La redondance de zone est une fonctionnalité du niveau de service Premium de Container Registry. Pour plus d’informations sur les niveaux de service et les limites de registre, consultez Niveaux de service d’Azure Container Registry.

Prise en charge régionale

  • Les zones de disponibilité ACR sont prises en charge dans les régions suivantes :

    Amérique Europe Afrique Asie-Pacifique
    Brésil Sud
    Centre du Canada
    USA Centre
    USA Est
    USA Est 2
    USA Est 2 (EUAP)
    États-Unis - partie centrale méridionale
    Virginie du gouvernement des États-Unis
    USA Ouest 2
    USA Ouest 3
    France Centre
    Allemagne Centre-Ouest
    Europe Nord
    Norvège Est
    Suède Centre
    Suisse Nord
    Sud du Royaume-Uni
    Europe Ouest
    Afrique du Sud Nord
    Australie Est
    Inde centrale
    Chine Nord 3
    Asie Est
    Japon Est
    Centre de la Corée
    Qatar Central
    Asie Sud-Est
    Émirats arabes unis Nord
  • Les conversions de région en zones de disponibilité ne sont pas prises en charge actuellement.

  • Pour activer la prise en charge des zones de disponibilité dans une région, créez le registre dans la région souhaitée, avec la prise en charge des zones de disponibilité activée, ou ajoutez une région répliquée avec la prise en charge des zones de disponibilité activée.

  • Un registre avec un tampon AZ crée une réplication de la région d’origine avec un tampon AZ par défaut. Le tampon AZ ne peut pas être désactivé une fois qu’il est activé.

  • La réplication de la région d’origine représente le registre de la région d’origine. Elle permet d’afficher et de gérer les propriétés de la zone de disponibilité, et ne peut pas être supprimée.

  • La zone de disponibilité est par région. Une fois les réplications créées, leurs états ne peuvent pas être modifiés, sauf en supprimant et en recréant les réplications.

  • La redondance de zone ne peut pas être désactivée dans une région.

  • ACR Tasks ne prend pas encore en charge les zones de disponibilité.

À propos de la redondance de zone

Utilisez les zones de disponibilité Azure pour créer un registre de conteneurs Azure résilient et à haute disponibilité dans une région Azure. Par exemple, les organisations peuvent configurer un registre de conteneurs Azure redondant interzone avec d’autres ressources Azure prises en charge pour répondre aux exigences en matière de résidence des données ou de conformité, tout en assurant une haute disponibilité dans une région.

Azure Container Registry prend également en charge la géoréplication, qui réplique le service dans plusieurs régions, en activant la redondance et la localité pour calculer les ressources dans d’autres emplacements. La combinaison de zones de disponibilité pour la redondance au sein d’une région et de la géoréplication dans plusieurs régions améliore la fiabilité et les performances d’un registre.

Les Zones de disponibilité sont des emplacements physiques uniques au sein d’une région Azure. Pour garantir la résilience, un minimum de trois zones distinctes sont activées dans toutes les régions. Chaque zone possède un ou de plusieurs centres de données équipés d’une alimentation, d’un système de refroidissement et d’un réseau indépendants. Lorsqu’il est configuré pour la redondance de zone, un registre (ou un réplica du registre dans une autre région) est répliqué dans toutes les zones de disponibilité de la région, ce qui le maintient disponible en cas de défaillance du centre de données.

Création d’un registre redondant interzone (CLI)

Pour activer la redondance de zone avec Azure CLI, vous devez disposer de la version 2.17.0 ou d’une version ultérieure d’Azure CLI, ou d’Azure Cloud Shell. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.

Créer un groupe de ressources

Si besoin, exécutez la commande az group create afin de créer un groupe de ressources pour le registre.

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

Création d’un registre compatible avec les zones

Exécutez la commande az acr create pour créer un registre redondant interzone dans le niveau de service Premium. Choisissez une région qui prend en charge les zones de disponibilité pour Azure Container Registry. Dans l’exemple suivant, la redondance de zone est activée dans la région eastus. Pour connaître d’autres options de registre, consultez l’aide de la commande az acr create.

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

Dans la sortie de la commande, repérez la propriété zoneRedundancy du registre. Lorsqu’elle est activée, le registre est redondant interzone :

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

Création d’une réplication redondante interzone

Exécutez la commande az acr replication create pour créer un réplica de registre redondant interzone dans une région qui prend en charge les zones de disponibilité pour Azure Container Registry, par exemple westus2.

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

Dans la sortie de la commande, repérez la propriété zoneRedundancy du réplica. Lorsqu’elle est activée, le réplica est redondant interzone :

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

Créer un registre redondant interzone (portail)

  1. Connectez-vous au portail Azure.

  2. Sélectionnez Créer une ressource>Conteneurs>Container Registry.

  3. Sous l’onglet Informations de base, sélectionnez ou créez un groupe de ressources, puis entrez un nom de registre unique.

  4. Dans Emplacement, sélectionnez une région qui prend en charge la redondance de zone pour Azure Container Registry, par exemple USA Est.

  5. Dans Référence (SKU) , sélectionnez Premium.

  6. Dans Zones de disponibilité, sélectionnez Activé.

  7. Si vous le souhaitez, configurez plus de paramètres de registre, puis sélectionnez Vérifier + créer.

  8. Sélectionnez Créer pour déployer l’instance du registre.

    Activer la redondance de zone dans Portail Azure

Pour créer un réplica redondant interzone :

  1. Accédez à votre registre de conteneurs de niveau Premium, puis sélectionnez Réplications.

  2. Sur la carte qui s’affiche, sélectionnez un hexagone vert dans une région qui prend en charge la redondance de zone pour Azure Container Registry, par exemple USA Ouest 2. Sinon, sélectionnez + Ajouter.

  3. Dans la fenêtre Créer une réplication, confirmez l’Emplacement. Dans Zones de disponibilité, sélectionnez Activé, puis Créer.

    Activation de la réplication redondante interzone sur le Portail Azure

Créer un registre redondant interzone (modèle)

Créer un groupe de ressources

Si nécessaire, exécutez la commande az group create pour créer un groupe de ressources pour le registre dans une région qui prend en charge les zones de disponibilité pour Azure Container Registry, par exemple eastus. Cette région est utilisée par le modèle pour définir l’emplacement du registre.

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

Déployer le modèle

Vous pouvez utiliser le modèle Resource Manager suivant pour créer un registre géorépliqué et redondant interzone. Par défaut, le modèle active la redondance de zone dans le registre et un réplica régional.

Copiez le contenu suivant dans un nouveau fichier et enregistrez-le à l’aide d’un nom de fichier tel que 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"
      }
    }
  }

Exécutez la commande az deployment group create suivante pour créer le Registre à l’aide du fichier de modèle précédent. Si indiqué, fournissez :

  • un nom de registre unique, ou déployez le modèle sans paramètres et il créera un nom unique pour vous
  • un emplacement pour le réplica qui prend en charge les zones de disponibilité, par exemple westus2
az deployment group create \
  --resource-group <resource-group-name> \
  --template-file registryZone.json \
  --parameters acrName=<registry-name> acrReplicaLocation=<replica-location>

Dans la sortie de la commande, penchez-vous sur la propriété zoneRedundancy pour le registre et le réplica. Lorsque elle est activée, chaque ressource est redondante interzone :

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

Étapes suivantes