はじめに
Proxmox VEを利用すると複数のPCでクラスターを構築することができます。クラスターには次のような機能があります。
- Web UIによる一元管理:1つのノードのWeb UIからクラスター内の全てのVMを操作
- ライブマイグレーション:VMを停止せずにノード間で移動可能
- HA(高可用性):ノードが落ちた際に他のノードでVMを自動起動
- 分散ストレージ:Cephストレージを使用したHCI(Hyper-Converged Infrastructure)構成を実現
今回は、3台のPCでProxmox VEを使ったクラスターを構築します。

環境
- Proxmox VE 8.3.2
- PC(Proxmox VEを予めインストール済み)
- 1台目:Lenovo ThinkCentre M75q-1 Tiny
- 2台目:Lenovo ThinkCentre M75q Tiny Gen2
- 3台目:NiPoGi AK2Plus 512GB/1TB+16GBリンク
クラスター作成(1台目)
まず初めにProxmoxが入っているPCでクラスターを構築します。
ノード追加(2台目以降)
既存ノード(クラスター構築済みPC)と新ノード(クラスターにこれから追加するPC)の両方で作業が必要です。
また、新ノードにVMやコンテナーがあるとクラスターに参加できないので、ある場合は先に削除します。
既存ノードでの操作(クラスター参加情報の取得)
- Datacenter→Clusterタブ→Join Informationをクリック
- Copy InformationボタンでJoin Informationをコピー

新ノードでの操作
- クラスター参加情報の入力
ClusterタブのJoin Clusterボタンをクリックし、先ほどコピーしたJoin Informationを貼り付けます。

- その他情報の入力
既存クラスターのIPアドレスなどが表示されるので確認して、既存クラスターのノードのrootパスワードを入力し、Joinボタンをクリックします。

- クラスター参加まで待機
クラスターへの参加が完了するまで待ちます。
自環境で実行した際は次の画面で止まってしまいましたが、ブラウザーの別タブでログインし直したらクラスターに参加できていたので問題なかったようです。(自己署名証明書の警告が再度出たので、恐らくクラスター参加中にサーバー証明書が変更されて通信に失敗したっぽい。)
ライブマイグレーション機能
クラスター内の別ノードにVMを移動するマイグレーション機能を使ってみます。ProxmoxではVMを起動したままでのライブマイグレーションに対応しています。これを使うと、例えばあるノードの電源を落としてメンテナンスしたい場合(OSアップデートや物理的なファン清掃など)に、そのノード上で稼働しているVMを一旦別ノードに移動することができ、VMを止める必要がなくなります。
マイグレーションに掛かる時間について、VMディスクのストレージがノード上のローカルストレージにある場合はノード間でイメージの転送が行われるため時間がかかります。一方NASなどの外部ストレージに置いた場合は転送が必要ないため短時間で終わります。
事前準備:TRIM設定
マイグレーションの際に転送されるVMイメージのサイズを小さくするために、VM上でのTRIMコマンドが機能するように設定変更しておきます。これはProxmox側のストレージがシンプロビジョン(LVM-Thin や ZFS)の場合にのみ有効です。
- VMディスクのDiscardオプション有効化

VM上でtrimやdiscardコマンドが発行された際にProxmoxのストレージ上で未使用領域が開放されるようになります。VM起動中に設定変更した場合は反映のために一旦VMを停止して再起動します。
- マイグレーション後のTrim自動実行
VMのOptions→QEMU Guest Agentから「Run guest-trim after a disk move or VM migration」にチェックを入れます。これにより、マイグレーション後にTRIMが実行されて移行先のディスク容量が開放されるようになります。VMにQEMU Guest Agentのインストールが必要です。

マイグレーション実行
- Migrateボタンをクリック
- 移行先のノードとストレージ(変更が必要な場合)を指定
- Migrateボタンを押してマイグレーションを開始

- マイグレーションが終わるまで待機
ローカルストレージを利用している場合はVMイメージの転送から始まるので時間がかかります。

まとめ
Proxmox VEクラスターを構築することで複数台のPCにおける仮想環境の管理が簡単になります。
余裕があれば次はCephクラスターの構築なんかもやってみたいと思います。
