Vault の DR Replication は、災害時に業務を継続させるための非同期・一方向のレプリケーション機能です。平常時はセカンダリは待機し、障害時に昇格してプライマリとして稼働します。
本稿は、公式ドキュメントの安定挙動に基づき、設計の基本、セットアップ手順、フェイルオーバー/フェイルバック、監視と演習、そして DR と Performance の比較を、資格対策と実務の両面から整理します。
Vault の DR レプリケーションは、同一のデータセットを別リージョン/別クラスターへ非同期に複製し、平常時は待機、障害時にセカンダリを昇格してサービスを再開する仕組みです。セカンダリは昇格するまでクライアント要求を処理しません。
Ops 観点で重要なのは、役割(DR Primary/DR Secondary)、昇格・降格の操作、RPO/RTO の考え方、TLS と証明書の前提、そして Performance Replication との違いです。試験ではこれらの概念差分が頻出です。
状態確認の最小コマンド(準備段階)
export VAULT_ADDR=https://primary.example.com:8200
export VAULT_TOKEN=<admin_or_appropriate_token>
# DR ステータスの確認(Primary 側)
vault read sys/replication/dr/status
# サーバ状態の確認
vault status実運用では、リージョンやデータセンターをまたいで DR セカンダリを配置します。ネットワークは双方向に TLS で疎通可能、かつ API アドレスとクラスターアドレスが証明書の SAN と整合している必要があります。
Integrated Storage(Raft)を用いると、外部 K/V ストアに依存せずシンプルに構成できます。クラスタ内の 8201(cluster_addr)での相互通信と、クライアント向け 8200(api_addr)の正設定が肝要です。
DR レプリケーション(リージョン間・Raft)
server.hcl(抜粋・安定パラメータの例)
storage "raft" {
path = "/opt/vault/data"
node_id = "vault-node-1"
}
api_addr = "https://vault-a.example.com:8200"
cluster_addr = "https://vault-a.example.com:8201"
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 0
tls_cert_file = "/opt/vault/tls/tls.crt"
tls_key_file = "/opt/vault/tls/tls.key"
}以下は最小限の手順です。事前に TLS、ポリシー、監査ログ、ストレージ健全性(Raft/Consul)を確認したうえで実施します。二重化された管理者承認フローを用意すると安全です。
セカンダリ有効化トークンは、プライマリで生成し、セカンダリで有効化に使用します。トークンは短期・限定用途として厳重に扱います。
DR レプリケーション有効化コマンド例
# Primary 側
export VAULT_ADDR=https://primary.example.com:8200
export VAULT_TOKEN=<admin_token>
# 1) DR Primary を有効化
vault write -f sys/replication/dr/primary/enable
# 2) Secondary 有効化トークンを生成
DR_TOKEN=$(vault write -field=token -f sys/replication/dr/primary/secondary-token)
# Secondary 側
export VAULT_ADDR=https://secondary.example.com:8200
export VAULT_TOKEN=<admin_token_on_secondary>
# 3) DR Secondary を有効化(primary_api_addr は環境に応じて)
vault write sys/replication/dr/secondary/enable \
token="$DR_TOKEN" \
primary_api_addr="https://primary.example.com:8200"
# 4) ステータス確認(両側で)
vault read sys/replication/dr/status計画フェイルオーバーは、DR セカンダリが最新まで追従していることを確認後、セカンダリを昇格し、トラフィックを切り替えます。緊急フェイルオーバーでも基本は同様ですが、RPO はネットワーク遅延分の損失があり得ます。
フェイルバックは、新たなプライマリから旧プライマリをセカンダリとして再参加させる流れが実務で安全です。単純な“元戻し”ではなく、降格と再参加の手順を踏みます。
フェイルオーバー/フェイルバックの代表コマンド
# 1) 計画フェイルオーバー(Secondary を昇格)
export VAULT_ADDR=https://secondary.example.com:8200
export VAULT_TOKEN=<admin_token_on_secondary>
# 昇格(promote)
vault write -f sys/replication/dr/secondary/promote
# 2) 旧プライマリを降格(demote)して再参加準備
export VAULT_ADDR=https://old-primary.example.com:8200
export VAULT_TOKEN=<admin_token_on_old_primary>
# 降格
yes | vault write -f sys/replication/dr/primary/demote
# 3) 新プライマリでセカンダリ用トークンを再発行し、旧プライマリで更新
export VAULT_ADDR=https://new-primary.example.com:8200
export VAULT_TOKEN=<admin_token_on_new_primary>
NEW_TOKEN=$(vault write -field=token -f sys/replication/dr/primary/secondary-token)
export VAULT_ADDR=https://old-primary.example.com:8200
export VAULT_TOKEN=<admin_token_on_old_primary>
# 新プライマリを指すよう更新(enable ではなく update-primary を使用)
vault write sys/replication/dr/secondary/update-primary \
token="$NEW_TOKEN" \
primary_api_addr="https://new-primary.example.com:8200"
# 4) 双方でステータス確認
vault read sys/replication/dr/status監視は、レプリケーションの健全性(状態、ラグ、接続エラー)と、証明書/時刻同期の健全性が中心です。Prometheus 形式のメトリクス出力を収集し、しきい値でアラート化します。
演習は、計画フェイルオーバー→フェイルバックを定期的に実施し、RTO の実測と手順書の鮮度を保つことが重要です。スナップショット取得は DR の代替ではありませんが、障害解析や最悪時の復旧に有用です。
監視とバックアップの実用スニペット
# DR ステータス(JSON 出力)
vault read -format=json sys/replication/dr/status | jq .
# Prometheus メトリクス(要適切なトークン/ヘッダ設定)
curl -s -H "X-Vault-Token: $VAULT_TOKEN" \
"$VAULT_ADDR/v1/sys/metrics?format=prometheus" | grep replication
# Raft スナップショット(補助バックアップ)
vault operator raft snapshot save /backup/vault-$(date +%Y%m%d%H%M%S).snapDR は災害復旧のための待機系、Performance は読み取りスケールのための分散系です。設計目的が異なるため、クライアントの可用性、書き込み可否、切替操作が根本的に違います。
試験では、セカンダリが平常時にリクエストを処理できるか、どの操作が昇格なのか、といった設問がよく出ます。下表で差分を明確にしておきましょう。
| 項目 | DR Replication | Performance Replication | 単一クラスタ(参考) |
|---|---|---|---|
| 目的 | 災害復旧(リージョン障害対策) | 読み取りスケール/地理的分散 | 可用性確保(単一サイト内) |
| 平常時のクライアント処理 | 不可(待機、昇格までブロック) | 可(主に読み取りを提供) | 可(通常どおり) |
| 書き込み | 不可(昇格後に可) | プライマリへプロキシ | 可 |
| 切替操作 | secondary/promote とルーティング切替 | 不要(トポロジ維持) | 不要 |
| RPO/RTO の傾向 | 非同期ゆえ RPO>0, RTO=昇格+切替 | RPO>0(非同期) | RPO/RTO はサイト内 HA に依存 |
(参考)Performance レプリケーション有効化の最小例
# Primary で Performance Primary を有効化
vault write -f sys/replication/performance/primary/enable
# Secondary 用トークンを生成
P_TOKEN=$(vault write -field=token -f sys/replication/performance/primary/secondary-token)
# 別クラスタで Performance Secondary を有効化
vault write sys/replication/performance/secondary/enable \
token="$P_TOKEN" \
primary_api_addr="https://primary.example.com:8200"Ops
問題 1
Vault Enterprise の DR レプリケーション構成において、計画フェイルオーバーを最小のデータ損失で実施する手順として最も適切なものはどれか。
正解: A
計画フェイルオーバーは、DR セカンダリの追従を確認してから secondary/promote で昇格し、ルーティングを切り替えるのが正道。プライマリを seal して強制停止するのは推奨手順ではなく、RPO/RTO も悪化し得る。DR の無効化や Performance の新規有効化は目的に合致しない。
DR セカンダリは平常時に読み取り専用で使えますか?
いいえ。DR セカンダリは昇格するまで待機であり、クライアント要求は原則処理しません。読み取りスケールが目的なら Performance Replication を検討します。
フェイルバックはどのように行いますか?
新プライマリでセカンダリ用トークンを発行し、旧プライマリを demote 後に sys/replication/dr/secondary/update-primary で新プライマリ配下のセカンダリとして再参加させます。直接“元に戻す”のではなく、昇格/降格の手順を踏むのが安全です。
バックアップ(Raft スナップショット)は DR の代替になりますか?
なりません。DR は低 RTO のサービス継続を目的とし、スナップショットは最悪時の復旧や監査・検証の補助です。両者を併用し、DR で事業継続、スナップショットで追加の安全網を構築します。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Vault のコア概念を最短距離で理解する:Secret / Auth / Policy / Token
HashiCorp Vault Associate レベルで押さえるべきコア概念(Secret Engine、Auth ...
Vault Operations Professional: 上位資格としての範囲を実務目線で押さえる
HashiCorp Vault Operations Professional(Ops Pro)の出題範囲を、Assoc...
Vaultにおけるパスベースのルーティング: マウントとAPI構造を読み解く
HashiCorp Vaultのパスベースのルーティングを、マウント設計とAPIパスの観点から整理。Associateレ...
Vault Tokens の基礎: 認証の起点となる概念
HashiCorp Vault におけるトークンの役割、種類、ライフサイクル、ポリシー連携、設計パターンをAssocia...
Vault のトークン種類を正しく使い分ける: service / batch 実践
HashiCorp Vault Associate 向けの試験対策と実務運用を両立させた、service トークンと b...