Déplacer une machine virtuelle dans une zone de disponibilité à l’aide d’Azure PowerShell et de l’interface CLI
Cet article détaille l’utilisation des cmdlets Azure PowerShell et CLI pour déplacer des machines virtuelles à instance unique Azure d’une zone de disponibilité zonale à une zone de disponibilité locale. Une zone de disponibilité est une zone physiquement séparée dans une région Azure. Utilisez les zones de disponibilité pour protéger vos applications et vos données dans l’éventualité peu probable d’une défaillance ou d’une perte d’un centre de données entier.
Pour utiliser une zone de disponibilité, créez votre machine virtuelle dans une région Azure prise en charge.
Prérequis
Vérifiez les exigences suivantes avant de commencer le processus de déplacement :
Condition requise | Description |
---|---|
Autorisations d’abonnement | Veillez à disposer d’un accès Propriétaire sur l’abonnement contenant les ressources que vous souhaitez déplacer. L’identité managée a besoin de ces autorisations : - Autorisation d’écrire ou de créer des ressources dans un abonnement utilisateur, disponible avec le rôle Contributeur. - Autorisation de créer des attributions de rôles. Habituellement disponible avec les rôles Propriétaire ou Administrateur de l’accès utilisateur ou un rôle personnalisé auquel les attributions de rôles Microsoft.Authorization ou une autorisation en écriture ont été attribuées. Cette autorisation n’est pas nécessaire si l’identité managée de la ressource de partage de données est déjà autorisée à accéder au magasin de données Azure. Explorez en détail les rôles Azure. |
Prise en charge des machines virtuelles | Consultez les régions prises en charge. Contrôlez les paramètres de calcul, de stockage et de réseau pris en charge. |
État d’intégrité des machines virtuelles | Les machines virtuelles que vous souhaitez déplacer doivent être dans un état sain avant de tenter le déplacement zonal. Vérifiez que tous les redémarrages en attente et les mises à jour obligatoires sont terminés, que la machine virtuelle fonctionne et qu’elle est dans un état sain, avant de tenter le déplacement zonal de la machine virtuelle. |
Examiner les exigences de PowerShell et de CLI
La plupart des opérations de déplacement des ressources sont les mêmes, que vous utilisiez le portail Azure, PowerShell ou CLI, à quelques exceptions près.
Opération | Portail | PowerShell/CLI |
---|---|---|
Créer une collection de déplacement | Une collection de déplacement (liste de toutes les machines virtuelles régionales que vous déplacez) est créée automatiquement. Les autorisations d’identité requises sont affectées dans le back-end par le portail. | Vous pouvez utiliser des cmdlets PowerShell ou des cmdlets CLI pour : - Affecter une identité managée à la collection - Ajouter des machines virtuelles régionales à la collection. |
Opérations de déplacement de ressources | Validez les étapes et validez les changements dans les paramètres utilisateur. Lancer le déplacement démarre le processus de déplacement et crée une copie de la machine virtuelle source dans la zone cible. Il finalise également le déplacement de la machine virtuelle nouvellement créée dans la zone cible. | Cmdlets PowerShell ou cmdlets CLI pour : - Ajouter des machines virtuelles régionales à la collection - Résoudre les dépendances - Effectuer le déplacement - Valider le déplacement |
Exemples de valeurs
Nous utilisons ces valeurs dans nos exemples de script :
Paramètre | Valeur |
---|---|
Identifiant d’abonnement | subscription-id |
Région de déplacement | USA Est |
Groupe de ressources (contenant les métadonnées de la collection de déplacement) | RegionToZone-DemoMCRG |
Nom de la collection de déplacement | RegionToZone-DemoMC |
Localisation de la collection de déplacement | eastus2euap |
Type d’identité | SystemAssigned |
nom de la machine virtuelle | demoVM-MoveResource |
Type de déplacement | RegionToZone |
Connexion à Azure
Connectez-vous à votre abonnement Azure avec la commande Connect-AzAccount
et suivez les instructions à l’écran.
Connect-AzAccount –Subscription "<subscription-id>"
Configurer la collection de déplacement
L’objet MoveCollection stocke les métadonnées et les informations de configuration relatives aux ressources à déplacer. Pour configurer une collection de déplacement, procédez comme suit :
- Créez un groupe de ressources pour la collection de déplacement.
- Inscrivez le fournisseur de services auprès de l’abonnement de façon à pouvoir créer la ressource MoveCollection.
- Créez l’objet MoveCollection avec une identité managée. Pour que l’objet MoveCollection accède à l’abonnement dans lequel se trouve le service Resource Mover, il a besoin d’une identité managée affectée par le système (anciennement Managed Service Identity (MSI)) et approuvée par l’abonnement.
- Accordez l’accès à l’abonnement Resource Mover pour l’identité managée.
Créer le groupe de ressources
Utilisez la cmdlet suivante afin de créer un groupe de ressources pour les métadonnées de la collection de déplacement et les informations de configuration avec New-AzResourceGroup. Un groupe de ressources est un conteneur logique dans lequel les ressources Azure sont déployées et gérées.
New-AzResourceGroup -Name "RegionToZone-DemoMCRG" -Location "EastUS"
Sortie :
Le résultat montre que le disque géré se trouve dans la même zone de disponibilité que la machine virtuelle :
ResourceGroupName : RegionToZone-DemoMCRG
Location : eastus
ProvisioningState : Succeeded
Tags :
Name Value
======= ========
Created 20230908
ResourceId : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG
Inscrire le fournisseur de ressources
Inscrivez le fournisseur de ressources Microsoft.Migrate de façon à pouvoir créer la ressource MoveCollection, comme suit :
Register-AzResourceProvider -ProviderNamespace Microsoft.Migrate
Attendez que l’inscription s’effectue :
While(((Get-AzResourceProvider -ProviderNamespace Microsoft.Migrate)| where {$_.RegistrationState -eq "Registered" -and $_.ResourceTypes.ResourceTypeName -eq "moveCollections"}|measure).Count -eq 0) { Start-Sleep -Seconds 5 Write-Output "Waiting for registration to complete." }
Créer un objet MoveCollection
Créez un objet MoveCollection et assignez-lui une identité managée, comme suit :
New-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG" -MoveRegion "eastus" -Location "eastus2euap" -IdentityType "SystemAssigned" -MoveType "RegionToZone"
Sortie :
Etag Location Name
---- -------- ----
"3a00c441-0000-3400-0000-64fac1b30000" eastus2euap RegionToZone-DemoMC
Remarque
Pour le déplacement régional à zonal, le paramètre MoveType
doit être défini comme RegionToZone et le paramètre MoveRegion
doit être défini comme emplacement où résident les ressources faisant l’objet d’un déplacement zonal. Vérifiez que les paramètres SourceRegion
et TargetRegion
ne sont pas obligatoires et qu’ils sont définis sur null.
Accorder à l’identité managée un accès
Accordez à l’identité managée un accès à l’abonnement Resource Mover, comme suit : Vous devez être le propriétaire de l’abonnement.
Récupérez les détails de l’identité de l’objet MoveCollection.
$moveCollection = Get-AzResourceMoverMoveCollection -Name "RegionToZone-DemoMC" -ResourceGroupName "RegionToZone-DemoMCRG" $identityPrincipalId = $moveCollection.IdentityPrincipalId
Affectez les rôles requis à l’identité afin qu’Azure Resource Mover puisse accéder à votre abonnement pour faciliter le déplacement des ressources. Passez en revue la liste des autorisations requises pour le déplacement.
New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName Contributor -Scope "/subscriptions/<subscription-id>"" New-AzRoleAssignment -ObjectId $identityPrincipalId -RoleDefinitionName "User Access Administrator" -Scope "/subscriptions/<subscription-id>"
Ajouter des machines virtuelles régionales à la collection de déplacement
Récupérez les ID des ressources sources existantes que vous souhaitez déplacer. Créez l’objet de paramètres de ressource de destination, puis ajoutez les ressources à la collection de déplacement.
Remarque
Les ressources ajoutées à une collection de déplacement doivent figurer dans le même abonnement, mais peuvent se trouver dans des groupes de ressources différents.
Créez l’objet de paramètre de ressource cible comme suit :
$targetResourceSettingsObj = New-Object Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings $targetResourceSettingsObj.ResourceType = "Microsoft.Compute/virtualMachines" $targetResourceSettingsObj.TargetResourceName = "RegionToZone-demoTargetVm" $targetResourceSettingsObj.TargetAvailabilityZone = "2"
Sortie
ResourceType TargetResourceGroupName TargetResourceName TargetAvailabilitySetId TargetAvailabilityZone TargetVMSize UserManagedIdentity ------------ ----------------------- ------------------ ----------------------- ---------------------- ------------ ------------------- Microsoft.Compute/virtualMachines RegionToZone-demoTargetVm 2
Ajout de ressources
Add-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -SourceId "/subscriptions/<Subscription-id>/resourcegroups/PS-demo-RegionToZone-RG/providers/Microsoft.Compute/virtualMachines/RegionToZone-demoSourceVm" -Name "demoVM-MoveResource" -ResourceSetting $targetResourceSettingsObj
Sortie
DependsOn : {} DependsOnOverride : {} ErrorsPropertiesCode : ErrorsPropertiesDetail : ErrorsPropertiesMessage : ErrorsPropertiesTarget : ExistingTargetId : Id : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/Re gionToZone-DemoMC/moveResources/demoVM-MoveResource IsResolveRequired : False JobStatusJobName : JobStatusJobProgress : MoveStatusErrorsPropertiesCode : DependencyComputationPending MoveStatusErrorsPropertiesDetail : {} MoveStatusErrorsPropertiesMessage : The dependency computation is not completed for resource - /subscriptions/<Subscription-id>/resourcegroups/PS-demo-R egionToZone-RG/providers/Microsoft.Compute/virtualMachines/RegionToZone-demoSourceVm'. Possible Causes: Dependency computation is pending for resource. Recommended Action: Validate dependencies to compute the dependencies. MoveStatusErrorsPropertiesTarget : MoveStatusMoveState : MovePending Name : demoVM-MoveResource ProvisioningState : Succeeded ResourceSetting : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings SourceId : /subscriptions/<Subscription-id>/resourcegroups/PS-demo-RegionToZone-RG/providers/Microsoft.Compute/virtualMachines/ RegionToZone-demoSourceVm SourceResourceSetting : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Api20230801.VirtualMachineResourceSettings SystemDataCreatedAt : 9/8/2023 6:48:11 AM SystemDataCreatedBy : xxxxx@microsoft.com SystemDataCreatedByType : User SystemDataLastModifiedAt : 9/8/2023 6:48:11 AM SystemDataLastModifiedBy : xxxxx@microsoft.com SystemDataLastModifiedByType : User TargetId : Type :
Modifier les paramètres
Vous pouvez modifier les paramètres de destination lorsque vous déplacez des machines virtuelles Azure et les ressources associées. Nous vous recommandons de ne modifier les paramètres de destination qu’après avoir validé la collection de déplacement.
Les paramètres que vous pouvez modifier sont :
- Paramètres de la machine virtuelle : Groupe de ressources, Nom de la machine virtuelle, Zone de disponibilité de la machine virtuelle, Référence SKU de la machine virtuelle, Coffre de clés de la machine virtuelle et Jeu de chiffrement de disque.
- Paramètres de la ressource réseau : Pour les interfaces réseau, les réseaux virtuels et les groupes de sécurité réseau/interfaces réseau, vous pouvez :
- Utiliser une ressource réseau existante dans la région de destination.
- Créer une ressource avec un autre nom.
- IP publique/Équilibreur de charge : Référence SKU et Zone
Modifiez les paramètres comme suit :
Récupérez la ressource de déplacement dont vous souhaitez modifier les propriétés. Par exemple, pour récupérer une machine virtuelle, exécutez :
$moveResourceObj = Get-AzResourceMoverMoveResource -MoveCollectionName " RegionToZone-DemoMCRG " -ResourceGroupName " RegionToZone-DemoMC " -Name "PSDemoVM"
Copiez le paramètre de ressource sur un objet de paramètre de ressource cible.
$TargetResourceSettingObj = $moveResourceObj.ResourceSetting
Définissez le paramètre dans l’objet de paramètre de ressource cible. Par exemple, pour modifier le nom de la machine virtuelle de destination :
$TargetResourceSettingObj.TargetResourceName="PSDemoVM-target"
Mettez à jour les paramètres de destination de la ressource de déplacement. Dans cet exemple, nous changeons le nom de la machine virtuelle PSDemoVM en PSDemoVMTarget.
Update-AzResourceMoverMoveResource -ResourceGroupName " RegionToZone-DemoMCRG " -MoveCollectionName " RegionToZone-DemoMC -SourceId "/subscriptions/<Subscription-d>/resourceGroups/PSDemoRM/providers/Microsoft.Compute/virtualMachines/PSDemoVM" -Name "PSDemoVM" -ResourceSetting $TargetResourceSettingObj
Résoudre les erreurs de dépendance
Vérifiez si les machines virtuelles régionales que vous avez ajoutées ont des dépendances vis-à-vis d’autres ressources, puis ajoutez-les en fonction des besoins.
Résolvez les dépendances comme suit :
Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
Sortie (quand des dépendances existent)
AdditionalInfo : Code : Detail : EndTime : EndTime : 9/8/2023 6:52:14 AM Id : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/operations/bc68354b-ec1f-44cb-92ab-fb3b4ad90229 Message : Name : bc68354b-ec1f-44cb-92ab-fb3b4ad90229 Property : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any StartTime : 9/8/2023 6:51:50 AM Status : Succeeded
Pour obtenir la liste des ressources ajoutées à la collection de déplacement :
$list = Get-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" $list.Name
Sortie :
demoVM-MoveResource mr_regiontozone-demosourcevm661_d6f18900-3b87-4fb5-9bdf-12da2f9fb185 mr_regiontozone-demosourcevm-vnet_d8536bf5-2d5f-4778-9650-32d0570bc41a mr_regiontozone-demosourcevm-ip_6af03f1f-eae8-4541-83f5-97a2506cfc3e mr_regiontozone-demosourcevm-nsg_98d68420-d7ff-4e2d-b758-25a6df80fca7 mr_nrms-timkbo3hy3nnmregiontozone-demosourcevm-vnet_f474c880-4823-4ed3-b761-96df6500f6a3
Pour supprimer des ressources de la collection de ressources, suivez ces instructions.
Validations de capacité, quota et référence SKU de Zones de disponibilité
Azure fournit des suggestions lorsque la zone de disponibilité sélectionnée n’a pas la référence SKU de la machine virtuelle ou quand la capacité ou le quota disponible est insuffisant. Voici quelques exemples de ces suggestions et les mesure devant être prises si la référence SKU de machine virtuelle n’est pas disponible.
Référence SKU non disponible
Quand la taille de la machine virtuelle source Standard_DC1ds_v3
n’est pas disponible dans la zone de disponibilité sélectionnée 1
.
Action recommandée : choisissez une autre taille de machine virtuelle dans la même zone de disponibilité ou sélectionnez une autre zone de disponibilité avec une taille de machine virtuelle recommandée correspondante.
Recommandations :
- Référence SKU : Standard_DC1ds_v3, Zones : [ 2 ]
- Référence SKU : Standard_DC2ds_v3, Zones : [ 2 ]
- Référence SKU : Standard_DC4ds_v3, Zones : [ 2 ]
- Référence SKU : Standard_DC1s_v3, Zones : [ 2 ]
- Référence SKU : Standard_D2ds_v5, Zones : [ 2, 3 ]
- Référence SKU : Standard_D2as_v4, Zones : [ 1, 2, 3 ]
- Référence SKU : Standard_D2s_v3, Zones : [ 1, 2, 3 ]
- Référence SKU : Standard_D2as_v5, Zones : [ 1, 2, 3 ]
- Référence SKU : Standard_D2s_v5, Zones : [ 2, 3 ]
Recommandations de capacité
Suggestions de capacité pour la taille Standard_DC1ds_v3
de machine virtuelle de la sélection actuelle dans la zone de disponibilité sélectionnée 1
.
Action recommandée : pour augmenter la probabilité de déploiement réussi, Azure a identifié d’autres zones et tailles de machine virtuelle recommandées. Pour déployer de façon fluide, choisissez une autre taille de machine virtuelle dans la même zone de disponibilité ou sélectionnez une autre zone de disponibilité avec une taille de machine virtuelle recommandée correspondante.
Recommandations :
- Référence SKU : Standard_DC1ds_v3, Zones : [ 2 ]
- Référence SKU : Standard_DC2ds_v3, Zones : [ 2 ]
- Référence SKU : Standard_DC4ds_v3, Zones : [ 2 ]
- Référence SKU : Standard_DC1s_v3, Zones : [ 2 ]
- Référence SKU : Standard_D2ds_v5, Zones : [ 2, 3 ]
- Référence SKU : Standard_D2as_v4, Zones : [ 1, 2, 3 ]
- Référence SKU : Standard_D2s_v3, Zones : [ 1, 2, 3 ]
- Référence SKU : Standard_D2as_v5, Zones : [ 1, 2, 3 ]
- Référence SKU : Standard_D2s_v5, Zones : [ 2, 3 ]
Traiter aux suggestions
Pour répondre aux situations où la référence SKU de machine virtuelle est introuvable ou en cas de problème de capacité, mettez à jour la ressource à déplacer, puis réexécutez pour résoudre. Voici un exemple à titre de référence :
Mettez à jour l’objet de ressource à déplacer de machine virtuelle vers une nouvelle zone ou référence SKU conformément aux suggestions.
$targetResourceSettingsObj.TargetVmSize = "Standard_DC1ds_v3" $targetResourceSettingsObj.TargetAvailabilityZone = "3"
Mettre à jour une ressource à déplacer de machine virtuelle
Add-AzResourceMoverMoveResource -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -SourceId "/subscriptions/<Subscription ID>/resourceGroups/<Resource Group Name>/providers/Microsoft.Compute/virtualMachines/vmtwo" -Name "demoVM-MoveResource2" -ResourceSetting $targetResourceSettingsObj
Réexécuter pour résoudre
Resolve-AzResourceMoverMoveCollectionDependency -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC"
Quota insuffisant
La machine virtuelle sélectionnée ne peut pas être déplacée vers la zone de disponibilité en raison d’un quota insuffisant.
Action recommandée : quota trouvé insuffisant. Reportez-vous au lien et contactez le support.
Lancer le déplacement des ressources VM
Invoke-AzResourceMoverInitiateMove -ResourceGroupName "RegionToZone-DemoMCRG" -MoveCollectionName "RegionToZone-DemoMC" -MoveResource $("demoVM-MoveResource") -MoveResourceInputType "MoveResourceId"
Sortie
AdditionalInfo :
Code :
Detail :
EndTime : 9/8/2023 7:07:58 AM
Id : /subscriptions/<Subscription-id>/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/o
perations/d3e06ac3-a961-4045-8301-aee7f6911160
Message :
Name : d3e06ac3-a961-4045-8301-aee7f6911160
Property : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any
StartTime : 9/8/2023 7:01:31 AM
Status : Succeeded
Validation
Après le déplacement initial, vous devez valider le déplacement ou l’abandonner. La validation termine le déplacement vers la région cible.
Validez le déplacement comme suit :
Invoke-AzResourceMover-VMZonalMoveCommit -ResourceGroupName "RG-MoveCollection-demoRMS" -MoveCollectionName "PS-centralus-westcentralus-demoRMS" -MoveResource $('psdemovm111', 'PSDemoRM-vnet','PSDemoVM-nsg', ‘PSDemoVM’) -MoveResourceInputType "MoveResourceId"
Sortie :
AdditionalInfo :
Code :
Detail :
EndTime : 9/22/2023 5:26:55 AM
Id : /subscriptions/e80eb9fa-c996-4435-aa32-5af6f3d3077c/resourceGroups/RegionToZone-DemoMCRG/providers/Microsoft.Migrate/moveCollections/RegionToZone-DemoMC/operations/35dd1d93-ba70-4dc9-a17f-7d8ba48678d8
Message :
Name : 35dd1d93-ba70-4dc9-a17f-7d8ba48678d8
Property : Microsoft.Azure.PowerShell.Cmdlets.ResourceMover.Models.Any
StartTime : 9/22/2023 5:26:54 AM
Status : Succeeded
Supprimer une ressource
Vous pouvez supprimer une seule ou plusieurs ressources à partir d’un MoveCollection
en utilisant les cmdlets suivantes :
Obtenir la liste des ressources de déplacement ajoutées à la collection de déplacement :
$list = Get-AzResourceMoverMoveResource -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"
Supprimer les ressources de déplacement que vous avez trouvées :
Invoke-AzResourceMoverBulkRemove -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>" -MoveResource $($list.Name)
Supprimer la collection de déplacement :
Remove-AzResourceMoverMoveCollection -ResourceGroupName "<MoveCollectionResourceGroupName>" -MoveCollectionName "<MoveCollectionName>"
Remarque
Si vous observez des problèmes d’autorisation des identités managées, réactivez l’accès aux identités managées en suivant à nouveau ces étapes.
Supprimer les machines virtuelles régionales sources
Après avoir validé le déplacement et vérifié que les ressources fonctionnent comme prévu dans la région cible, vous pouvez supprimer chaque ressource source avec :
Étapes suivantes
Découvrez comment déplacer des machines virtuelles Azure à instance unique d’une configuration régionale vers une configuration zonale à l’aide du portail.