Azure 拡張ゾーンで実行されている仮想マシンを Azure リージョンにレプリケートする
この記事では、Azure 拡張ゾーンで実行されている Azure 仮想マシン (VM) を親 Azure リージョンにレプリケート、フェールオーバー、フェールバックする方法について説明します。
重要
拡張ゾーンの Azure Site Recovery 機能はプレビュー状態です。
Azure 拡張ゾーンでのディザスター リカバリー
Site Recovery は、プライマリからセカンダリの場所にワークロードを継続的にレプリケートし、停電時にワークロードを実行し続けることで、ビジネス継続性を確保します。 拡張ゾーンの ASR 機能はプレビュー段階です。
ここでは、プライマリの場所は Azure 拡張ゾーンであり、セカンダリの場所は Azure 拡張ゾーンが接続されている親リージョンです。
重要
- VM の作成中、拡張ゾーンでのレプリケーションはサポートされていません。 VM が作成されたら、VM またはコンテナー ページで有効にすることができます。
- 拡張ゾーン ストレージ アカウントをキャッシュ ストレージ アカウントとして使用する場合は、ブロック BLOB Premium Storage アカウントのみがサポートされます。
- 拡張ゾーン ストレージ アカウントをキャッシュ ストレージ アカウントとして使用する場合は、高チャーンのみがサポートされます。
Azure リージョン ストレージ アカウントがキャッシュ ストレージ アカウントとして使用されている場合は、通常のチャーンと高チャーンの両方がサポートされます。
PowerShell を使用して Azure 拡張ゾーン内の VM のディザスター リカバリーを設定する
PowerShell を使用して Azure 拡張ゾーン内の VM のディザスター リカバリーを設定するための前提条件を次に示します。
前提条件
Azure Az PowerShell モジュールがインストールされていることを確認します。 インストール方法の詳細については、「Azure Az PowerShell モジュールをインストールする」を参照してください。
Azure Az PowerShell の最小バージョンは 4.1.0 である必要があります。 現在のバージョンを確認するには、次のコマンドを使用します。
Get-InstalledModule -Name Az
Linux ディストリビューションのバージョンとカーネルが Azure Site Recovery でサポートされていることを確認します。 詳細については、サポート マトリックスに関するページをご覧ください。
Azure 拡張ゾーンで実行されている仮想マシンを Azure リージョンにレプリケートする
Azure 拡張ゾーンで実行されている VM を Azure リージョンにレプリケートするには、次の手順に従います。
Note
この例では、プライマリの場所は Azure 拡張ゾーンであり、セカンダリ/回復の場所は Azure 拡張ゾーンのリージョンです。
Azure アカウントにサインインします。
Connect-AzAccount
適切なサブスクリプションを選択します。
$subscription = Get-AzSubscription -SubscriptionName "<SubscriptionName>" Set-AzContext $subscription.Id
レプリケートする予定の仮想マシンの詳細を取得します。
$VM = Get-AzVM -ResourceGroupName "<ResourceGroupName>" -Name "<VMName>" Write-Output $VM
セカンダリ Azure リージョンの Recovery Services コンテナーのリソース グループを作成します。
New-AzResourceGroup -Name "edgezonerecoveryrg" -Location "<AzureRegion>"
セカンダリ リージョンに新しい Recovery Services コンテナーを作成します。
$vault = New-AzRecoveryServicesVault -Name "EdgeZoneRecoveryVault" - ResourceGroupName "edgezonerecovery" -Location "\<EdgeZoneRegion\>" Write-Output $vault
コンテナーのコンテキストを設定します。
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
プライマリ Site Recovery ファブリックを作成します。
$TempASRJob = New-AzRecoveryServicesAsrFabric -Azure -Location “<AzureRegion>” - Name "EdgeZoneFabric"
ジョブの状態を追跡して完了を確認します。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){
ジョブが完了していない場合は、ジョブの状態をもう一度確認する前に 10 秒間スリープ状態にします。
sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
正常に完了した場合、ジョブの状態は Succeeded である必要があります。
Write-Output $TempASRJob.State $PrimaryFabric = Get-AzRecoveryServicesAsrFabric -Name "EdgeZoneFabric"
プライマリ ファブリックを使用して、プライマリ保護コンテナーと復旧保護コンテナーの両方を作成します。
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainer -InputObject $PrimaryFabric -Name "EdgeZoneProtectionContainer"
ジョブの状態を追跡して完了を確認します。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob } Write-Output $TempASRJob.State
プライマリと復旧の両方の保護コンテナーは、プライマリ リージョン (プライマリ ファブリック内) に作成されます。
$PrimaryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $primaryFabric -Name "EdgeZoneProtectionContainer" $RecoveryProtectionContainer = Get-AzRecoveryServicesAsrProtectionContainer -Fabric $primaryFabric -Name "EdgeZoneProtectionContainer-t"
レプリケーション ポリシーを作成します。
$TempASRJob = New-AzRecoveryServicesAsrPolicy -AzureToAzure -Name "ReplicationPolicy" -RecoveryPointRetentionInHours 24 - ApplicationConsistentSnapshotFrequencyInHours 4
ジョブの状態を追跡して完了を確認します。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
正常に完了した場合、ジョブの状態は Succeeded である必要があります。
Write-Output $TempASRJob.State $ReplicationPolicy = Get-AzRecoveryServicesAsrPolicy -Name "ReplicationPolicy"
レプリケーション ポリシーを使って、プライマリ コンテナーと復旧保護コンテナー間に保護コンテナー マッピングを作成します。
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "PrimaryToRecovery" -Policy $ReplicationPolicy -PrimaryProtectionContainer $PrimaryProtectionContainer -RecoveryProtectionContainer $RecoveryProtectionContainer
ジョブの状態を追跡して完了を確認します。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
正常に完了した場合、ジョブの状態は Succeeded である必要があります。
Write-Output $TempASRJob.State $EdgeZoneToAzurePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $PrimaryProtectionContainer -Name "PrimaryToRecovery"
レプリケーション ポリシーを使って、復旧とプライマリ保護コンテナー間にフェールバック用の保護コンテナー マッピングを作成します。
$TempASRJob = New-AzRecoveryServicesAsrProtectionContainerMapping -Name "RecoveryToPrimary" -Policy $ReplicationPolicy -PrimaryProtectionContainer $RecoveryProtectionContainer -RecoveryProtectionContainer $PrimaryProtectionContainer
ジョブの状態を追跡して完了を確認します。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
正常に完了した場合、ジョブの状態は Succeeded である必要があります。
Write-Output $TempASRJob.State $AzureToEdgeZonePCMapping = Get-AzRecoveryServicesAsrProtectionContainerMapping - ProtectionContainer $RecoveryProtectionContainer -Name "RecoveryToPrimary"
プライマリ リージョンにレプリケーション ログ用のキャッシュ ストレージ アカウントを作成します。 キャッシュ ストレージ アカウントが、プライマリ リージョンに作成されます。
$CacheStorageAccount = New-AzStorageAccount -Name "cachestorage" -ResourceGroupName "<primary ResourceGroupName>" -Location '<AzureRegion>' -SkuName Standard_LRS - Kind Storage
ターゲットの場所に仮想ネットワークを作成することを確認します。 復旧リージョンに復旧ネットワークを作成します。
$recoveryVnet = New-AzVirtualNetwork -Name "recoveryvnet" -ResourceGroupName "recoveryrg" -Location '<AzureRegion>' -AddressPrefix "10.0.0.0/16" Add-AzVirtualNetworkSubnetConfig -Name "defaultsubnetconf" -VirtualNetwork $recoveryVnet -AddressPrefix "10.0.0.0/24" | Set-AzVirtualNetwork $recoveryNetwork = $recoveryVnet.Id
マネージド ディスクを使用して Azure 拡張ゾーン仮想マシンをレプリケートするには、次の PowerShell コマンドレットを使用します。 この手順は、完了するまでに約 20 分かかる場合があります。
フェールオーバー時に仮想マシンを作成する必要があるリソース グループを取得します。
$RecoveryRG = Get-AzResourceGroup -Name "edgezonerecoveryrg" -Location " <AzureRegion>"
VM を取得し、コンテンツを表示します。
$vm = Get-AzVM -Name $vmName -ResourceGroupName $primaryResourceGroupName
レプリケートする必要がある VM の各ディスクのレプリケーション プロパティを指定します (ディスク レプリケーション構成の作成)。
#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
データ ディスク
VM にデータ ディスクがある場合は、次のコマンドを使用してディスク構成を作成します。 そうでない場合は、このセクションをスキップしてもかまいません。
$datadiskId
から$DataDisk1ReplicationConfig $datadiskId = $vm.StorageProfile.OSDisk.ManagedDisk.Id
。あるいは、
$RecoveryReplicaDiskAccountType = "Premium_LRS" $RecoveryTargetDiskAccountType = "Premium_LRS" $RecoveryRGId = $RecoveryRG.ResourceId $DataDisk1ReplicationConfig = New-AzRecoveryServicesAsrAzureToAzureDiskReplicationConfig -ManagedDisk -LogStorageAccountId $CacheStorageAccount.Id ` -DiskId $OSdiskId -RecoveryResourceGroupId $RecoveryRGId - RecoveryReplicaDiskAccountType $RecoveryReplicaDiskAccountType ` -RecoveryTargetDiskAccountType $RecoveryTargetDiskAccountType
レプリケーションで保護された項目を作成して、レプリケーションを開始します。 レプリケーションで保護された項目の名前に GUID を使用して、名前の一意性を確保します。 可用性ゾーンに復旧しない場合は、パラメーター
-RecoveryAvailabilityZone
を指定しないでください。$TempASRJob = New-AzRecoveryServicesAsrReplicationProtectedItem -AzureToAzure -AzureVmId $VM.Id -Name $vm.Name -ProtectionContainerMapping $EdgeZoneToAzurePCMapping - AzureToAzureDiskReplicationConfiguration $DataDisk1ReplicationConfig - RecoveryResourceGroupId $RecoveryRGId -RecoveryAvailabilityZone “1” - RecoveryAzureNetworkId $recoveryVnet.Id -RecoveryAzureSubnetName “defaultsubnetconf”
ジョブの状態を追跡して完了を確認します。
while (($TempASRJob.State -eq "InProgress") -or ($TempASRJob.State -eq "NotStarted")){ sleep 10; $TempASRJob = Get-AzRecoveryServicesAsrJob -Job $TempASRJob }
ジョブが正常に完了したかどうかを確認します。 正常に完了したジョブの更新されたジョブの状態は Succeeded である必要があります。
Write-Output $TempASRJob.State
レプリケーションを開始する操作が成功すると、仮想マシンのデータが復旧リージョンにレプリケートされます。
当初、レプリケーション プロセスの開始時に、復旧リージョン内で仮想マシンのレプリケートする側のディスクのコピーが作成されます。 このフェーズは、初期レプリケーション フェーズと呼ばれます。 この手順の実行時間は約 20 分です。 [レプリケートされた項目] の [コンテナー] ブレードで、レプリケーションの状態を確認します。
レプリケーションが完了すると、コンテナーのレプリケーション項目は次のように表示されます。
仮想マシンは保護されていて、テスト フェールオーバーの操作を実行できるようになりました。 初期レプリケーションの完了後、仮想マシンを表すレプリケートされた項目のレプリケーション状態は、保護された状態に移行します。
それに対応するレプリケーションの保護された項目の詳細を取得することによって、仮想マシンのレプリケーション状態とレプリケーション正常性を監視します。
$PE = Get-AzRecoveryServicesAsrReplicationProtectedItem -ProtectionContainer $PrimaryProtectionContainer | Select FriendlyName, ProtectionState, ReplicationHealth $PE
ProtectionState に [保護済み] と表示されている場合は、フェールオーバーのテストに進む準備が整っています。
テスト フェールオーバーを実行、検証、クリーンアップします。 テスト フェールオーバーはスキップできます。 ただし、テスト フェールオーバーを実行して、セカンダリ リージョンが期待どおりに起動することを確認することをお勧めします。
テスト フェールオーバー用に別のネットワークを作成します (DR ネットワークに接続されていません)。
$TFOVnet = New-AzVirtualNetwork -Name "TFOvnet" -ResourceGroupName "edgezonerecoveryrg" -Location '<AzureRegion>' -AddressPrefix "10.3.0.0/26" Add-AzVirtualNetworkSubnetConfig -Name "default" -VirtualNetwork $TFOVnet -AddressPrefix "10.3.0.0/26" | Set-AzVirtualNetwork $TFONetwork= $TFOVnet.Id
テスト フェールオーバーを実行します。
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $TFOJob = Start-AzRecoveryServicesAsrTestFailoverJob -ReplicationProtectedItem $ReplicationProtectedItem -AzureVMNetworkId $TFONetwork -Direction PrimaryToRecovery
ジョブが完了するまで待ちます。
while (($TFOJob.State -eq "InProgress") -or ($TFOJob.State -eq "NotStarted")){ sleep 10; $TFOJob = Get-AzRecoveryServicesAsrJob -Job $TFOJob }
テスト フェールオーバーが完了するのを待ちます。
Get-AzRecoveryServicesAsrJob -Job $TFOJob
Note
また、ポータルに移動してコンテナーを選択し、[Site Recovery ジョブ] を選択して、ジョブの進行状況を確認することもできます。
テスト フェールオーバーのジョブが正常に完了したら、テスト フェールオーバーが行われた仮想マシンに接続し、テスト フェールオーバーを検証できます。 テスト フェールオーバーを行った仮想マシンでテストが完了したら、テスト フェールオーバー操作のクリーンアップを開始して、テスト コピーをクリーンアップします。 この操作により、テスト フェールオーバーによって作成された仮想マシンのテスト コピーが削除されます。 場所、ネットワーク設定、データの破損なし、ターゲット VM でデータの損失なしなど、すべてのターゲット設定がテスト フェールオーバー VM で正しいことを確認します。 これで、テスト フェールオーバーを削除し、フェールオーバーを開始できます。
$Job_TFOCleanup = Start-AzRecoveryServicesAsrTestFailoverCleanupJob - ReplicationProtectedItem $ReplicationProtectedItem Get-AzRecoveryServicesAsrJob -Job $Job_TFOCleanup | Select State
次の手順は、仮想マシンをフェールオーバーすることです。 この手順では、復旧リージョンでレプリケートされたディスクを使用して VM を作成します。
$ReplicationProtectedItem = Get-AzRecoveryServicesAsrReplicationProtectedItem - FriendlyName "<VMName>" -ProtectionContainer $PrimaryProtectionContainer $RecoveryPoints = Get-AzRecoveryServicesAsrRecoveryPoint -ReplicationProtectedItem $ReplicationProtectedItem
返される復旧ポイントの一覧は、時系列で並べ替えられない場合があります。 最初にこれらを並べ替えて、仮想マシンの最も古い復旧ポイントまたは最新の復旧ポイントを見つける必要があります。
"{0} {1}" -f $RecoveryPoints[0].RecoveryPointType, $RecoveryPoints[- 1].RecoveryPointTime
フェールオーバー ジョブを開始します。
$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
フェールオーバー ジョブが正常に完了したら、フェールオーバーをコミットできます。
$CommitFailoverJob = Start-AzRecoveryServicesAsrCommitFailoverJob - ReplicationProtectedItem $ReplicationProtectedItem
フェールオーバーのコミット ジョブが完了するまで待ちます。
while (($CommitFailoverJob.State -eq "InProgress") -or ($CommitFailoverJob.State -eq "NotStarted")){ sleep 10; $CommitFailoverJob = Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJob } Get-AzRecoveryServicesAsrJob -Job $CommitFailoverJOb
フェールオーバー後、元のリージョンに戻る準備ができたら、
Update-AzRecoveryServicesAsrProtectionDirection
コマンドレットを使用して、レプリケーションの保護された項目のレプリケーションの反転を開始します。復旧リージョンにレプリケーション ログ用のキャッシュ ストレージ アカウントを作成します。
$EdgeZoneCacheStorageAccount = New-AzStorageAccount -Name "cachestorageedgezone" - ResourceGroupName "<ResourceGroupName>" -Location '<AzureRegion>' -SkuName Standard_LRS -Kind Storage
復旧保護コンテナー、Azure 拡張ゾーンのリージョンの新しいキャッシュ ストレージ アカウント、ソース リージョン VM リソース グループを使用します。
$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
この手順には約 20 分かかり、状態は [進行中] から [成功] に移ります。
レプリケーションを無効にする。
Remove-AzRecoveryServicesAsrReplicationProtectedItem -ReplicationProtectedItem $ReplicationProtectedItem
環境をクリーンします。 この手順は省略可能であり、リソース グループを削除するために使用できます。
Remove-AzResourceGroup -Name $Name -Force
次のステップ
- Azure Site Recovery PowerShell リファレンスを参照して、PowerShell を使用して復旧計画の作成、フェールオーバー、フェールバックを実行する方法について説明します。