Skip to content

サイトレプリケーションと災害復旧 (DR)

Cockpit は、アクティブ/パッシブ型の仮想マシン(VM)レプリケーションを通じて、ハイパーバイザーレベルの災害復旧(DR)機能を提供します。これにより、プライマリデータセンター(サイトA)で実行されているワークロードのブロックストレージデバイスを、WAN またはセカンダリネットワーク経由で災害復旧用センダリサイト(サイトB)に非同期で複製することができます。


1. アキテクチャ設計

レプリケーションは Cockpit によって制御されますが、管理プレーンのボトルネックを排除し、ネットワークスループットを最適化するため、物理仮想化ホスト(Vapor デーモン)間で直接 ピアツーピア (p2p) で実行されます。

  • データ転送プロトコル: ファイルおよび増分ブロックのデルタパッチは、TUS(再開可能アップロード)プロトコル(HTTP PATCH リクエスト)を用いて、安全な TLS 接続経由でストリーミングされます。
  • 非同期ストレージスナップショット: 実行中の VM のパフォーマンスに影響を与えずにブロックを転送するため、QCOW2 バッキングチェーンを使用します。

2. レプリケーションの仕組み

レプリケーションはスナップショットレイヤーを使用して、2つのフェーズで実行されます:

フェーズ 1: 初期同期 (フルコピー)

  1. Cockpit がソースホスト(Vapor)にフルバックアップの作成を指示します。
  2. ハイパーバイザーは QEMU Guest Agent を使用して一時的にゲストのファイルシステムを凍結(フリーズ)し、qemu-img convert を実行してディスクボリュームを書き出します。
  3. Cockpit はターゲットホスト(Vapor)にアップロードセッションを登録します。
  4. ソース側の Vapor は TUS プロトコルを使用してベースの .qcow2 ファイルをブロック単位でストリーミング転送します。
  5. ターゲット側の Vapor は初期ディスクイメージを登録します。

フェーズ 2: 増分同期 (RPO ベース)

  1. 設定された目標復旧時点 (RPO) インターバル(例: 15分)ごとに、Cockpit は増分同期をトリガーします。
  2. ソース側の Vapor は QEMU をロックし、新しいオーバーレイファイルを作成して、親スナップショットを参照する qemu-img convert を実行します:
    bash
    qemu-img convert -O qcow2 -o backing_file=parent.qcow2,backing_fmt=qcow2 source.qcow2 delta.qcow2
  3. ソース側の Vapor は、TUS PATCH リクエストを介して delta.qcow2 パッチファイルのみをターゲットホストにストリーミング転送します。
  4. ターゲット側の Vapor は、受信したデルタブロックパッチをレプリケーションバッキングチェーンに書き込み、Point-in-Time (PIT) 復旧ステートを作成します。

3. 設定手順

3.1 サイトペアの連携

ワークロードを登録する前に、Cockpit サイト間を連携させる必要があります:

  1. 移行先(DR)の Cockpit インスタンスにログインし、ローカルストレージの cockpit:auth からアクティブな認証トークンを取得します。
  2. プライマリ Cockpit インスタンスにログインし、Configure(設定)-> Site Pairs(サイトペア) に移動して、Link Site Pair(サイトペアの連携) をクリックします。
  3. リモートサイト名、エンドポイントの API URL(例: https://192.168.122.128:7771/api/v1)、取得したトークン、および(必要な場合のみ)TLS 証明書のパスを入力します。

3.2 仮想マシンの登録

  1. インベントリツリーで対象の VM を選択し、Replication(レプリケーション) タブに移動します。
  2. レプリケーションポリシーを構成します:
    • Target Site (対象サイト): 連携済みの DR サイトを選択します。
    • Target Datastore (対象データストア): DR サイトのストレージプールを選択します。
    • RPO (目標復旧時点): 同期の頻度(15分30分1時間4時間、または 24時間)を選択します。
    • PIT Snapshots (保持世代数): DR サイトに保持する履歴チェックポイントの最大数(複数世代復旧ポイント数)。
    • Data Compression (データ圧縮): 転送中にディスクストリームを圧縮し、WAN 帯域幅を節約・最適化するオプション。
  3. Enable Replication(レプリケーションの有効化) をクリックして、初期同期を開始します。

4. 災害復旧 (DR) ワークフロー

管理者は VM のレプリケーションステータスパネルの ACTIONS ▾ メニューから、復旧および検証手順を開始できます:

4.1 テストフェイルオーバー(DR ドリル)

本番 VM に影響を与えたり、アクティブなレプリケーションを停止したりすることなく、復旧の正常性を検証します:

  1. Test Failover(テストフェイルオーバー) を選択し、Start Drill(ドリルの開始) をクリックします。
  2. バックエンドの処理: Cockpit は最新の PIT スナップショットから複製されたターゲットストレージのクローンを作成し、一時的な VM インスタンスを生成して、ホスト内の隔離されたネットワーク(バブルネットワーク)内で起動します。
  3. コンソールを介して VM のゲスト OS サービスの動作を確認します。
  4. Stop Test Failover(テストフェイルオーバーの停止) を選択して、サンドボックス VM をシャットダウンし、DR ストレージプールから一時クローンを自動削除します。

4.2 計画移行(グレースフル・スイッチオーバー)

計画メンテナンス中に恒久的にワークロードを移行するために使用します:

  1. Planned Migration(計画移行) を選択し、Start Migration(移行の開始) をクリックします。
  2. バックエンドの処理:
    • プライマリ側の VM が正常にシャットダウンされます。
    • 最終的なキャッチアップ同期が実行され、残っている書き込みデータが転送されます。
    • プライマリホストから VM 登録情報が削除され、DR 側のホストに VM が登録されて起動します。

4.3 緊急フェイルオーバー(計画外の停止)

災害によってプライマリデータセンターが完全にオフラインになった場合に使用します:

  1. Emergency Failover(緊急フェイルオーバー) を選択し、赤色の Emergency Failover をクリックします。
  2. バックエンドの処理: Cockpit はプライマリ VM のシャットダウンと最終同期処理をスキップし、最後に正常同期された PIT スナップショットを使用して DR ホスト上に VM を即座に登録し、電源を投入します。