Vault を本番運用するなら、Active/Standby の役割と振る舞いを正確に押さえることが第一歩です。本稿では公式ドキュメントの安定概念に基づき、Ops 目線で要点を詰め込みました。
資格対策としては、Active が唯一の書き込み点であること、Standby のリクエスト取り扱い、ヘルスチェックの使い分け、フェイルオーバー時の挙動と手順化が頻出です。
Vault の HA クラスタでは、常に 1 台が Active(リーダー)となり、書き込みを一手に引き受けます。残りは Standby として待機し、Active の状態を監視しながら追従します。障害時には多数決(クォーラム)で新しい Active が選出されます。
Standby は基本的にクライアント要求を Active へリダイレクト(またはフォワード)します。Enterprise では Performance Standby を追加でき、読み取り系の処理や一部の API をローカルで高速に処理できます(書き込みは依然として Active のみ)。
| ロール | 読み取り/書き込み | API 応答の傾向 | 主な責務 |
|---|---|---|---|
| Active | 読み取り・書き込み可(唯一の書き込み点) | ヘルスは Active として正常応答 | リーダーとして状態変更とレプリケーション制御 |
| Standby | 基本は書き込み不可(要求を中継/転送) | スタンバイ用の応答(LB/監視で弁別可) | Active の監視・追従、リーダー不在時の選挙参加 |
| Performance Standby(Ent) | 読み取り中心(高速応答)。書き込みは Active へ | パフォーマンス用の応答(ローカル読取り) | 読み取りスケールアウト、レイテンシ低減 |
Vault HA(Active/Standby)概念図
代表的な状態確認コマンド(抜粋)
# 現在のリーダー確認
curl -s http://vault.service:8200/v1/sys/leader | jq .
# Raft ピアの確認(Integrated Storage 使用時)
vault operator raft list-peers
# ステップダウン(計画メンテ時など)
vault operator step-downクライアントが Standby に到達した場合、Vault はリダイレクト(または要求の転送)で Active に処理を集約します。アプリが再試行やリダイレクトを扱えない場合は、ロードバランサ側で Active のみを選別するのが定石です。
ヘルスチェックには /v1/sys/health や /v1/sys/leader を使います。特に /v1/sys/health はクエリパラメータで挙動を制御でき、Active のみを UP とみなすか、Standby も許容するかを切り替えられます。スタンバイを許容すると可用性は高まりますが、クライアントが転送/再試行に耐えられる設計が前提です。
ヘルスとリーダー確認の具体例
# Active のみを UP とみなす(例)
curl -sf http://vault.service:8200/v1/sys/health
# Standby を許容したヘルス確認(例)
# standbyok=true 等のパラメータで許容範囲を広げられる
curl -sf "http://vault.service:8200/v1/sys/health?standbyok=true"
# リーダー情報(転送先 URL の把握に有用)
curl -s http://vault.service:8200/v1/sys/leader | jq '{ha_enabled, is_self, leader_address}'Active が応答不能になると、Standby 間で選挙が行われ、新しい Active が選出されます。選出には過半数(クォーラム)の到達が必要です。これはストレージの整合性を守るための前提で、ノード数は奇数配置(3, 5, 7 ...)が推奨されます。
計画メンテナンスでは、手動でリーダーを降格(step-down)し、Standby へ役割を移してから作業すると中断時間を抑えられます。選挙やログ適用の収束時間はネットワーク遅延や負荷に左右されるため、SLO を満たすように監視と待機手順を標準化しましょう。
フェイルオーバー運用に使う代表コマンド
# 計画フェイルオーバー(リーダー降格)
vault operator step-down
# Raft ピアの健全性(到達性/投票権の確認に)
vault operator raft list-peers
# 最新ログ適用状況(例: 監視/点検での参照)
vault operator raft snapshot save /tmp/vault.snap現行の推奨は Integrated Storage(Raft)です。外部依存を減らし、自己完結した HA を構成できます。リーダー選出も内蔵の Raft が担い、シンプルな構成で高信頼を実現できます。
一方、既存で Consul を標準化している環境では、storage に Consul を用いる構成も引き続き有効です。ネットワーク設計や障害ドメインの分離方針に合わせて選択します。
Vault サーバ設定例(Raft と Consul の比較)
# Raft(Integrated Storage)例
listener "tcp" {
address = "0.0.0.0:8200"
tls_disable = 1
}
api_addr = "http://vault-node1:8200"
cluster_addr = "http://vault-node1:8201"
storage "raft" {
path = "/opt/vault/data"
# retry_join 等でピア合流を設定可能
# retry_join { leader_api_addr = "http://vault-nodeA:8200" }
}
# Consul 例(既存 Consul を利用する場合)
# storage "consul" {
# address = "consul.service:8500"
# path = "vault/"
# }クライアントがリダイレクトや再試行に未対応なら、LB は Active のみを通す設計が安全です。ヘルスチェックで Standby を除外し、Active が交代したらすぐに新 Active に切り替えるようにします。リクエストフォワーディングを活用する場合は、LB は全ノードを均等配分しても実質的に Active へ集約されます。
ローリングアップグレードは Standby から順に行い、最後に Active を step-down して更新します。各ステップでヘルス・リーダー・機能テストを挟み、SLO/ウィンドウ内に収まることを確認してください。
HAProxy による Active のみ通過させる例(概略)
backend vault
option httpchk GET /v1/sys/health
http-check expect status 200
server node1 vault-node1:8200 check
server node2 vault-node2:8200 check
server node3 vault-node3:8200 check
# 備考: 200 を Active の指標として扱う想定(環境に合わせて調整)書き込みは常に Active のみ。Standby は転送/中継するか、Enterprise の Performance Standby で一部読み取りをさばく、という役割分担をまず暗記してください。DR レプリケーション(プライマリ/セカンダリ)と HA(Active/Standby)は別概念で、出題で混同させるパターンに注意。
ノードは初期化とアンシールを済ませないとクラスタに正常参加できません。自動アンシールの採用、アンシールキーの厳格運用、リーダー降格とアップグレードの標準手順化は、運用・試験の双方で頻出の論点です。
試験準備でよく使うコマンド(ラボ環境)
# 初期化(ラボ用途の例。実運用では閾値設計/自動アンシール推奨)
vault operator init -key-shares=1 -key-threshold=1
# アンシール(複数回実行して閾値に達する)
vault operator unseal
# ステータス確認
vault statusOps
問題 1
アプリケーションはリダイレクトや再試行の実装がなく、Vault への書き込み要求を必ず Active ノードにだけ送る必要があります。ロードバランサの設計として最も適切なのはどれか。
正解: A
クライアントがリダイレクト/再試行に非対応であれば、LB で Active のみを選別するのが安全です。/v1/sys/health を用い、Standby を UP と見なさない判定を行えば、常に Active にだけ書き込み要求を送れます。B は転送に依存するため前提を満たしません。C は故障時の切替ができません。D は DR と HA の混同で不適切です。
Standby と Performance Standby の違いは何ですか?
どちらもリーダーではありませんが、Standby は主に要求を Active へ転送する役割です。Performance Standby(Enterprise)は読み取り系の一部をローカル処理でき、読み取り性能のスケールアウトに使えます。いずれも書き込みは Active のみが受け付けます。
現在の Active ノードを確認するには?
リーダー API を参照します。curl で /v1/sys/leader を叩くと、ha_enabled, is_self, leader_address などが返ります。CLI では vault status でもロールの判別に役立ちます。
ストレージ障害が起きた場合の影響は?
Vault の整合性はストレージに依存します。クォーラムが満たせないと書き込みは停止し、リーダー選出も成立しません。冗長化されたストレージ構成(Raft の奇数ノード配置や Consul の高可用性)と健全性監視を前提に設計してください。
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...