Replicación de máquinas virtuales que se ejecutan en un MEC público de Azure en una región de Azure
Importante
La funcionalidad de Azure Site Recovery para MEC público está en estado de versión preliminar.
En este artículo se describe cómo replicar, conmutar por error y conmutar por recuperación máquinas virtuales (VM) de Azure que ejecutan un MEC público de Azure en la región de Azure principal en la que el MEC público de Azure es una extensión.
Recuperación ante desastres en MEC público de Azure
Site Recovery garantiza la continuidad empresarial al mantener las cargas de trabajo en ejecución durante las interrupciones mediante la replicación continua de la carga de trabajo desde la ubicación principal a la secundaria. La función de ASR para MEC está en versión preliminar.
Aquí la ubicación principal es un MEC público de Azure y la ubicación secundaria es la región primaria a la que está conectado el MEC público de Azure.
Configuración de la recuperación ante desastres para máquinas virtuales en un MEC público de Azure mediante PowerShell
Prerrequisitos
Asegúrese de que el módulo Azure Az de PowerShell está instalado. Para obtener información sobre cómo realizar la instalación, vea Instalación del módulo Azure Az PowerShell.
La versión mínima de Azure Az PowerShell debe ser 4.1.0. Use el comando siguiente para ver la versión actual:
Get-InstalledModule -Name Az
Asegúrese de que Azure Site Recovery admite el kernel y la versión de distribución de Linux. Para obtener más información, consulte la matriz de compatibilidad.
Replicación de máquinas virtuales que se ejecutan en un MEC público de Azure en una región de Azure
Para replicar máquinas virtuales que se ejecutan en un MEC público de Azure en una región de Azure, siga estos pasos:
Nota
Para este ejemplo, la ubicación principal es un MEC público de Azure y la ubicación secundaria o de recuperación es la región del MEC público de Azure.
Inicie sesión en la cuenta de Azure.
Connect-AzAccount
Seleccione la suscripción correcta.
$subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" Set-AzContext $subscription.Id
Obtenga los detalles de la máquina virtual que quiere replicar.
$VM = Get-AzVM -ResourceGroupName "<ResourceGroupName>" -Name "<VMName>" Write-Output $VM
Cree un grupo de recursos para el almacén de Recovery Services en la región secundaria de Azure.
New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<EdgeZoneRegion>"
Cree un almacén de Recovery Services en la región secundaria.
$vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" - ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>" Write-Output $vault
Establezca el contexto de almacén.
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
Cree el tejido principal de recuperación del sitio.
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<EdgeZoneRegion>” - Name "EdgeZoneFabric"
Realice un seguimiento del estado del trabajo para comprobar si ha finalizado.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
Si el trabajo no se ha completado, suspéndalo durante 10 segundos antes de volver a comprobar su estado.
sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Una vez se haya completado correctamente, el estado del trabajo debe ser Correcto.
Write-Output $TempASRJob.State $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
Use el tejido principal para crear contenedores de protección principales y de recuperación.
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject $PrimaryFabric -Name "EdgeZoneProtectionContainer"
Realice un seguimiento del estado del trabajo para comprobar si ha finalizado.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob } Write-Output $TempASRJob.State
Los contenedores de protección principales y de recuperación se crean en la región primaria (dentro del tejido principal).
$PrimaryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $primaryFabric -Name "EdgeZoneProtectionContainer" $RecoveryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $primaryFabric -Name "EdgeZoneProtectionContainer-t"
Crear una directiva de replicación.
$TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name "ReplicationPolicy" -RecoveryPointRetentionInHours 24 - ApplicationConsistentSnapshotFrequencyInHours 4
Realice un seguimiento del estado del trabajo para comprobar si ha finalizado.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Una vez se haya completado correctamente, el estado del trabajo debe ser Correcto.
Write-Output $TempASRJob.State $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
Cree una asignación de contenedor de protección entre el contenedor de protección principal y el de recuperación con la directiva de replicación.
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "PrimaryToRecovery" -Policy $ReplicationPolicy -PrimaryProtectionContainer $PrimaryProtectionContainer -RecoveryProtectionContainer $RecoveryProtectionContainer
Realice un seguimiento del estado del trabajo para comprobar si ha finalizado.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Una vez se haya completado correctamente, el estado del trabajo debe ser Correcto.
Write-Output $TempASRJob.State $EdgeZoneToAzurePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $PrimaryProtectionContainer -Name "PrimaryToRecovery"
Cree una asignación de contenedor de protección para la conmutación por recuperación entre el contenedor de protección de recuperación y el principal con la directiva de replicación.
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "RecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer $RecoveryProtectionContainer -RecoveryProtectionContainer $PrimaryProtectionContainer
Realice un seguimiento del estado del trabajo para comprobar si ha finalizado.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Una vez se haya completado correctamente, el estado del trabajo debe ser Correcto.
Write-Output $TempASRJob.State $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
Cree una cuenta de almacenamiento en caché para los registros de replicación en la región primaria. La cuenta de almacenamiento en caché se crea en la región primaria.
$CacheStorageAccount = New-AzStorageAccount -Name "cachestorage" -ResourceGroupName "<primary ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName Standard_LRS - Kind Storage
Asegúrese de crear una red virtual en la ubicación de destino. Cree una red de recuperación en la región de recuperación.
$recoveryVnet = New-AzVirtualNetwork -Name "recoveryvnet" -ResourceGroupName "recoveryrg" -Location '<EdgeZoneRegion>' -AddressPrefix "10.0.0.0/16" Add-AzVirtualNetworkSubnetConfig -Name "defaultsubnetconf" -VirtualNetwork $recoveryVnet -AddressPrefix "10.0.0.0/24" | Set-AzVirtualNetwork $recoveryNetwork = $recoveryVnet.Id
Use el cmdlet de PowerShell siguiente para replicar una máquina virtual de Azure de un MEC público de Azure con discos administrados. Este paso puede tardar 20 minutos en completarse.
Obtenga el grupo de recursos en el que se debe crear la máquina virtual cuando se conmuta por error.
$RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location " <EdgeZoneRegion>"
Obtenga la máquina virtual y muestre el contenido.
$vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
Especifique las propiedades de replicación para cada disco de la máquina virtual que se debe replicar (cree la configuración de replicación del disco).
#OsDisk $OSdiskId = $vm.StorageProfile.OsDisk.ManagedDisk.Id $RecoveryOSDiskAccountType = $vm.StorageProfile.OsDisk.ManagedDisk.StorageAccountType $RecoveryReplicaDiskAccountType = $vm.StorageProfile.OsDisk.ManagedDisk.StorageAccountType $OSDiskReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig - ManagedDisk -LogStorageAccountId $CacheStorageAccount.Id ` -DiskId $OSdiskId -RecoveryResourceGroupId $RecoveryRG.ResourceId - RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType ` -RecoveryTargetDiskAccountType $RecoveryOSDiskAccountType
Disco de datos
Si la máquina virtual tiene un disco de datos, use el siguiente comando para crear la configuración del disco. En caso contrario, puede omitir esta sección. De
$datadiskId
a$DataDisk1ReplicationConfig $datadiskId = $vm.StorageProfile.OSDisk.ManagedDisk.Id
.Como alternativa,
$RecoveryReplicaDiskAccountType = "Premium_LRS" $RecoveryTargetDiskAccountType = "Premium_LRS" $RecoveryRGId = $RecoveryRG.ResourceId $DataDisk1ReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -ManagedDisk -LogStorageAccountId $CacheStorageAccount.Id ` -DiskId $OSdiskId -RecoveryResourceGroupId $RecoveryRGId - RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType ` -RecoveryTargetDiskAccountType $RecoveryTargetDiskAccountType
Cree un elemento protegido de la replicación para iniciar la replicación. Use un GUID para el nombre del elemento protegido de la replicación para garantizar la unicidad del nombre. Si no va a realizar la recuperación en una zona de disponibilidad, no proporcione el parámetro
-RecoveryAvailabilityZone
.$TempASRJob = New-AzRecoveryServicesAsrReplicationProtectedItem -AzureToAzure -AzureVmId $VM.Id -Name $vm.Name -ProtectionContainerMapping $EdgeZoneToAzurePCMapping - AzureToAzureDiskReplicationConfiguration $DataDisk1ReplicationConfig - RecoveryResourceGroupId $RecoveryRGId -RecoveryAvailabilityZone “1” - RecoveryAzureNetworkId $recoveryVnet.Id -RecoveryAzureSubnetName “defaultsubnetconf”
Realice un seguimiento del estado del trabajo para comprobar si ha finalizado.
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
Compruebe si el trabajo se ha completado correctamente. El estado actualizado de un trabajo completado correctamente debe ser Correcto.
Write-Output $TempASRJob.State
Una vez que la operación para iniciar la replicación se realiza correctamente, los datos de la máquina virtual se replican en la región de recuperación.
Al principio, cuando el proceso de replicación comienza, crea una copia de los discos de replicación de la máquina virtual en la región de recuperación. Esta fase se conoce como fase de replicación inicial. Este paso tarda aproximadamente 20 minutos. Consulte el estado de la replicación en la hoja Almacén en Elementos replicados.
Una vez completada la replicación, los elementos de replicación del almacén se mostrarán como se indica a continuación:
Ahora, la máquina virtual está protegida y se puede realizar una operación de conmutación por error de prueba. El estado de replicación del elemento replicado que representa la máquina virtual pasa al estado protegido después de que se complete la replicación inicial.
Para supervisar el estado y el mantenimiento de la replicación en la máquina virtual, puede obtener los detalles del elemento protegido de la replicación que le corresponden:
$PE = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $PrimaryProtectionContainer | Select FriendlyName, ProtectionState, ReplicationHealth $PE
Si ve Protegido en Estado de protección, significa que puede continuar con la conmutación por error de prueba.
Realice, valide y limpie una conmutación por error de prueba. Puede omitir la conmutación por error de prueba. Sin embargo, se recomienda ejecutar la conmutación por error de prueba para asegurarse de que la región secundaria aparezca según lo previsto.
Cree una red independiente para la conmutación por error de prueba (no conectada a mi red de recuperación ante desastres).
$TFOVnet = New-AzVirtualNetwork -Name "TFOvnet" -ResourceGroupName "edgezonerecoveryrg" -Location '<EdgeZoneRegion>' -AddressPrefix "10.3.0.0/26" Add-AzVirtualNetworkSubnetConfig -Name "default" -VirtualNetwork $TFOVnet -AddressPrefix "10.3.0.0/26" | Set-AzVirtualNetwork $TFONetwork= $TFOVnet.Id
Realización de una conmutación por error de prueba.
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
Espere hasta que el trabajo finalice.
while (($TFOJob.State -eq "InProgress") -or ($TFOJob.State -eq "NotStarted")){ sleep 10; $TFOJob = Get-AzRecoveryServicesAsrJob -Job $TFOJob }
Espere a que se complete la conmutación por error de prueba.
Get-AzRecoveryServicesAsrJob -Job $TFOJob
Nota
También puede comprobar el progreso del trabajo; para ello, vaya al portal, seleccione el almacén y, a continuación, seleccione los trabajos de Site Recovery.
Después de que el trabajo de conmutación por error de prueba se completa correctamente, puede conectarse a la máquina virtual conmutada por error de prueba y validar esta operación. Después de que la prueba ha finalizado en la máquina virtual conmutada por error de prueba, limpie la copia de prueba mediante una operación de conmutación por error de prueba de limpieza. Esta operación elimina la copia de prueba de la máquina virtual que se creó con la conmutación por error de prueba. Compruebe que toda la configuración del destino es correcta en la máquina virtual de conmutación por error de prueba, incluida la ubicación, la configuración de red, que los datos no estén dañados y que no se han perdido datos en la máquina virtual de destino. Ahora puede eliminar la conmutación por error de prueba e iniciar la conmutación por error real.
$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob - ReplicationProtectedItem $ReplicationProtectedItem Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
El siguiente paso sería conmutar por error la máquina virtual. Este paso creará la máquina virtual mediante los discos replicados en la región de recuperación.
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $RecoveryPoints = Get-AzRecoveryServicesAsrRecoveryPoint -ReplicationProtectedItem $ReplicationProtectedItem
Es posible que la lista de los puntos de recuperación devueltos no aparezca ordenada cronológicamente. Debe ordenarlos primero para buscar los puntos de recuperación más antiguos o más recientes de la máquina virtual.
"{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[- 1].RecoveryPointTime
Inicie el trabajo de conmutación por error.
$Job_Failover = Start-AzRecoveryServicesAsrUnplannedFailoverJob - ReplicationProtectedItem $ReplicationProtectedItem -Direction PrimaryToRecovery - RecoveryPoint $RecoveryPoints[-1] do { $Job_Failover = Get-AzRecoveryServicesAsrJob -Job $Job_Failover; sleep 30; } while (($Job_Failover.State -eq "InProgress") -or ($JobFailover.State -eq "NotStarted")) $Job_Failover.State
Cuando se complete correctamente el trabajo de conmutación por error, puede confirmar la conmutación por error.
$CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob - ReplicationProtectedItem $ReplicationProtectedItem
Espere hasta que finalice el trabajo de conmutación por error de confirmación.
while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State -eq "NotStarted")){ sleep 10; $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob } Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
Después de una conmutación por error, cuando esté listo para volver a la región original, inicie la replicación inversa del elemento protegido de replicación mediante el cmdlet
Update-AzRecoveryServicesAsrProtectionDirection
.Cree una cuenta de almacenamiento en caché para los registros de replicación en la región de recuperación.
$EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" - ResourceGroupName "<ResourceGroupName>" -Location '<EdgeZoneRegion>' -SkuName Standard_LRS -Kind Storage
Use el contenedor de protección de recuperación, la nueva cuenta de almacenamiento en caché en la región del MEC público de Azure y el grupo de recursos de máquina virtual de la región de origen.
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName $vm.name -ProtectionContainer $PrimaryProtectionContainer $sourceVMResourcegroupId = $(Get-AzResourceGroup -Name $vm.ResourceGroupName). ResourceId Update-ASRProtectionDirection -ReplicationProtectedItem $ReplicationProtectedItem ` -AzureToAzure ` -ProtectionContainerMapping $AzureToEdgeZonePCMapping ` -LogStorageAccountId $EdgeZoneCacheStorageAccount.Id ` -RecoveryResourceGroupID $sourceVMResourcegroupId
Este paso tarda aproximadamente 20 minutos, y el estado pasará de En curso a Correcto.
Deshabilitación de la replicación
Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem
Limpie el entorno. Este paso es opcional y se puede usar para quitar el grupo de recursos.
Remove-AzResourceGroup -Name $Name -Force