Cockpit を始める
Cockpit は、Vapor 仮想化プラットフォームの集中管理ゲートウェイとして機能します。このガイドでは、Cockpit をデプロイするために必要なシステムアーキテクチャ、通信フロー、およびシステム要件について説明します。
技術用語
仮想化管理には、以下のコアインフラストラクチャコンポーネントが関連しています。
用語参照
- ハイパーバイザー: ローカルエージェント (Vapor) によって管理される、仮想化カーネル (KVM/QEMU) を実行する物理ホストサーバー。
- REST API: クライアントが管理コマンドを実行し、HTTP を介して構成状態を取得するために使用する Representational State Transfer インターフェース。
- WebSocket: サーバーからクライアントへリアルタイムのイベントやテレメトリ更新を最小限のオーバーヘッドでプッシュするために使用される、全二重の永続的接続プロトコル。
- PostgreSQL アドバイザリーロック: マルチインスタンスデプロイメントにおいてホスト管理を調整し、スプリットブレイン競合を防止するためにアプリケーションが定義するデータベースロック。
pg_notify: アクティブなすべての Cockpit インスタンス間でイベントをブロードキャストするために使用される、PostgreSQL の非同期通知チャネル。
通信アーキテクチャ
Cockpit は、管理者と物理的な Vapor ハイパーバイザーの間の集中ゲートウェイとして機能します。以下の 2 層の通信モデルを実装しています。
- ダウンストリーム (Cockpit から Vapor): Cockpit は、ポート
7770でローカルの Vapor ホストエージェントへの安全な接続を確立します。このリンクは、ハードウェアプロパティの照会、VM 構成の取得、およびリアルタイムイベントのストリーミングに使用されます。 - アップストリーム (クライアントから Cockpit): クライアントは、HTTPS および WebSocket を介してポート
7771で Cockpit API ゲートウェイに接続します。API ゲートウェイはユーザーを認証し、ロール権限を検証し、統合された Web UI コンソールを提供します。
┌────────────────────────────────┐
│ Cockpit Web UI │
│ (クライアントブラウザ) │
└──────────────┬─────────────────┘
│
▼ HTTPS / WebSockets (アップストリーム接続)
┌────────────────────────────────┐
│ Cockpit API Gateway │
│ (中央コントロールプレーン) │
└──────────────┬─────────────────┘
│
┌───────────────────────┼───────────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Vapor Host 1 │ │ Vapor Host 2 │ │ Vapor Host 3 │
│ (TCP Port 7770)│ │ (TCP Port 7770)│ │ (TCP Port 7770)│
└─────────────────┘ └─────────────────┘ └─────────────────┘コアアーキテクチャコンポーネント
Cockpit アーキテクチャは、いくつかの専用バックエンドサービスで構成されています。
- コレクターサービス: 登録されているすべての Vapor ホストエージェントへの永続的な接続を維持するバックグラウンドデーモン。ホスト状態の同期、テレメトリサンプルの処理、および共有データベースの更新を行います。
- PostgreSQL データベース: 共有構成ストア。ユーザー定義、ロールマッピング、ホスト登録メタデータ、およびシステムメトリクスを保持します。
- PostgreSQL アドバイザリーロック: マルチインスタンス構成において相互排除 (mutual exclusion) を強制するために使用されます。各 Vapor ホストは単一のコレクターインスタンスによってロックされます。アクティブなインスタンスが失敗した場合、スタンバイインスタンスがロックを取得し、そのホストの管理を引き継ぎます。
- WebSocket イベントハブ: リアルタイムのメッセージブローカー。コレクターサービスによって生成されたイベントを処理し、接続されているブラウザにブロードキャストします。マルチインスタンス構成では、PostgreSQL の
pg_notifyを使用してインスタンス間でメッセージをルーティングします。
システム要件
Cockpit をインストールする前に、デプロイ先ホストが以下のハードウェアおよびソフトウェア要件を満たしていることを確認してください。
| コンポーネント | 最小仕様 | 推奨仕様 | 必要とされる理由 |
|---|---|---|---|
| CPU コア | 2 vCPU | 4+ vCPU | 同時 API リクエストの処理およびテレメトリデータの解析に必要です。 |
| システム RAM | 4 GB | 8+ GB | アクティブな WebSocket 接続バッファおよび同時プロセスの管理に必要です。 |
| ストレージ | 20 GB (SSD) | 50+ GB | データベースレコード、監査証跡、およびパフォーマンス履歴を保存します。 |
| データベース | PostgreSQL 15 以降 | Clustered PostgreSQL (Patroni) | 集中型の状態保存およびトランザクションの同期に使用されます。 |
| ネットワーク | 1 Gbps | 10 Gbps | インスタンス間の同期およびメトリクスのストリーミングに必要です。 |
| Vapor ノード | Vapor 1.0.0 以降 | TLS が構成された Vapor | Cockpit コントローラーによって管理されるターゲットハイパーバイザー。 |