Skip to content

はじめに

Cockpit は、すべての仮想マシンと物理サーバーを一元管理するダッシュボードとして機能します。セットアップを始める前に、各コンポーネントがどのように通信するのか、そしてどのようなハードウェアが必要なのかを理解しておきましょう。


用語解説(Jargon Buster) 📖

仮想化の世界には、難しい専門用語がたくさんあります。これらが実際に何を意味するのか、わかりやすく解説します:

💡 用語のやさしい説明

  • ハイパーバイザー (Hypervisor): 1台の物理コンピューター上で、複数の仮想コンピューター(仮想マシン、または VM)を同時に動かすための監督用ソフトウェア、またはそのサーバーのこと。
  • REST API: システム同士が会話するための仕組み。レストランのメニューのようなもので、ブラウザやスクリプトが特定のアクション(例:「VM #2 を起動する」)を「注文」し、サーバーがその結果を「提供」します。
  • WebSocket: つなぎっぱなしのリアルタイム通信。ブラウザが「バックアップは終わった?」と1秒ごとに何度も確認する(ポーリング)代わりに、サーバーが回線を開いたままにし、何かが起きた瞬間にそれを伝えます。
  • アドバイザリーロック (Advisory Lock): データベース内での約束事で、会議の「発言権マイク」のようなもの。複数の管理サーバーが同時に1台のホストに指示を出して混乱するのを防ぐため、マイク(ロック)を持っているサーバーだけがホストに命令できます。
  • pg_notify: データベース内の内線放送システム。1台の Cockpit サーバーがイベント(VM が起動したなど)を受信すると、この内線放送を使って他のすべての Cockpit サーバーに一瞬で知らせます。

Cockpit の通信方法(アーキテクチャ)

Cockpit は、管理者(あなた)と、仮想マシンを実行している物理サーバー(Vapor ホスト)の中間に位置します。

これは2階層の構造になっています:

  1. 下り (Cockpit から Vapor へ): Cockpit は Vapor が動作する物理サーバーと会話します。サーバーに接続して、ハードウェア情報、VM の稼働状態、およびリアルタイムの稼働データを取得します。
  2. 上り (ブラウザから Cockpit へ): あなたの Web ブラウザは Cockpit に接続します。Cockpit はログインしたユーザーを確認し、許可された操作(権限)をチェックした上で、統合された管理ダッシュボード画面を表示します。
                  ┌────────────────────────────────┐
                  │          Cockpit Web UI        │
                  │     (Webブラウザに表示される画面)│
                  └──────────────┬─────────────────┘

                                 ▼ (REST / WebSockets - リアルタイム通信)
                  ┌────────────────────────────────┐
                  │      Cockpit API Gateway       │
                  │       (中央の頭脳 / 調整役)     │
                  └──────────────┬─────────────────┘

         ┌───────────────────────┼───────────────────────┐
         ▼                       ▼                       ▼
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   Vapor Host 1  │     │   Vapor Host 2  │     │   Vapor Host 3  │
│ (物理サーバー)  │     │ (物理サーバー)  │     │ (物理サーバー)  │
└─────────────────┘     └─────────────────┘     └─────────────────┘

主要なインフラコンポーネント

水面下では、いくつかのプログラムが連携して全体を同期させています:

  • コレクターサービス (Collector Service): Cockpit 内で動作するバックグラウンドの管理者です。常に Vapor サーバーと連絡を取り合い、それらの動きを Cockpit のデータベースに書き込みます。
  • PostgreSQL データベース: 中央の記録簿です。ユーザーアカウント情報、どのボタンを押してよいかの権限設定、登録された物理サーバーの一覧などがすべてここに保存されます。
  • PostgreSQL アドバイザリーロック (作業の分担): 信頼性を高めるために複数の Cockpit サーバーを同時に動かす(高可用性)場合、同じ物理サーバーを同時に操作しようとして競合する可能性があります。これを防ぐためにデータベースの「ロック」を奪い合い、勝ったサーバーだけが通信を担当します。そのサーバーがクラッシュすると、別の Cockpit サーバーが即座に引き継ぎます。
  • WebSocket イベントハブ (リアルタイム放送): 仮想マシンが起動または停止したとき、その情報をブラウザにブロードキャストし、画面上のステータスを即座に更新します。複数の Cockpit サーバーがある場合、データベースの内線放送 pg_notify を利用して、すべての管理者が全く同じリアルタイム画面を見られるようにします。

システム要件

Cockpit をインストールする前に、サーバーが以下の推奨仕様を満たしているか確認してください:

コンポーネント最小スペック推奨スペックなぜこれが必要なのか?
CPU コア2 vCPUs4+ vCPUs送られてくるパフォーマンスデータの処理や接続管理のため。
システムメモリ4 GB8+ GBWebSocket 接続の維持やバックグラウンド処理の実行のため。
ストレージ20 GB (SSD推奨)50+ GBデータベースレコード、監査ログ、システムログを保存するため。
データベースPostgreSQL 15以降クラスター化 PostgreSQL (Patroni)すべての設定や稼働状態を記録する場所。
ネットワーク1 Gbps NIC10 Gbps 専用回線高速な通信や、サーバー間での VM 移動をスムーズに行うため。
Vapor ノードVapor 1.0.0以降有効な証明書を持つ HTTPS 構成Cockpit で管理する対象となる物理サーバー。