レプリケーション

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>

次のステップ

レプリケーションの基本を理解したら、次は以下を学びましょう:

レプリケーションの重要性レプリケーションは、エンタープライズ環境でのグローバル展開と災害対策に不可欠な機能です。適切に設計することで、可用性とパフォーマンスを大幅に向上させることができます。
© 2026 IBM Corporation. Licensed under CC BY 4.0.