Vaultを本番で運用すると、読み取りが圧倒的多数というケースが一般的です。そこで効くのがEnterpriseのPerformance Standby。スタンバイノードが読取系APIを自前で処理し、アクティブノードの負荷を大幅に削減します。
この記事では、Production運用に耐える設計ポイントと、Ops系の資格対策で問われやすい比較・ヘルスチェック・フォワーディング周りの注意点をまとめます。
VaultはHA構成で1台がアクティブ、残りがスタンバイになります。通常スタンバイはリクエストをアクティブへフォワードする役割ですが、EnterpriseではPerformance Standby機能により、読取系の多くをスタンバイ自身が処理可能になります。
これにより、シークレット参照やトークン情報の参照・更新(更新といってもストレージ変更を伴わない性質のもの)が分散され、アクティブのCPU/IOホットスポット化を防げます。書き込み(シークレットの作成・更新・有効化/無効化・ポリシー変更など)は引き続きアクティブが一元処理します。
Performance Standbyは、対象となる読取系エンドポイントを自ノードで処理します。対象外や整合性上ローカル完了できないものは、リクエストフォワーディングでアクティブへ中継します。適切なcluster_addr/TLSが設定されていれば、クライアントはリダイレクトを意識せず1つのVIPに送るだけで成立します。
整合性は、同一ストレージを共有しつつ、必要に応じて無効化・同期を行う設計です。直前に行われた書き込み直後の読み取りなど、タイミング次第では安全側に倒してアクティブへフォワードされることがあります。これは観測されるデータの一貫性を優先するための挙動です。
Performance Standbyのリクエスト経路(単一クラスタ)
似た用語が多いため、Ops視点での使い分けを整理します。単一クラスタ内の読取スケールはPerformance Standby。マルチクラスタでリージョン間レイテンシとスループットを最適化したいならPerformance Replication Secondary(別クラスタ)。スタンダードなスタンバイは基本的にフォワーダです。
DR Replicationは復旧目的であって、通常の読取分散とは目的が異なります。本記事の主眼はあくまでクラスタ内の読取スケール(Performance Standby)です。
| 観点 | Standard Standby | Performance Standby (Ent) | Performance Replication Secondary (Ent) |
|---|---|---|---|
| 対象範囲 | 単一クラスタ内(待機) | 単一クラスタ内(待機+ローカル読取) | 別クラスタ(リージョン/サイト単位) |
| 読取の扱い | 基本はアクティブへフォワード | 対象読取はスタンバイで処理 | セカンダリ側で読取(複製データ) |
| 書き込みの扱い | アクティブで実施 | アクティブで実施(フォワード) | プライマリで実施(レプリケーション) |
| レイテンシ/帯域の狙い | リダイレクト/フォワード軽減 | アクティブ負荷/待ち時間の低減 | 地理的近接で読取を高速化 |
| 主なユースケース | 小〜中規模HA | 読取が非常に多い単一クラスタ | マルチリージョンの読取最適化 |
最重要はリクエストフォワーディングを正しく動かす基盤設定です。各ノードのcluster_addrとTLSを正しく揃え、ノード間で相互到達・証明書検証が成立するようにします。これが欠けると、スタンバイがフォワードできず、クライアントはリダイレクトに巻き込まれます。
LBは単一VIPに全ノード(アクティブ+スタンバイ)をぶら下げる設計が実務で扱いやすいです。ヘルスチェックは/sys/healthにstandbyok=trueとperfstandbyok=trueを付けて、スタンバイやPerformance Standbyも“健全”とみなすのが定石です。書き込みはスタンバイに当たっても内部フォワードされるため、クライアント側での経路分離は必須ではありません。
例: Integrated Storageを使う最小構成(抜粋)
# /etc/vault.d/server.hcl
api_addr = "https://vault.example.com:8200"
cluster_addr = "https://10.0.0.1:8201"
disable_mlock = true
storage "raft" {
path = "/opt/vault/data"
node_id = "vault-1"
}
listener "tcp" {
address = "0.0.0.0:8200"
tls_cert_file = "/etc/vault/tls/server.crt"
tls_key_file = "/etc/vault/tls/server.key"
}
# EnterpriseではPerformance Standbyは既定で有効
# 無効化したい場合のみ:
# disable_performance_standby = true監視では、ノードの役割(active/performance standby)と、リクエストがローカル処理かフォワードかの割合を追いかけます。Prometheus等のテレメトリでエンドポイント別の応答時間分布とフォワード比率を採ると、ボトルネックと効果測定がしやすくなります。
負荷試験は“読取9:書込1”のような実態に近い比率で行い、LBを介した実配線で遅延・スループットを確認します。アクティブ停止のフェイルオーバ試験では、スタンバイ昇格後の暖機(キャッシュ無効化/再収束)による一時的な遅延スパイクも計測対象に入れると良いです。
Performance Standbyは“単一クラスタ内の読取スケール”という一言で要点を思い出せるように。関連機能との境界と、LB/ヘルスチェック/フォワーディングの基本を押さえておくと得点に直結します。
Ops
問題 1
Vault Enterpriseで読取トラフィックが急増し、アクティブノードのCPUが頭打ち。最小限のアーキテクチャ変更で読取スループットを上げたい。最も適切な対応はどれか?
正解: A
単一クラスタ内の読取スケールはPerformance Standbyの領域。LBで全ノードへ分散し、スタンバイも健全と判定する設定により、対象読取は各スタンバイでローカル処理される。DR Replicationは復旧目的で読取分散には不適。残りの選択肢はスループット改善に寄与しないか、ボトルネックを固定化する。
Performance StandbyはOSSでも使えますか?
いいえ。Performance StandbyはVault Enterpriseの機能です。OSSでもスタンバイのリクエストフォワーディングは利用できますが、スタンバイ自身での読取処理は対象外です。
どのストレージバックエンドで有効ですか?
HA対応ストレージ(ConsulまたはRaft/Integrated Storage)で利用可能です。いずれも正しいcluster_addr設定とノード間のTLS到達性が重要です。
一時的にすべてアクティブで処理させたい場合は?
一時措置としてはサーバ設定でdisable_performance_standbyを有効化するか、LBをアクティブノードのみに向ける運用切り替えが現実的です。恒常運用では再度Performance Standbyを有効に戻すことを推奨します。
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...