サイトレプリケーションと災害復旧 (DR)
Cockpit は、アクティブ/パッシブ型の仮想マシン(VM)レプリケーションを通じて、ハイパーバイザーレベルの災害復旧(DR)機能を提供します。これにより、プライマリデータセンター(サイトA)で実行されているワークロードのブロックストレージデバイスを、WAN またはセカンダリネットワーク経由で災害復旧用センダリサイト(サイトB)に非同期で複製することができます。
1. アキテクチャ設計
レプリケーションは Cockpit によって制御されますが、管理プレーンのボトルネックを排除し、ネットワークスループットを最適化するため、物理仮想化ホスト(Vapor デーモン)間で直接 ピアツーピア (p2p) で実行されます。
- データ転送プロトコル: ファイルおよび増分ブロックのデルタパッチは、TUS(再開可能アップロード)プロトコル(HTTP
PATCHリクエスト)を用いて、安全な TLS 接続経由でストリーミングされます。 - 非同期ストレージスナップショット: 実行中の VM のパフォーマンスに影響を与えずにブロックを転送するため、QCOW2 バッキングチェーンを使用します。
2. レプリケーションの仕組み
レプリケーションはスナップショットレイヤーを使用して、2つのフェーズで実行されます:
フェーズ 1: 初期同期 (フルコピー)
- Cockpit がソースホスト(Vapor)にフルバックアップの作成を指示します。
- ハイパーバイザーは QEMU Guest Agent を使用して一時的にゲストのファイルシステムを凍結(フリーズ)し、
qemu-img convertを実行してディスクボリュームを書き出します。 - Cockpit はターゲットホスト(Vapor)にアップロードセッションを登録します。
- ソース側の Vapor は TUS プロトコルを使用してベースの
.qcow2ファイルをブロック単位でストリーミング転送します。 - ターゲット側の Vapor は初期ディスクイメージを登録します。
フェーズ 2: 増分同期 (RPO ベース)
- 設定された目標復旧時点 (RPO) インターバル(例: 15分)ごとに、Cockpit は増分同期をトリガーします。
- ソース側の Vapor は QEMU をロックし、新しいオーバーレイファイルを作成して、親スナップショットを参照する
qemu-img convertを実行します:bashqemu-img convert -O qcow2 -o backing_file=parent.qcow2,backing_fmt=qcow2 source.qcow2 delta.qcow2 - ソース側の Vapor は、TUS PATCH リクエストを介して
delta.qcow2パッチファイルのみをターゲットホストにストリーミング転送します。 - ターゲット側の Vapor は、受信したデルタブロックパッチをレプリケーションバッキングチェーンに書き込み、Point-in-Time (PIT) 復旧ステートを作成します。
3. 設定手順
3.1 サイトペアの連携
ワークロードを登録する前に、Cockpit サイト間を連携させる必要があります:
- 移行先(DR)の Cockpit インスタンスにログインし、ローカルストレージの
cockpit:authからアクティブな認証トークンを取得します。 - プライマリ Cockpit インスタンスにログインし、Configure(設定)-> Site Pairs(サイトペア) に移動して、Link Site Pair(サイトペアの連携) をクリックします。
- リモートサイト名、エンドポイントの API URL(例:
https://192.168.122.128:7771/api/v1)、取得したトークン、および(必要な場合のみ)TLS 証明書のパスを入力します。
3.2 仮想マシンの登録
- インベントリツリーで対象の VM を選択し、Replication(レプリケーション) タブに移動します。
- レプリケーションポリシーを構成します:
- Target Site (対象サイト): 連携済みの DR サイトを選択します。
- Target Datastore (対象データストア): DR サイトのストレージプールを選択します。
- RPO (目標復旧時点): 同期の頻度(
15分、30分、1時間、4時間、または24時間)を選択します。 - PIT Snapshots (保持世代数): DR サイトに保持する履歴チェックポイントの最大数(複数世代復旧ポイント数)。
- Data Compression (データ圧縮): 転送中にディスクストリームを圧縮し、WAN 帯域幅を節約・最適化するオプション。
- Enable Replication(レプリケーションの有効化) をクリックして、初期同期を開始します。
4. 災害復旧 (DR) ワークフロー
管理者は VM のレプリケーションステータスパネルの ACTIONS ▾ メニューから、復旧および検証手順を開始できます:
4.1 テストフェイルオーバー(DR ドリル)
本番 VM に影響を与えたり、アクティブなレプリケーションを停止したりすることなく、復旧の正常性を検証します:
- Test Failover(テストフェイルオーバー) を選択し、Start Drill(ドリルの開始) をクリックします。
- バックエンドの処理: Cockpit は最新の PIT スナップショットから複製されたターゲットストレージのクローンを作成し、一時的な VM インスタンスを生成して、ホスト内の隔離されたネットワーク(バブルネットワーク)内で起動します。
- コンソールを介して VM のゲスト OS サービスの動作を確認します。
- Stop Test Failover(テストフェイルオーバーの停止) を選択して、サンドボックス VM をシャットダウンし、DR ストレージプールから一時クローンを自動削除します。
4.2 計画移行(グレースフル・スイッチオーバー)
計画メンテナンス中に恒久的にワークロードを移行するために使用します:
- Planned Migration(計画移行) を選択し、Start Migration(移行の開始) をクリックします。
- バックエンドの処理:
- プライマリ側の VM が正常にシャットダウンされます。
- 最終的なキャッチアップ同期が実行され、残っている書き込みデータが転送されます。
- プライマリホストから VM 登録情報が削除され、DR 側のホストに VM が登録されて起動します。
4.3 緊急フェイルオーバー(計画外の停止)
災害によってプライマリデータセンターが完全にオフラインになった場合に使用します:
- Emergency Failover(緊急フェイルオーバー) を選択し、赤色の Emergency Failover をクリックします。
- バックエンドの処理: Cockpit はプライマリ VM のシャットダウンと最終同期処理をスキップし、最後に正常同期された PIT スナップショットを使用して DR ホスト上に VM を即座に登録し、電源を投入します。