影響を与えずに行う DR テスト
分離されたネットワークへのテスト フェールオーバーを実行して復旧計画をエンドツーエンドで検証し、実際の RTO を測定して、修正が必要な課題を記録します。
「影響を与えずに行う DR テスト」はCoddyKit上の無料Azure Fundamentalsレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAzure Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Azure Fundamentalsコースには全4レッスンが含まれています。
DRテストが不可欠な理由
一度もテストされていない災害復旧計画は、仮説にすぎません。実際の経験から、DR計画では、構成のドリフト、自動化の欠落、古いrunbook、想定を超える起動時間など、テスト環境でしか明らかにならない問題が頻繁に見つかることが分かっています。最も必要なときに計画が機能するという確信を持つには、定期的なDRテストしか方法がありません。
テストフェールオーバー機能
Test FailoverはAzure Site Recoveryに組み込まれた機能で、本番環境を中断せずにセカンダリリージョンへのフェールオーバーをシミュレートできます。テストフェールオーバー中、ASRはセカンダリリージョンの分離された仮想ネットワークに、レプリケートされたVMのコピーを作成します。プライマリリージョンの本番VMは通常どおり稼働し続けるため、実際のユーザーに影響するリスクはありません。
# Trigger a test failover for a recovery plan:
az site-recovery recovery-plan test-failover \
--resource-group myRG \
--vault-name myRecoveryVault \
--name myRecoveryPlan \
--failover-direction PrimaryToRecovery \
--network-id '/subscriptions/.../virtualNetworks/testFailoverVNet'テスト環境の分離
分離されたテストVNetは、本番システムに接続できないようにする必要があります。これにより、テストVMが本番データベースに誤って書き込んだり、実際の顧客にメールを送信したり、決済トランザクションを実行したりすることを防げます。本番VNetとのピアリングやインターネットアクセスを持たない専用のテストフェールオーバーVNetを作成し、DR訓練専用に使用してください。
# Create an isolated test VNet for DR drills:
az network vnet create \
--resource-group drRG \
--name testFailoverVNet \
--address-prefix 10.99.0.0/16 \
--subnet-name testSubnet \
--subnet-prefix 10.99.1.0/24
# NOTE: Do NOT peer this VNet to any production VNetDRテストで検証する内容
DRテストでは、次の基準を検証します。
- 起動時間 — すべてのVMが想定時間内に起動するか
- アプリケーションの起動 — 復旧したデータベースに接続したとき、アプリケーションが正しく初期化されるか
- データの整合性 — 復旧ポイントのデータに一貫性があり、完全であるか
- 実際のRTO — フェールオーバーのトリガーからアプリケーションがリクエストの処理を開始するまでの経過時間を測定する
- Runbookの実行 — すべての自動化スクリプトが正常に完了したか
実際のRTOの測定
テスト中は、テストフェールオーバーをトリガーした瞬間にタイマーを開始します。アプリケーションが正常であることを確認できた時点(ロードバランサーの正常性プローブが200 OKを返した時点)でタイマーを停止します。これが実際のRTOです。目標RTOと比較してください。実際のRTOが目標を超えている場合は、VMの起動の遅さ、データベースの初期化時間の長さ、DNS伝播の遅延などのボトルネックを特定し、対処します。
# During DR test, record timestamps:
# T0: Test failover triggered
# T1: All VMs in group 1 (database) running
# T2: All VMs in group 2 (app tier) running
# T3: All VMs in group 3 (web tier) running
# T4: Health probe returns 200 OK on all instances
# Actual RTO = T4 - T0
# Compare to target RTO, document any gaps復旧ポイントのデータを確認する
テストフェールオーバーが完了したら、復旧したデータベースに接続してデータを検証します。レプリケーションのカットオフ前にコミットされたトランザクションが存在すること、また部分的にコミットされたトランザクションが正しく処理されていること(ロールバックまたは完了)を確認してください。ポイントインタイムリストア(PITR)に対応したデータベースでは、特定のタイムスタンプへの復元をテストし、期待どおりのデータ状態になっていることを確認します。
# Example data verification after test failover:
# 1. Connect to recovered database
# 2. Run: SELECT COUNT(*) FROM orders WHERE created_at > DATEADD(hour, -1, GETUTCDATE())
# 3. Compare count to production database count for the same window
# 4. Check for any orphaned records or constraint violationsテストフェールオーバー後のクリーンアップ
テストが完了したら、セカンダリリージョンにあるテストVM、そのディスク、ネットワークインターフェイスなどのテストフェールオーバーのリソースをクリーンアップする必要があります。Azure Site Recoveryでは、ポータルの'Cleanup test failover'アクションを使用して、すべてのテストリソースを自動的に削除できます。クリーンアップを忘れると、不要なコストが発生し、セカンダリリージョンに古いリソースが残ってしまいます。
# Trigger cleanup after test failover:
az site-recovery recovery-plan test-failover-cleanup \
--resource-group myRG \
--vault-name myRecoveryVault \
--name myRecoveryPlan \
--notes 'Test completed. RTO = 22 minutes. All checks passed.'DRテスト結果の文書化
各DRテストの後に、テスト日と範囲、達成した実際のRTOとRPO、合否を記載した検証項目のチェックリスト、確認された問題や失敗、予定している是正措置を含むテストレポートを作成します。このレポートは、コンプライアンス監査(ISO 27001、SOC 2、HIPAA)や、長期的なDR成熟度の改善状況を追跡するうえで役立ちます。
DRテストの頻度
業界のベストプラクティスやコンプライアンスフレームワークでは、通常、DRテストを最低でも年1回実施することが求められます。ただし、Tier 1ワークロードの多くの組織では、四半期ごと、あるいは毎月テストを実施しています。テスト頻度を高めると、構成のドリフトを早期に発見でき、チームの自信と対応の習熟度も高まります。頻繁なテストの負担を減らすため、テストのセットアップと検証はできる限り自動化してください。
回復性テストのためのAzure Chaos Studio
Azure Chaos Studioは、Azureリソースに制御された障害を注入して、アプリケーションの回復性をテストできるマネージドカオスエンジニアリングサービスです。VMの停止、ゾーン障害の発生、CPUのスロットリング、ネットワーク遅延の注入などを行い、アプリケーションの動作を観察できます。標準的なDR訓練とは異なり、カオスエンジニアリングでは、部分的な障害状態でアプリケーションが適切に縮退するかどうかをテストします。
# Chaos Studio experiment: shut down a VM zone
# 1. Create a chaos experiment in the portal
# 2. Select fault: 'VM Shutdown'
# 3. Target: VMs in Zone 1
# 4. Duration: 10 minutes
# 5. Observe: Does Traffic Manager reroute to Zone 2?
# 6. Check: Application health during and after the faultDRの継続的改善サイクル
DRテストは、継続的改善サイクルの一部として実施すると最も効果的です。計画 → 実行 → 測定 → 是正 → 繰り返し、というサイクルです。各テストの後に見つかった問題に対処し、runbookとドキュメントを更新して、再度テストします。時間の経過とともに、設定したRTO/RPOの目標値と実際の達成値との差を縮め、許容範囲内で毎回テストに合格できる状態を目指します。
クイックチェック
このレッスンで学んだMicrosoft Azure Fundamentals(AZ-900)の概念について理解度を確認します。
レッスンのまとめ
このレッスンでは、テストフェールオーバーによって、分離されたVNetにVMのコピーを作成し、本番環境を中断せずにDRイベントをシミュレートできること、テスト中に実際のRTOを測定してデータの整合性を検証する必要があること、そして各訓練の後にテストリソースをクリーンアップして結果を文書化すべきことを学びました。次は、Azure SQL DatabaseのようなPaaSサービスに特化した災害復旧について説明します。
よくある質問
「影響を与えずに行う DR テスト」レッスンは無料ですか?
はい。「影響を与えずに行う DR テスト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Azure Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Azure Fundamentalsコースには全4レッスンが含まれています。
「影響を与えずに行う DR テスト」で何を学びますか?
分離されたネットワークへのテスト フェールオーバーを実行して復旧計画をエンドツーエンドで検証し、実際の RTO を測定して、修正が必要な課題を記録します。 ブラウザで直接実行するハンズオンコードでAzure Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Azure Fundamentalsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAzure Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「影響を与えずに行う DR テスト」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAzure Fundamentalsレッスンでコードを書いて実行できますか?
はい。すべてのAzure Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- RTO、RPO、復旧ティアの定義
- 復旧計画と自動フェールオーバー
- 影響を与えずに行う DR テスト
- PaaS サービスの DR