ここまで順調に増やしてきたProxmox VEノードの一元管理や、仮想マシンのノード間マイグレーションのために、まずは2つのノードでクラスタを構築します。
Proxmox VE 各ノード
これまでに余剰機材や、既存のVMware ESXiハイパバイザを潰して構築したProxmox VEノードは、以下の2っ。
|
1 2 |
pve77 192.168.2.77 IBM System X3250 M4 (ゲストvm有り) pve21 192.168.2.21 IBM System X3650 M3 (ゲストvm皆無) |
今後も既存のVMware ESXiハイパバイザを潰してProxmox VEへ全面移行するつもりなので、ここで各ノードの一元管理やマイグレーション、バックアップのためにクラスタを構築しておきます。
クラスタ構築時の注意
Proxmox VEノード群でクラスタを構成するにはまず、任意のノードでクラスタを新規作成後、生成される情報を元に他方のノードがそのクラスタへ参加(ジョイン)するという流れになります。
但しこの時、既存のクラスタへ参加するノードには、仮想マシンやコンテナが1つも存在しないことが必要で、さもないと参加のタスクが失敗終了します。
|
1 |
this host already contains virtual guests |
クラスタ構築
現在、2つのノードのうち、ゲストの無い空っぽのノードが1つあるのでこれを後回しにして、既にゲストVMのあるノード pve77 のWebUIを開き、 Datacenter > Cluster より Create Cluster ボタンを押し、任意の名前を入力してクラスタを作成します。
クラスタ作成のタスクはほどなく完走。
先ほどのクラスタ情報ページでクラスタメンバ一覧に自身のノードが現れました。ここで Join Information ボタンを押して、このクラスタへ他ノードが参加する際に必要な情報をコピーしておきます。
次にもう一つのノードのWebUIを開き、同じクラスタ情報ページを開いて、ここでは Join Cluster ボタンを押して先ほどのクラスタ情報を貼り付けます。
Join ボタンを押すとクラスタ情報がほぼ入力済みの状態になるも、Peerの Password は空欄になっているはずです。ここには、クラスタを作成したノードのrootパスワードを入力して、クラスタへの参加します。
これでWebUIを再読み込みすると、2つのノードがクラスタの下にツリー表示されるようになりました。
ノードのストレージを登録
さて、上図において後からクラスタへ参加したノード pve21 の下に、本来あるはずの2つのLVM-Thinストレージが見当たりません。そこで、 Datacenter > Storage ページを開くと、ローカルシステム以外で存在しているのは、クラスタを作成した pve77 のストレージ VD1 のみ。
Add ボタンを押して LVM-Thin を選択、表示させたい2つのストレージを1つずつ登録します。
こうして pve21 の下にストレージが現れたのですが、よく見ると他方のノード pve77 にも同じものが現れてしまいました。
先ほどのストレージ登録ウィンドウへ戻り、 Nodes 項がデフォルトでは All となってしまっているのを、見せたいノード(つまり自ノード)を指定することに。
これで、登録したストレージが自身のノードのみに表示されるようになりました。
推奨される最小ノード数
Proxmoxに限らず、分散コンピューティングにおいて、耐障害性のあるクラスタ構成には最低3以上の奇数ノードが推奨されているのだそうです。各ノード1の投票数(Vote)を有しており、クラスタ内でその合計数が過半数(Quorum)を超えていないと正常なサービスができなくなります。つまり、
- 2ノードクラスタに必要な投票数は2。
- 3ノードクラスタに必要な投票数は2。
となるわけで、耐障害性を目的としたクラスタリングでは3以上の奇数ノードで構成しましょう、というカラクリです。実際にもう一つノードを加えた3ノードクラスタの状態を、CLIで確認してみました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
root@pve21:~# pvecm status Cluster information ------------------- Name: pvecluster Config Version: 3 Transport: knet Secure auth: on Quorum information ------------------ Date: Fri Feb 7 13:09:47 2025 Quorum provider: corosync_votequorum Nodes: 3 Node ID: 0x00000002 Ring ID: 1.cf Quorate: Yes Votequorum information ---------------------- Expected votes: 3 Highest expected: 3 Total votes: 3 Quorum: 2 Flags: Quorate Membership information ---------------------- Nodeid Votes Name 0x00000001 1 192.168.2.77 0x00000002 1 192.168.2.21 (local) 0x00000003 1 192.168.2.25 |
ここからはトリッキーなので完全に自己責任ですが、調べてみるとノード当たりの投票数を1より増やしてしまうことで過半数割れを回避するハックや、
実際にはProxmoxシステムではないが、クラスタに参加して投票をするだけのデバイス(QdeviceとかWitnessと称される)を用意する手法があるようです。














