レプリケーション
Vault Enterpriseのレプリケーション機能の詳細
最終更新: 2026/4/13
レプリケーション
Enterprise版の機能Performance ReplicationとDR Replicationは、Vault Enterprise版でのみ利用可能な機能です。本機能の詳細やライセンスについては、IBMの営業担当者にお問い合わせください。
レプリケーションとは
Vaultのレプリケーションは、複数のVaultクラスター間でデータを同期する機能です。2種類のレプリケーション方式があり、それぞれ異なる目的で使用されます。
レプリケーションの種類
Performance Replication
- 目的: パフォーマンスとスケーラビリティの向上
- 読み取り: すべてのクラスターで可能
- 書き込み: Primaryクラスターのみ
- 用途: グローバル展開、地域ごとの最適化
DR (Disaster Recovery) Replication
- 目的: 災害対策とビジネス継続性
- 読み取り: Primaryクラスターのみ
- 書き込み: Primaryクラスターのみ
- 用途: バックアップ、災害時のフェイルオーバー
Performance Replication
概要
Performance Replicationは、複数の地域にVaultクラスターを配置し、各地域で読み取りリクエストを処理することで、グローバルなパフォーマンスを向上させます。
アーキテクチャ
┌─────────────────────────────────────────┐
│ Primary Cluster (US) │
│ (Read/Write) │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ Node 1 │ │ Node 2 │ │ Node 3 │ │
│ └────────┘ └────────┘ └────────┘ │
└──────────────────┬──────────────────────┘
│ Replication
┌──────────┴──────────┐
│ │
┌───────▼─────────┐ ┌───────▼─────────┐
│ Secondary │ │ Secondary │
│ Cluster (Asia) │ │ Cluster (EU) │
│ (Read Only) │ │ (Read Only) │
│ ┌────────┐ │ │ ┌────────┐ │
│ │ Node 1 │ │ │ │ Node 1 │ │
│ └────────┘ │ │ └────────┘ │
└─────────────────┘ └─────────────────┘
特徴
データのレプリケーション
- シークレット
- ポリシー
- 認証方法の設定
- シークレットエンジンの設定
レプリケートされないもの
- トークン(各クラスターで独立)
- リース(各クラスターで独立)
- 監査ログ(各クラスターで独立)
設定手順
1. Primaryクラスターの設定
# Performance Replicationの有効化
vault write -f sys/replication/performance/primary/enable
# ステータス確認
vault read sys/replication/performance/status
出力例:
Key Value
--- -----
mode primary
cluster_id 12345678-1234-1234-1234-123456789abc
known_secondaries 0
last_wal 12345
merkle_root abc123def456...
state running
2. Secondaryトークンの生成
# Asia用のSecondaryトークン生成
vault write sys/replication/performance/primary/secondary-token \
id=secondary-asia \
ttl=30m
# EU用のSecondaryトークン生成
vault write sys/replication/performance/primary/secondary-token \
id=secondary-eu \
ttl=30m
出力例:
Key Value
--- -----
wrapping_token hvs.CAESIJ...(長いトークン文字列)
wrapping_accessor abc123...
wrapping_token_ttl 30m
トークンの有効期限Secondaryトークンには有効期限があります。トークン生成後、速やかにSecondaryクラスターの設定を完了してください。
3. Secondaryクラスターの設定
# Secondaryとして有効化
vault write sys/replication/performance/secondary/enable \
token=<wrapping-token>
# ステータス確認
vault read sys/replication/performance/status
出力例:
Key Value
--- -----
mode secondary
cluster_id 12345678-1234-1234-1234-123456789abc
primary_cluster_addr https://vault-primary.example.com:8201
state stream-wals
connection_state ready
last_remote_wal 12345
動作確認
Primaryクラスターでシークレットを作成
# Primaryクラスターで実行
export VAULT_ADDR=https://vault-primary.example.com:8200
vault kv put secret/test message="Hello from Primary"
Secondaryクラスターで読み取り
# Secondaryクラスター(Asia)で実行
export VAULT_ADDR=https://vault-asia.example.com:8200
vault kv get secret/test
# 出力例
Key Value
--- -----
message Hello from Primary
Secondaryクラスターでの書き込み試行
# Secondaryクラスターで書き込みを試行
vault kv put secret/test message="Hello from Secondary"
# エラー: Secondaryクラスターは読み取り専用
Error writing data to secret/data/test: Error making API request.
Code: 403. Errors:
* 1 error occurred:
* permission denied
高度な設定
パスフィルタリング
特定のパスのみをレプリケートします。
# 特定のパスのみをレプリケート
vault write sys/replication/performance/primary/secondary-token \
id=secondary-asia \
paths="secret/data/asia/*,auth/userpass"
Secondaryの一時停止
# Secondaryのレプリケーションを一時停止
vault write -f sys/replication/performance/secondary/disable
# 再開
vault write sys/replication/performance/secondary/enable \
token=<new-wrapping-token>
DR (Disaster Recovery) Replication
概要
DR Replicationは、災害対策のためのレプリケーション機能です。Primaryクラスターの完全なコピーをDR Secondaryクラスターに保持し、災害時にはDR SecondaryをPrimaryに昇格させることができます。
アーキテクチャ
┌─────────────────────────────────────────┐
│ Primary Cluster │
│ (Active - すべての操作) │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ Node 1 │ │ Node 2 │ │ Node 3 │ │
│ └────────┘ └────────┘ └────────┘ │
└──────────────────┬──────────────────────┘
│ DR Replication
│ (すべてのデータ)
┌──────────────────▼──────────────────────┐
│ DR Secondary Cluster │
│ (Standby - 災害時にPromote) │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ Node 1 │ │ Node 2 │ │ Node 3 │ │
│ └────────┘ └────────┘ └────────┘ │
└─────────────────────────────────────────┘
特徴
完全なレプリケーション
- すべてのシークレット
- すべてのポリシー
- すべての認証方法
- すべての設定
- トークン情報
- リース情報
DR Secondaryの状態
- 通常時: 待機状態(読み取り・書き込み不可)
- 災害時: Primaryに昇格可能
設定手順
1. Primaryクラスターの設定
# DR Replicationの有効化
vault write -f sys/replication/dr/primary/enable
# ステータス確認
vault read sys/replication/dr/status
2. DR Secondaryトークンの生成
# DR Secondaryトークンの生成
vault write sys/replication/dr/primary/secondary-token \
id=dr-secondary \
ttl=30m
3. DR Secondaryクラスターの設定
# DR Secondaryとして有効化
vault write sys/replication/dr/secondary/enable \
token=<wrapping-token>
# ステータス確認
vault read sys/replication/dr/status
出力例:
Key Value
--- -----
mode secondary
cluster_id 12345678-1234-1234-1234-123456789abc
primary_cluster_addr https://vault-primary.example.com:8201
state stream-wals
connection_state ready
フェイルオーバー手順
災害発生時、DR SecondaryをPrimaryに昇格させます。
1. DR Secondaryの昇格
# DR SecondaryをPrimaryに昇格
vault write -f sys/replication/dr/secondary/promote
# ステータス確認
vault read sys/replication/dr/status
出力例:
Key Value
--- -----
mode primary
cluster_id 12345678-1234-1234-1234-123456789abc
state running
2. アプリケーションの切り替え
# アプリケーションの接続先を新しいPrimaryに変更
export VAULT_ADDR=https://vault-dr.example.com:8200
# 動作確認
vault status
vault kv get secret/test
3. 元のPrimaryの復旧(オプション)
元のPrimaryが復旧した場合、DR Secondaryとして再設定できます。
# 元のPrimaryクラスターで実行
# 既存のレプリケーション設定を削除
vault write -f sys/replication/dr/primary/demote
# DR Secondaryとして再設定
vault write sys/replication/dr/secondary/enable \
token=<new-wrapping-token>
フェイルバック手順
元のPrimaryに戻す場合の手順です。
# 1. 現在のPrimary(元のDR Secondary)でトークン生成
vault write sys/replication/dr/primary/secondary-token \
id=dr-secondary-original
# 2. 元のPrimaryをDR Secondaryとして設定
vault write sys/replication/dr/secondary/enable \
token=<wrapping-token>
# 3. レプリケーションが完了するまで待機
vault read sys/replication/dr/status
# 4. 現在のPrimaryを降格
vault write -f sys/replication/dr/primary/demote
# 5. 元のPrimaryを昇格
vault write -f sys/replication/dr/secondary/promote
Performance ReplicationとDR Replicationの併用
両方のレプリケーションを同時に使用できます。
アーキテクチャ
┌─────────────────────────────────────────┐
│ Primary Cluster (US) │
│ (Read/Write) │
└──────────┬─────────────────┬────────────┘
│ │
│ Performance │ DR
│ Replication │ Replication
│ │
┌──────────▼─────────┐ ┌──▼─────────────┐
│ Performance │ │ DR Secondary │
│ Secondary (Asia) │ │ (Standby) │
│ (Read Only) │ │ │
└────────────────────┘ └────────────────┘
設定
# Primaryクラスターで両方を有効化
vault write -f sys/replication/performance/primary/enable
vault write -f sys/replication/dr/primary/enable
# Performance Secondaryトークン生成
vault write sys/replication/performance/primary/secondary-token \
id=perf-secondary-asia
# DR Secondaryトークン生成
vault write sys/replication/dr/primary/secondary-token \
id=dr-secondary
監視とメンテナンス
レプリケーションステータスの監視
# Performance Replicationステータス
vault read sys/replication/performance/status
# DR Replicationステータス
vault read sys/replication/dr/status
# 重要な指標
# - state: running(正常)、stream-wals(同期中)
# - connection_state: ready(接続正常)
# - last_remote_wal: 最後に同期したWAL番号
レプリケーション遅延の確認
# Primaryの最新WAL
PRIMARY_WAL=$(vault read -format=json sys/replication/performance/status | jq -r '.data.last_wal')
# Secondaryの最新WAL
SECONDARY_WAL=$(vault read -format=json sys/replication/performance/status | jq -r '.data.last_remote_wal')
# 遅延の計算
echo "Replication lag: $((PRIMARY_WAL - SECONDARY_WAL)) WALs"
Secondaryの管理
# Secondaryの一覧
vault list sys/replication/performance/primary/secondaries
# 特定Secondaryの詳細
vault read sys/replication/performance/primary/secondary/secondary-asia
# Secondaryの削除
vault write -f sys/replication/performance/primary/revoke-secondary \
id=secondary-asia
ベストプラクティス
1. 適切なレプリケーション方式の選択
| シナリオ | 推奨 | 理由 |
|---|---|---|
| グローバル展開 | Performance Replication | 地域ごとの読み取り最適化 |
| 災害対策 | DR Replication | 完全なバックアップ |
| 両方必要 | 併用 | 最大の可用性とパフォーマンス |
2. ネットワーク要件
- 帯域幅: 十分な帯域幅を確保
- レイテンシ: 低レイテンシ接続が望ましい
- 暗号化: TLS/HTTPS通信
3. 監視とアラート
# Prometheus アラート例
- alert: VaultReplicationLag
expr: vault_replication_wal_last_wal - vault_replication_wal_last_remote_wal > 1000
for: 5m
annotations:
summary: "Vault replication lag is high"
- alert: VaultReplicationDisconnected
expr: vault_replication_connection_state != 1
for: 2m
annotations:
summary: "Vault replication connection lost"
4. 定期的なフェイルオーバーテスト
DR Replicationの場合、定期的にフェイルオーバーテストを実施します。
# テスト手順(年1回推奨)
# 1. DR Secondaryを昇格
# 2. アプリケーションの動作確認
# 3. 元のPrimaryに戻す(フェイルバック)
5. ドキュメント化
# レプリケーション構成
## クラスター構成
- Primary: US (vault-us.example.com)
- Performance Secondary: Asia (vault-asia.example.com)
- DR Secondary: EU (vault-dr.example.com)
## フェイルオーバー手順
1. DR Secondaryの昇格
2. DNS切り替え
3. アプリケーション確認
## 連絡先
- Primary管理者: admin-us@example.com
- DR管理者: admin-dr@example.com
トラブルシューティング
レプリケーションが開始しない
問題: Secondaryがstream-wals状態にならない
解決策:
# ネットワーク接続を確認
ping vault-primary.example.com
# ポート8201が開いているか確認
telnet vault-primary.example.com 8201
# ログを確認
sudo journalctl -u vault -f
レプリケーション遅延が大きい
問題: last_remote_walが大きく遅れている
解決策:
# ネットワーク帯域幅を確認
iperf3 -c vault-primary.example.com
# Vaultのパフォーマンスを確認
vault read sys/metrics
# 必要に応じて帯域幅を増強
Secondaryが接続できない
問題: connection_state が ready にならない
解決策:
# TLS証明書を確認
openssl s_client -connect vault-primary.example.com:8201
# トークンの有効期限を確認
vault read sys/replication/performance/status
# 新しいトークンで再設定
vault write sys/replication/performance/secondary/enable \
token=<new-wrapping-token>
次のステップ
レプリケーションの基本を理解したら、次は以下を学びましょう:
- 高可用性構成 - レプリケーションとHAの組み合わせ
- Namespaces - Namespace単位でのレプリケーション
レプリケーションの重要性レプリケーションは、エンタープライズ環境でのグローバル展開と災害対策に不可欠な機能です。適切に設計することで、可用性とパフォーマンスを大幅に向上させることができます。