なぜ2ノードでは不十分なのか?クォーラム(Quorum)とスプリットブレインの課題
標準的なProxmox VEクラスター(Cluster)では、高可用性(HA)を安定して稼働させるために、少なくとも3つの物理ノードが必要です。このルールはクォーラム(Quorum:多数決)という概念に基づいています。分散システムでは、50%を超えるノードが生存していると判断された場合にのみ、データの書き込みが許可されます。
2ノードしかない場合に問題が発生します。1つのノードがダウンすると、残ったノードの票数は50%となり、過半数(>50%)に達しません。すると、クラスターは即座にHAサービスを「フリーズ」させます。これはスプリットブレイン(split-brain)を回避するための自己防衛メカニズムです。もし両方のノードがネットワーク接続を失いながらも稼働し続け、共有ストレージに同時にデータを書き込んだ場合、データが完全に破損してしまう恐れがあるからです。
私は以前、2台のIntel NUC(ミニPC)で12台のVMを動かすHomelabを運用していました。単なる「仲裁役」のためだけに3台目のNUCを購入するのは、電気代も予算ももったいないと感じていました。そこで救世主となるのがQDevice (Quorum Device)です。このデバイスは投票機能のみを担い、強力なハードウェア構成を必要とせずに、システムが50%超の条件を満たすのを助けてくれます。
環境の準備
構築にあたり、以下のコンポーネントを準備してください:
- Node 1: Proxmox VE (IP: 192.168.1.10)
- Node 2: Proxmox VE (IP: 192.168.1.11)
- QDevice: Raspberry Pi Zero、別のPC上の小さな仮想マシン、または安価なVPSなどの Linuxデバイス (IP: 192.168.1.12)
QDeviceとして使用するデバイスは非常に軽量で、メモリ消費量はわずか15〜20MB程度です。DebianやUbuntuの最小構成(Lite版)をインストールするだけで十分です。各マシン間でSSH接続が可能であり、固定IPが設定されていることを確認してください。
ステップ 1:Proxmoxクラスターの初期化
まず、Node 1にSSHでログインし、新しいクラスターを作成します:
pvecm create my-cluster
実行が完了したら、Node 2に移動して作成したクラスターに参加します:
pvecm add 192.168.1.10
認証のためにNode 1のrootパスワードを求められます。pvecm statusコマンドで状態を確認できます。この時点では、Total votesは2です。もし1台のネットワークケーブルを抜くと、クォーラムを失うため、もう一方のノードはすぐにActivity blockedと表示されます。
ステップ 2:仲裁役(QDevice)のインストール
3台目のコンピューターをQuorum Network Daemon (corosync-qnetd)として設定します。QDevice (Debian/Ubuntu)上で、以下のコマンドを実行します:
sudo apt update && sudo apt install corosync-qnetd -y
次に、両方のProxmoxノード(Node 1とNode 2)に戻り、接続用パッケージをインストールします:
apt update && apt install corosync-qdevice -y
ステップ 3:クラスターとQDeviceの接続
この操作は、いずれか1つのProxmoxノードで実行するだけで済みます。以下のコマンドにより、セキュリティ証明書が自動的にセットアップされ、設定が他のノードに同期されます:
pvecm qdevice setup 192.168.1.12
インストール中に QDevice の root パスワードの入力を求められます。SSHキー(フィンガープリント)の交換が終わるまで数秒待ちます。成功のメッセージが表示されれば、システムは3票を持つことになります。
確認とモニタリング
すべてが意図通りに動作しているか確認するために、以下のコマンドを入力します:
pvecm status
正常な結果は以下のように表示されます:
...
Votequorum information
----------------------
Expected votes: 3
Total votes: 3
Quorum: 2
Flags: Quorate Qdevice
Membership information
----------------------
Nodeid Votes Qdevice Name
1 1 A, m, n 192.168.1.10 (local)
2 1 A, m, n 192.168.1.11
0 1 Qdevice
...
現在、Total votesは3になっています。Node 1、Node 2、およびQDeviceがそれぞれ1票ずつ持っています。Quorum: 2の設定により、これら3つのエンティティのうち2つが互いに接続できていれば、クラスターは稼働し続けます。
障害シナリオのテスト
Node 1を突然シャットダウンしてみました。すると即座にNode 2はQDeviceとの接続が維持されている(2/3票を確保している)ことを認識し、クォーラム状態を維持しました。HA機能を有効にしていれば、Node 1で動いていたVMは、設定によりますが約60〜120秒後にNode 2で自動的に再起動します。
運用上の重要な注意点
QDeviceは非常に強力ですが、システムが予期せずダウンするのを防ぐために、以下の3点に注意してください:
- そのクラスター自体のVM内でQDeviceを動かさないこと: もしNode 1がダウンし、その中にQDeviceがあった場合、同時に2票を失うことになります。独立したRaspberry PiやクラウドVPSを使用してください。
- ネットワーク遅延(Latency): Corosyncは遅延に非常に敏感です。VPSをQDeviceとして使用する場合は、レイテンシが50ms以下になるよう、同じ地域のサーバーを選択してください。
- アップデート時の注意:
apt upgradeでCorosync関連の更新があった後は、QDeviceの状態を再確認してください。ノードを再認識させるために、手動でサービスを再起動する必要がある場合があります。
QDeviceを使用した2ノードクラスターの構築は、小規模ビジネスやHomelabユーザーにとって最適な選択肢です。高価なサーバーを何台も用意することなく、高可用性(High Availability)の真価を十分に体験することができます。

