💥

Proxmoxのぶっ壊れたクラスタをオンラインで作り直す(+クラスタの分割)

に公開

IX2215の拠点間VPNによって接続された東京-大阪の2拠点にあるノードを同一クラスタに放り込んでいたところ、微妙にVPNが安定していないためかクラスタが頻繁に死ぬようになりました
クラスタ上で動いているVM/コンテナには影響がないため、問題ないといえば問題ないのですが、WebUIから操作ができないのは微妙に不便なため、クラスタの再構築を行いました

公式から案内されている方法を用いるとノードの再インストールやVM/コンテナの削除が必要になるため、直にファイルを操作します

環境

  • 東京: 3ノード
  • 大阪: 4ノード
  • proxmox 8.4.1

クラスタの削除

クラスタ設定の削除

以下のコマンドを各ノードで実行してきます

systemctl stop pve-cluster
systemctl stop corosync
pmxcfs -l
rm /etc/pve/corosync.conf
rm -r /etc/corosync/*
killall pmxcfs
systemctl start pve-cluster
systemctl restart pveproxy pvedaemon
rm /var/lib/corosync/*

実行が完了するとproxmoxが単一ノードモードに切り替わります
しばらくはWebUIにログインできませんが、暫く待つとログインできるようになります

他のノード情報の削除

このままだとDatacenter以下に他のノードが残ってしまっているため
/etc/pve/nodes/以下にある他のノード名のフォルダーをすべて削除します

UIを読み込み直すと他のノードが消えていることが確認できると思います

クラスタの再構築

クラスタの作成

まず初めにノードを一つ選択し、Datacenter > Cluster からクラスタを作成します
私の場合は拠点ごとでクラスタを分割しました

ノード情報のコピー

VM/コンテナがノード上に存在している場合、クラスタに参加することが出来ないため、ファイルを手動でコピーします
クラスタの親ノードで以下のコマンドを実行します

scp -r root@<追加対象ノードのホスト名>:/etc/pve/nodes/* /etc/pve/nodes

親ノード上にコピーできていることを確認したうえで、追加対象ノード側で

rm /etc/pve/nodes/* -rf

を実行しノードの情報を削除します

クラスタへの参加

以上の操作でノード上のVM/コンテナが見かけ上はなくなったためWebUIからクラスタへ参加します
すると親ノード側から情報が同期されるため、参加側のノード上でもVM/コンテナが確認できるようになります

参考リンク

https://pve.proxmox.com/wiki/Cluster_Manager#_remove_a_cluster_node
https://forum.proxmox.com/threads/joining-a-cluster-with-already-created-guests-vm.81064/

Discussion