Proxmox 2ノードクラスター & QDevice:Homelab向けの高コスパなHAソリューション

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

なぜ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)の真価を十分に体験することができます。

Share: