Créer un groupe identique de machines virtuelles qui utilise des zones de disponibilité

Les zones de disponibilité Azure sont des emplacements isolés par erreur au sein d’une région Azure qui fournissent une alimentation redondante, un refroidissement et une mise en réseau. Elles vous permettent d’exécuter des applications avec une haute disponibilité et une tolérance de panne aux défaillances du centre de données. Les régions Azure qui prennent en charge les zones de disponibilité ont au moins trois zones distinctes. Chaque zone de disponibilité se compose d’un ou plusieurs centres de données équipés d’une alimentation d’infrastructure indépendante, d’un réseau et d’un refroidissement. Les zones de disponibilité sont connectées par un réseau hautes performances avec une latence aller-retour de moins de 2 millisecondes. Pour plus d'informations, consultez Vue d’ensemble des zones de disponibilité.

Pour protéger vos groupes de machines virtuelles identiques contre les défaillances au niveau du centre de données, vous pouvez créer un groupe identique dans les zones de disponibilité. Pour utiliser les zones de disponibilité, votre groupe identique doit être créé dans une région Azure prise en charge.

Considérations relatives à la conception pour les zones de disponibilité

Virtual Machine Scale Sets prend en charge trois modèles de déploiement zonal :

  • Interzone redondante ou étendue de zone (recommandé)
  • Zonal ou aligné sur une zone (zone unique)
  • Zones géographiques

Interzone redondante ou étendue de zone

Une zone redondante ou une zone couvrant des instances de groupe identique répartit les instances sur toutes les zones sélectionnées, "zones": ["1","2","3"]. Par défaut, le groupe identique effectue une approche optimale pour répartir uniformément les instances entre les zones sélectionnées. Toutefois, vous pouvez spécifier que vous souhaitez un équilibre de zone strict en définissant "zoneBalance": "true" dans votre déploiement. Chaque machine virtuelle et ses disques sont zonaux, de sorte qu’ils sont épinglés à une zone spécifique. Les instances entre les zones sont connectées par un réseau hautes performances avec une faible latence. En cas de panne zonale ou de problème de connectivité, la connectivité aux instances au sein de la zone affectée peut être compromise, tandis que les instances d’autres zones de disponibilité ne doivent pas être affectées. Vous pouvez ajouter de la capacité au groupe identique lors d’une panne zonale, et le groupe identique ajoute d’autres instances aux zones non affectées. Lorsque la zone est restaurée, vous devrez peut-être effectuer un scale-down de votre groupe identique à la capacité d’origine. Une meilleure pratique serait de configurer des règles de mise à l’échelle automatique en fonction de l’utilisation du processeur ou de la mémoire. Les règles de mise à l’échelle automatique permettraient au groupe identique de réagir en cas de perte d’instances de machine virtuelle dans cette zone en augmentant la taille des instances dans les zones opérationnelles restantes.

La répartition des instances entre les zones de disponibilité respecte le contrat SLA de 99,99 % pour les instances réparties entre les zones de disponibilité, et est recommandée pour la plupart des charges de travail dans Azure.

Zonal ou aligné sur une zone (zone unique)

Un groupe identique zonal ou aligné sur une zone de mise à l’échelle place des instances dans une seule zone de disponibilité "zones": ['1']. Chaque machine virtuelle et ses disques sont zonaux, de sorte qu’ils sont épinglés à une zone spécifique. Cette configuration est principalement utilisée lorsque vous avez besoin d’une latence inférieure entre les instances.

Zones géographiques

Un groupe de machines virtuelles identiques régional est lorsque l’attribution de zone n’est pas définie explicitement ("zones"=[] ou "zones"=null). Dans cette configuration, le groupe identique crée des instances régionales (non épinglées de zone) et place implicitement des instances dans toute la région. Il n’existe aucune garantie pour l’équilibre ou la répartition entre les zones, ou que les instances atterrissent dans la même zone de disponibilité. La colocalisation de disque est garantie pour les disques Ultra et Premium v2, le meilleur effort pour les disques Premium V1 et non garantis pour les disques de référence SKU Standard (SSD ou HDD).

Dans les rares cas d’une panne zonale complète, une ou toutes les instances du groupe identique peuvent être affectées.

Domaines d’erreur et zones de disponibilité

Un domaine d’erreur est un groupe d’isolation des erreurs au sein d’une zone de disponibilité ou d’un centre de données de nœuds matériels qui partagent la même planification de maintenance de l’alimentation, du réseau, du refroidissement et de la plateforme. Les instances de machine virtuelle qui se trouvent sur des domaines d’erreur différents ne sont pas susceptibles d’être affectées par la même panne planifiée ou non planifiée. Vous pouvez spécifier la façon dont les instances sont réparties entre les domaines d’erreur au sein d’une région ou d’une zone.

  • Diffusion maximale (platformFaultDomainCount = 1)
  • Diffusion fixe statique (platformFaultDomainCount = 5)
  • Répartition alignée sur les domaines d’erreur de disque de stockage (platformFaultDomainCount = 2 ou 3, pour les déploiements régionaux uniquement)

Avec « max spreading » (répartition max), le groupe identique répartit vos machines virtuelles sur autant de domaines d’erreur possibles au sein de chaque zone. Cette répartition peut s’effectuer sur plus ou moins de cinq domaines d’erreur par zone. Avec une diffusion fixe statique, le groupe identique répartit vos machines virtuelles dans exactement cinq domaines d’erreur par zone. Si le groupe identique ne parvient pas à trouver cinq domaines d’erreur distincts par zone pour satisfaire la demande d’allocation, la demande échoue.

Nous vous recommandons de déployer avec « max spreading » (répartition max.) pour la plupart des charges de travail, car cette approche fournit la meilleure répartition dans la plupart des cas. Si vous avez besoin que les réplica soient répartis sur des unités matérielles d’isolation distinctes, nous vous recommandons de les répartir sur plusieurs zones de disponibilité et d’utiliser « max spreading » (répartition max.) au sein de chaque zone.

Notes

Avec « max spreading » (répartition max.), un seul domaine d’erreur s’affiche dans la vue d’instance de machine virtuelle ainsi que dans les métadonnées de l’instance, quel que soit le nombre de domaines d’erreur sur lesquels les machines virtuelles sont réparties. La répartition dans chaque zone est implicite.

Groupes de placement

Important

Les groupes de placement s’appliquent uniquement aux groupes de machines virtuelles identiques s’exécutant en mode d’orchestration Uniforme.

Lorsque vous déployez un groupe identique, vous pouvez déployer avec un seul groupe de placement par zone de disponibilité, ou plusieurs groupes par zone. Pour les groupes identiques régionaux (non-zonaux), le choix consiste à avoir un groupe de placement unique dans la région ou plusieurs groupes dans la région. Si la propriété de groupe identique appelée singlePlacementGroup est définie sur false, le groupe identique peut se composer de plusieurs groupes de placement et présente une plage de 0 à 1 000 machines virtuelles. Lorsque la valeur par défaut est définie sur true, le groupe identique est composé d’un seul groupe de placement et présente une plage de 0 à 100 machines virtuelles. Pour la plupart des charges de travail, nous recommandons d’utiliser plusieurs groupes de placement, qui permettent une plus grande mise à l’échelle. Dans la version d’API 2017-12-01, pour les groupes identiques de zone unique et inter-zones l’option par défaut est plusieurs groupes de placement, mais pour les groupes identiques régionaux (non-zonaux) l’option par défaut est un seul groupe de placement.

Notes

Si vous utilisez « max spreading » (répartition max), vous devez utiliser plusieurs groupes de placement.

Équilibrage des zones

Enfin, pour les groupes identiques déployés sur plusieurs zones, vous avez également la possibilité de choisir « best effort zone balance» (meilleur équilibre des zones) ou « strict zone balance » (équilibre des zones strict). Un groupe identique est considéré comme « équilibré » s’il y a le même nombre de machines virtuelles dans chacune de ses zones, à une machine virtuelle près. Par exemple :

  • Un groupe identique composé de 2 machines virtuelles dans la zone 1, de 3 machines virtuelles dans la zone 2 et de 3 machines virtuelles dans la zone 3 est considéré comme étant équilibré. Une seule de ces zones présente un nombre de machines virtuelles différent, et ce nombre n’est inférieur que de 1 à celui des autres zones.
  • Un groupe identique composé d’1 machine virtuelle dans la zone 1, de 3 machines virtuelles dans la zone 2 et de 3 machines virtuelles dans la zone 3 est considéré comme non équilibré. En effet, la zone 1 comporte 2 machines virtuelles de moins que les zones 2 et 3.

Il est possible que les machines virtuelles du groupe identique soient correctement créées, mais que le déploiement d’extensions sur ces machines virtuelles échoue. Ces machines virtuelles avec des erreurs d’extension sont toujours comptabilisées lorsque l’équilibre d’un groupe identique est évalué. Par exemple, un groupe identique composé de 3 machines virtuelles en zone 1, 3 machines virtuelles en zone 2 et 3 machines virtuelles en zone 3 est considéré comme étant équilibré même si toutes les extensions ont échoué en zone 1 et toutes les extensions ont réussi en zones 2 et 3.

Avec « best effort zone balance » (meilleur équilibre des zones), le groupe identique tente de diminuer et d’augmenter la taille des instances tout en maintenant l’équilibre. Toutefois, si, pour une raison quelconque, l’équilibre de zone n’est pas possible (par exemple, si une zone tombe en panne, le groupe identique ne peut pas créer de machine virtuelle dans cette zone), le groupe identique permet un déséquilibre temporaire pour effectuer un scale-in ou un scale-out réussi. Lors des tentatives suivantes d’augmentation de la taille des instances, le groupe identique ajoute des machines virtuelles aux zones qui ont besoin de davantage de machines virtuelles pour équilibrer le groupe identique. De même, lors des tentatives suivantes de diminution de la taille des instances, le groupe identique retire des machines virtuelles aux zones qui ont besoin de moins de machines virtuelles pour équilibrer le groupe identique. Avec « strict zone balance » (équilibre des zones strict), toute tentative du groupe identique pour diminuer et augmenter la taille des instances échoue si cela crée un déséquilibre.

Pour utiliser « best effort zone balance » (meilleur équilibre des zones), définissez zoneBalance sur false. Il s’agit du paramètre par défaut dans la version d’API 2017-12-01. Pour utiliser « strict zone balance » (équilibre des zones strict), définissez la valeur zoneBalance sur true.

Notes

La propriété zoneBalance ne peut être définie que si la propriété Zones du groupe identique contient plusieurs zones. S’il n’y aucune zone ou qu’une seule zone spécifiée, la propriété zoneBalance ne doit pas être définie.

Créer des groupes identiques interzones ou zonaux

Quand vous déployez un groupe de machines virtuelles identiques, vous pouvez utiliser une seule zone de disponibilité dans une région, ou bien plusieurs zones.

Vous pouvez créer un groupe identique qui utilise des zones de disponibilité avec l’une des méthodes suivantes :

Utilisation du portail Azure

Le processus de création d’un groupe identique qui utilise une zone de disponibilité est identique à celui décrit dans l’article de prise en main. Lorsque vous sélectionnez une région Azure prise en charge, vous pouvez créer un groupe identique dans une zone disponible ou plus, comme indiqué dans l’exemple suivant :

Créer un groupe identique dans une zone de disponibilité unique

Le groupe identique et les ressources prises en charge, notamment l’équilibreur de charge Azure et l’adresse IP publique, sont créés dans la même zone que vous spécifiez.

Utilisation de l’interface de ligne de commande Microsoft Azure

Le processus de création d’un groupe identique qui utilise une zone de disponibilité est identique à celui décrit dans l’article de prise en main. Pour utiliser les zones de disponibilité, vous devez créer votre groupe identique dans une région Azure prise en charge.

Ajoutez le paramètre --zones à la commande az vmss create, puis spécifiez la zone à utiliser (par exemple, zone 1, 2 ou 3).

az vmss create \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --image <SKU Image> \
    --upgrade-policy-mode automatic \
    --admin-username azureuser \
    --generate-ssh-keys \
    --zones 1 2 3

Quelques minutes sont nécessaires pour créer et configurer l’ensemble des ressources et machines virtuelles du groupe identique dans les zones que vous spécifiez. Pour obtenir un exemple complet de groupe identique redondant interzone et de ressources réseau, consultez cet exemple de script CLI.

Utilisation d'Azure PowerShell

Pour utiliser les zones de disponibilité, vous devez créer votre groupe identique dans une région Azure prise en charge. Ajoutez le paramètre -Zone à la commande New-AzVmssConfig et spécifiez la zone ou les zones à utiliser (par exemple, zone 1, 2ou 3).

New-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -Location "EastUS2" `
  -VMScaleSetName "myScaleSet" `
  -VirtualNetworkName "myVnet" `
  -SubnetName "mySubnet" `
  -PublicIpAddressName "myPublicIPAddress" `
  -LoadBalancerName "myLoadBalancer" `
  -UpgradePolicy "Automatic" `
  -Zone "1", "2", "3"

Utiliser les modèles Azure Resource Manager

Le processus de création d’un groupe identique qui utilise une zone de disponibilité est identique à celui décrit dans l’article de prise en main pour Linux ou Windows.

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "myScaleSet",
  "location": "East US 2",
  "apiVersion": "2017-12-01",
  "zones": [
        "1",
        "2",
        "3"
      ]
}

Si vous créez une adresse IP publique ou un équilibreur de charge, spécifiez la propriété "sku": {"name":"Standard"} pour créer des ressources réseau redondantes interzone. Vous devez également créer un groupe de sécurité réseau et les règles associées pour autoriser tout le trafic. Pour plus d’informations, consultez Vue d’ensemble d’Azure Load Balancer Standard et Standard Load Balancer et zones de disponibilité.

Pour obtenir un exemple complet de groupe identique redondant interzone et de ressources réseau, consultez notre exemple de modèle Resource Manager.

Mettre à jour un groupe identique pour ajouter des zones de disponibilité

Vous pouvez modifier une échelle pour développer l’ensemble des zones sur lesquelles répartir des instances de machine virtuelle. Le développement vous permet de tirer parti d’un contrat SLA de disponibilité zonale plus élevé (99,99 %) par rapport au contrat SLA de disponibilité régional (99,95 %). Ou développez votre groupe identique pour tirer parti des nouvelles zones de disponibilité qui n’étaient pas disponibles lors de la création du groupe identique.

Important

La mise à jour des Virtual Machine Scale Sets pour ajouter des zones de disponibilité est actuellement en préversion. Les préversions sont mises à votre disposition à condition que vous acceptez les conditions d’utilisation supplémentaires. Certains aspects de cette fonctionnalité sont susceptibles d’être modifiés avant la mise à disposition générale.

Important

Cette fonctionnalité est destinée aux charges de travail sans état sur Virtual Machine Scale Sets. Les groupes identiques avec des charges de travail avec état ou utilisés avec Service Fabric ou Azure Kubernetes Services ne sont pas pris en charge pour l’expansion zonale.

Cette fonctionnalité peut être utilisée avec l’API version 2023-03-01 ou ultérieure.

Activer votre abonnement pour utiliser la fonctionnalité d’extension zonale

Vous devez vous inscrire à quatre indicateurs de fonctionnalité sur votre abonnement :

az feature register --namespace Microsoft.Compute --name VmssAllowRegionalToZonalMigration
az feature register --namespace Microsoft.Compute --name VmssAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowExpansionOfAvailabilityZones
az feature register --namespace Microsoft.Compute --name VmssFlexAllowRegionalToZonalMigration

Vous pouvez vérifier l’état d’inscription de chaque fonctionnalité en utilisant :

az feature show --namespace Microsoft.Compute --name \<feature-name\>

Développer un groupe identique pour utiliser des zones de disponibilité

Vous pouvez mettre à jour le groupe identique pour effectuer un scale-out d’instances vers une ou plusieurs zones de disponibilité supplémentaires, jusqu’au nombre de zones de disponibilité prises en charge par la région. Pour les régions qui prennent en charge les zones, le nombre minimal de zones est 3.

Important

Lorsque vous étendez le groupe identique vers des zones supplémentaires, les instances d’origine ne sont ni migrées ni modifiées. Lorsque vous effectuez un scale-out, de nouvelles instances sont créées et réparties uniformément entre les zones de disponibilité sélectionnées. Lorsque vous effectuez une mise à l’échelle dans le groupe identique, toutes les instances régionales sont préalablement précédées pour la suppression. Après cela, les instances seront supprimées en fonction de la stratégie de scale-in.

Le développement vers un groupe identique zonal est effectué en 3 étapes :

  1. Préparer l’expansion zonale
  2. Mettre à jour le paramètre zones sur le groupe identique
  3. Ajouter de nouvelles instances zonales et supprimer des instances d’origine

Préparer l’expansion zonale

Avertissement

Cette fonctionnalité vous permet d’ajouter des zones au groupe identique. Vous ne pouvez pas revenir à un groupe identique régional ou supprimer des zones une fois qu’elles ont été ajoutées.

Pour préparer l’expansion zonale :

  • Vérifiez que vous disposez d’un quota suffisant pour la taille de machine virtuelle dans la région sélectionnée pour gérer davantage d’instances.
  • Vérifiez que la taille de machine virtuelle et les types de disque que vous utilisez sont disponibles dans toutes les zones souhaitées. Vous pouvez utiliser l’API SKU des ressources de calcul pour déterminer quelles tailles sont disponibles dans quelles zones
  • Vérifiez que la configuration du groupe identique est valide pour les groupes identiques zonaux :
    • platformFaultDomainCount doit avoir la valeur 1 ou 5. La diffusion fixe avec 2 ou 3 domaines d’erreur n’est pas prise en charge pour les déploiements zonaux.
    • Les réservations de capacité ne sont pas prises en charge pendant l’expansion de zone. Une fois que le groupe identique est entièrement zonal (plus d’instances régionales), vous pouvez ajouter un groupe de réservations de capacité au groupe identique.
    • Les déploiements Azure Dedicated Host ne sont pas pris en charge.

Mettre à jour le paramètre zones sur le groupe identique

Mettez à jour le groupe identique pour modifier le paramètre zones.

  1. Accédez au groupe identique que vous souhaitez mettre à jour
  2. Sous l’onglet Propriétés de la page d’accueil du groupe identique, recherchez la propriété Zone de disponibilité et appuyez sur Modifier
  3. Dans la boîte de dialogue Modifier l’emplacement, sélectionnez la ou les zones souhaitées
  4. Sélectionnez Appliquer

Ajouter de nouvelles instances zonales et supprimer des instances d’origine

Effectuer un scale-out et scale-in manuellement

Mettez à jour la capacité du groupe identique pour ajouter d’autres instances. La nouvelle capacité doit être définie ainsi : capacité d’origine + nombre de nouvelles instances. Par exemple, si votre groupe identique avait 5 instances régionales et que vous souhaitez effectuer un scale-out afin que vous ayez 3 instances dans chacune des 3 zones, vous devez définir la capacité sur 14.

Vous pouvez mettre à jour le paramètre zones et la capacité du groupe identique dans le même modèle ARM ou appel d’API REST.

Lorsque vous êtes convaincu que les nouvelles instances sont prêtes, effectuez un scale-in de votre groupe identique pour supprimer les instances régionales d’origine. Vous pouvez supprimer manuellement les instances régionales spécifiques ou effectuer un scale-in en réduisant la capacité du groupe identique. Lors de la mise à l’échelle via la réduction de la capacité du groupe identique, la plateforme préfère toujours supprimer les instances régionales, puis suivre la mise à l’échelle dans la stratégie.

Automatiser avec des mises à niveau propagées + MaxSurge

Avec Mises à niveau propagées + MaxSurge, de nouvelles instances zonales sont créées et mises à jour avec le dernier modèle de mise à l’échelle par lots. Une fois qu’un lot de nouvelles instances est ajouté au groupe identique et qu’il est signalé comme sain, un lot d’anciennes instances est automatiquement supprimé du groupe identique. Les mises à niveau se poursuivent jusqu’à ce que toutes les instances soient mises à jour.

Important

Les mises à niveau propagées avec MaxSurge sont actuellement en préversion publique. Il est disponible uniquement pour le mode d’orchestration uniforme VMSS.

Problèmes connus et limitations

  • La fonctionnalité est destinée aux charges de travail sans état sur Virtual Machine Scale Sets.

  • Les groupes identiques exécutant Service Fabric ou Azure Kubernetes Service ne sont pas pris en charge.

  • Vous ne pouvez pas supprimer ni remplacer des zones. Vous pouvez uniquement en ajouter

  • Vous ne pouvez pas effectuer la mise à jour à partir d’un groupe identique zonal ou couvrant des zones vers un groupe identique régional.

  • platformFaultDomainCount doit avoir la valeur 1 ou 5. La diffusion fixe avec 2 ou 3 domaines d’erreur n’est pas prise en charge pour les déploiements zonaux.

  • Les réservations de capacité ne sont pas prises en charge pendant l’expansion de zone. Une fois que le groupe identique est entièrement zonal (plus d’instances régionales), vous pouvez ajouter un groupe de réservations de capacité au groupe identique.

  • Les déploiements d’hôtes dédiés Azure ne sont pas pris en charge

Étapes suivantes

Maintenant que vous avez créé un groupe identique dans une zone de disponibilité, vous pouvez apprendre à déployer des applications sur des groupes identiques de machines virtuelles ou à utiliser la mise à l’échelle automatique avec des groupes identiques de machines virtuelles.