メインコンテンツまでスキップ

VM のみの展開(OpenShift なし)

すべてのサイトが Kubernetes を運用しているわけではありません。ハイパーバイザー (VMware、Proxmox、Nutanix、KVM/OpenStack)のみを利用でき、通常の 仮想マシン を 好む場合、DuoKey は VM のみのトポロジーで展開できます。コンポーネントは OpenShift リファレンスアーキテクチャ と同じで、OpenShift クラスターの 代わりに VM 上のコンテナ(Podman/Docker)としてパッケージされます。

スタックは小規模です。React フロントエンド(UI)、単一のバックエンドである Cockpit API(DKE / KMS / KMIP / ACME-EST / XKS の各エンドポイントをまとめて提供)、 PostgreSQL、Redis、シークレット用の OpenBao、加えて GitOps (ArgoCD / GitLab)、オプションの Harbor レジストリ、可観測性のための VictoriaMetrics / VictoriaLogs、そして展開に必要な場合には専用の鍵保管バックエンドと してのオプションの DuoKey MPC KMS クラスター(3 ノード以上)で構成されます。

鍵の保管に関する選択肢

鍵の保管はデフォルトで組み込みの Software Vault を使用するため、追加で展開する クラスターはありません。専用またはハードウェアに支えられた鍵保管層が必要な場合は、 オプションの DuoKey MPC KMS(DuoKey 独自のマルチパーティ計算クラスター。3 ノード以上、 鍵はシェアに分割され、単一のノードが完全な鍵を保持することは決してありません)または Securosys HSM を追加してください。 前提条件 → 鍵の保管 を参照してください。

オプションの DuoKey MPC スタックに 含まれない もの

DuoKey MPC KMS は DuoKey 独自 のクラスター(サードパーティの Sepior TSM ではありません) であるため、これを追加しても MongoDB、Audit Node、KMaaS ポータルは不要 です(これらは Sepior 固有のコンポーネントです)。フロントエンドは Angular ではなく React です。

どちらのモデルを選ぶべきですか
  • OpenShift — 大規模/エンタープライズ 規模、自己修復、オートスケーリング、 GitOps 主導の運用に推奨されます。 リファレンスアーキテクチャ を参照してください。
  • VM のみ — パイロット、標準、中規模 の展開、あるいは Kubernetes プラットフォームを 持たないサイト向けの軽量な構成です。クラスターに依存する代わりに、VM/LB 層で HA を 自ら担います。このページではそのモデルを説明します。

いずれのモデルも、同じ ネットワーク要件、 DNS レコード、セキュリティ を共有します。

単一サイトのアーキテクチャ​

ステートレスな層(UI と API)は ロードバランサー VIP の背後に配置され、別々の ハイパーバイザーホスト上で N+1 のレプリカとして稼働します。ステートフルな層はそれぞれ 独自の HA を持ちます(PostgreSQL のプライマリ + レプリカ、OpenBao Raft、Redis Sentinel)。

単一サイトのアーキテクチャ
ユーザー / オフィス / M365
ロードバランサー / リバースプロキシ VIPkeepalived + HAProxy / Caddy / F5
Cockpit UI (React)2 台以上の VM
Cockpit API3 台以上の VMDKE · KMS · KMIP
PostgreSQL クラスタープライマリ 1 + レプリカ 2
RedisSentinel
OpenBao3 VM · Raft
DuoKey MPC KMSオプション · 3 ノード以上
Securosys HSMオプション
ArgoCD (GitOps)API を展開
VictoriaMetrics · VictoriaLogsスクレイプ / ログ
エッジ / プロキシUIAPIデータシークレット / 鍵の保管運用オプション

ステートレスな UI と API はロードバランサー VIP の背後で N+1 構成で稼働します。API は鍵の保管、PostgreSQL、Redis、OpenBao と通信し、その傍らで ArgoCD と可観測性スタックが動作します。

VM のロールとサイジング​

各行は VM あたり のサイズと、高可用性構成における 最小台数 を示します。数値は 前提条件 のコンポーネント別サイジングと一致しています。

ロール台数(HA)VM あたり vCPUVM あたり RAMディスク備考
ロードバランサー / リバースプロキシ224 GB20 GBアクティブ/スタンバイの VIP(keepalived)。HAProxy / Nginx / F5
Cockpit UI(React フロントエンド)224 GB20 GBステートレスな SPA
Cockpit API バックエンド348 GB20 GBCockpit の管理機能 + DKE / KMS / KMIP の鍵エンドポイント。ホットパスです
DuoKey MPC KMS ノード(オプション)348 GB20 GB鍵保管バックエンドとして追加する場合のみ。CPU バウンドな共同計算のため、同一サイトに配置してください
PostgreSQL(Cockpit + オプションの MPC)3616 GB100 GB SSDプライマリ 1 + レプリカ 2。単一プロセスで、DB/ユーザーを分離します
Redis348 GB50 GBSentinel(またはクラスター)。パススルーキャッシュ
OpenBao324 GB20 GB SSDRaft 統合ストレージ
VictoriaMetrics(モニタリング)1412 GB200 GBメトリクス + Grafana。プライマリ DC のみ
VictoriaLogs(ロギング)1412 GB600 GB中央ログ / 監査。プライマリ DC のみ
Harbor(レジストリ、オプション)118 GB200 GBエアギャップ用イメージミラー。プライマリ DC のみ
GitOps — ArgoCD / GitLab(オプション)114 GB100 GBGit ソースからマニフェストを同期します
同一の物理ホストにロールを集約しないでください

各 HA セット(PostgreSQL、OpenBao、Redis、MPC ノード、API レプリカ)は 別々のハイパーバイザーホスト/アンチアフィニティグループ に分散し、単一ホストの障害が クォーラムや、ある層のすべてのレプリカを失わせないようにしてください。

LIGHT プロファイルの前提

これは LIGHT のリファレンスサイジングであり、オプション の DuoKey MPC KMS を 含めた構成で示しています。単一の PostgreSQL プロセスが、MPC が存在する場合には Cockpit データベースと MPC データベースの両方を提供します(DB/ユーザーは分離)。PostgreSQL は CPU 負荷が軽く(ストアドプロシージャのないシンプルなデータストアです)、DuoKey MPC ノードは Sepior TSM よりも必要な CPU が少なく、Redis はパススルーキャッシュで、ログの保持 期間は切り詰めています。デフォルトの Software Vault を使用する場合は、MPC の行を丸ごと 削除してください。最終的な数値は DuoKey と確認してください。

ユーザー数によるサイジング階層​

計画を立てやすくするための目安の VM 台数であり、契約上のマッピングでは ありません。 最終的なサイジング(ドキュメントの利用状況、ピーク時同時実行数、可用性目標)は DuoKey と 検証します。

階層ユーザー数UI VMAPI VMMPC ノード(オプション)データ層備考
パイロット / PoC1,000 以下220 または 3PG×3、Bao×3、Redis×3最小構成の HA、レプリカを削減
標準10,000 以下230 または 3PG×3、Bao×3、Redis×3リファレンスとなる VM HA
大規模50,000 以下360 または 3〜5PG×3(スケール済み)、Redis クラスターまず API(追加している場合は MPC も)をスケールします
エンタープライズ100,000 以上個別対応個別対応個別対応マルチサイト通常は DC 間のアクティブ/パッシブ
参考値 — DuoKey と確認してください

OpenShift のサイジング階層 と同様に、 これらは出発点です。Cockpit API は DKE の鍵操作におけるホットパスであるため、高負荷時は 最初にスケールしてください。オプションの DuoKey MPC KMS を鍵保管バックエンドとして 追加している場合、そのノードも同様に CPU バウンドであり、API と併せてスケールします。

サイト内の高可用性​

層HA の仕組み
ロードバランサー / リバースプロキシフローティング VIP(keepalived/VRRP)を持つ 2 台の VM。アクティブ/スタンバイ
Cockpit UI / APIステートレス で、VIP の背後に N+1 レプリカ。LB のヘルスチェックが異常なバックエンドを除外します
DuoKey MPC KMS(オプション)別々のホスト上の 3 ノード以上。クラスターは、完全な鍵を露出させることなくノードの喪失に耐えます
PostgreSQLプライマリ 1 + レプリカ 2 で自動フェイルオーバー(Patroni/repmgr)。VIP はプライマリに追従します
OpenBao3 ノードの Raft クォーラム。自動アンシールを推奨します
Redis自動的なプライマリ選出のための Sentinel(またはクラスター)

Geo ロードバランシングによるマルチサイト HA​

データセンターレベルの回復性を確保するには、3 つのサイト にわたって データセンターごとに独立したスタック を運用し、その前段に Geo ロードバランサー (GSLB) を配置します。GSLB は各サイトのローカル LB VIP を ヘルスチェックし、正常なサイトへユーザーを誘導します。各サイト内ではローカルの ロードバランサーが UI と API の VM に負荷を分散します。 PostgreSQL は 3 つのサイト間でレプリケート され、オプションの DuoKey MPC KMS を 鍵保管バックエンドとして使用する場合は、同時にアクティブなデータセンターを 1 つに限定した (アクティブ/パッシブの)サイトごとのクラスター として稼働します。

3 つのデータセンターにまたがるマルチサイト HA
ユーザー / オフィス / M365
Geo ロードバランサー (GSLB)アクティブ / パッシブ · ヘルスチェック付き
DC 1 · アクティブ
ローカル LB VIP
UI · Cockpit API
PostgreSQL · Redis · OpenBao
DuoKey MPC クラスター (3)オプション
モニタリング · ロギング · Harbor共有運用基盤
DC 2 · パッシブ
ローカル LB VIP
UI · Cockpit API
PostgreSQL · Redis · OpenBao
DuoKey MPC クラスター (3)オプション
DC 3 · パッシブ
ローカル LB VIP
UI · Cockpit API
PostgreSQL · Redis · OpenBao
DuoKey MPC クラスター (3)オプション
全サイト間の PostgreSQL レプリケーション · RTT 5 ms 以下なら同期、それ以外は非同期

ヘルスチェック付きの GSLB がユーザーをアクティブなデータセンターに誘導します。3 つのサイトはそれぞれ独立したスタックを実行し、PostgreSQL は全サイト間でレプリケートされ、オプションの DuoKey MPC KMS(追加した場合)はサイトごとのクラスターとして稼働します(同時にアクティブな DC は 1 つ)。

トポロジーの選択肢

モード仕組み使用する場面
アクティブ/パッシブ(3 DC)1 つのデータセンターがサービスを提供し、残りの 2 つは PostgreSQL/OpenBao がレプリケートされたウォームスタンバイです。GSLB はトラフィックを次の正常な DC にフェイルオーバーします。3 つの DC におけるデフォルト。特にサイト間リンクが 低速または長距離 の場合に使用します。レイテンシーのガイダンス を参照してください
アクティブ/アクティブ(メトロ)複数のサイトがサービスを提供し、PostgreSQL は 5 ms 以下 のメトロリンク上で 同期 レプリケーションを使用します高速で信頼性の高いメトロリンク上でのみ使用します

設計上の原則

  • MPC の配置(追加する場合): オプションの DuoKey MPC KMS を鍵保管バックエンドとして 使用する場合は、サイトごとのクラスター として運用します(同時にアクティブな DC は 1 つ)。単一クラスターをサイト間にストレッチするのは、低レイテンシーが検証済みの リンク(2 ms 以下)の場合のみにしてください。すべての鍵操作はノード間で共同計算される ため、それ以外の場合はサイトをまたぐ配置は低速になります。 ネットワーク要件 を参照してください。
  • 共有の可観測性基盤は DC 1 に配置します: モニタリング、ロギング、Harbor、GitOps の 各 VM は プライマリ データセンターにのみ配置し、DC 2 と DC 3 はコアスタックのみを 実行します。これらはサイト外にレプリケート/バックアップしてください。
  • データベースのレプリケーション: プライマリ ↔ レプリカ間の RTT が 5 ms 以下 の 場合にのみ 同期(RPO ゼロ)とし、それ以外は 非同期 として、小さく文書化された RPO を許容します。
  • DKE エンドポイント: GSLB を前段に配置し、サイト間で 同じホスト名と TLS 証明書 を維持します。スプリットホライズン DNS と組み合わせることで、社内および社外のユーザーが最寄りの正常なサイトに到達できます。
  • Securosys HSM(オプション): ハードウェア HSM を追加する場合は、各サイトから 低レイテンシーで到達できるようにしてください。 鍵の保管 を参照してください。
  • フェイルオーバーの目標: DuoKey と RTO/RPO を合意し、サイトのフェイルオーバーを 訓練してください。どの層が自動でフェイルオーバーし、どの層が手動かを文書化します。

データセンターごとのサイジング(3 サイト LIGHT プロファイル)​

DuoKey の LIGHT リファレンスプロファイルに従った目安の集計で、オプション の DuoKey MPC KMS を含めた構成で示しています。DC 1 は加えて共有の可観測性基盤(モニタリング、 ロギング、Harbor、GitOps)を担い、DC 2 と DC 3 はコアスタックのみを実行します。デフォルトの Software Vault を使用する場合は、これらの数値から MPC ノード分を差し引いてください。 最終的なサイジングは DuoKey と確認してください。

データセンターRAMvCPUストレージ内容
DC 1(アクティブ + 共有運用基盤)約 160 GB約 60約 1.7 TBコアスタック + モニタリング、ロギング、Harbor、GitOps
DC 2(パッシブ)約 120 GB約 48約 580 GBコアスタック
DC 3(パッシブ)約 120 GB約 48約 580 GBコアスタック
全体約 400 GB約 156約 2.9 TB3 サイトの合計
Cockpit HA のデータフロー(データセンターごと)
ユーザー
ロードバランサー
Cockpit UI (React)
Cockpit API
Redis クラスター
PostgreSQL クラスターサイト間でレプリケート

ユーザーはロードバランサーに到達し、ロードバランサーは各データセンター内のステートレスな UI と API の VM にトラフィックを分散します。API はサイトの Redis および PostgreSQL クラスターを共有します。

ロードバランシングの詳細​

サービスLB の種類ヘルスチェックTLSアフィニティ
DKE 鍵エンドポイント(Cockpit API)L7(または L4 パススルー)TLS 経由で鍵エンドポイントへの GETパススルー を推奨(クライアント → API の TLS をそのまま維持)なし
Cockpit UI / APIL7HTTP(S) のヘルスチェックパス終端またはパススルーなし(ステートレス)
KMIP エンドポイント(オプション)L4TCP 5696パススルーなし
PostgreSQL VIPL4プライマリのみのプローブ(フェイルオーバーに追従)該当なしプライマリへのピン留め
DKE エンドポイントで SSL インスペクションを行わないでください

DKE エンドポイント上で TLS を終端する、あるいは SSL インスペクションを行うミドルボックスは、 DKE フローが依拠するクライアント ↔ API 間の信頼を破壊します。この経路では パススルー(L4)を使用し、LB のアイドルタイムアウトは最長の鍵操作よりも 長く 設定してください。

関連項目​