Proxmoxクラスタのノードが壊れたときの対処法

Proxmoxのクラスタ便利ですね。でも予期せずにクラスタ上のノードが起動しなくなって、クラスタ情報が不整合を起こす場合があります。

例えば、marsが壊れた場合は以下のように見えます。この状況ではmarsのPVE(Proxmox VE)を再インストールしてもクラスタに参加させることができません。クラスタメインのノード(earth)でmarsの情報を破棄する必要があります。

クラスタのメインノードにて、必要なファイルをバックアップしましょう。

# サービスを停止する
systemctl stop pve-cluster corosync

# タイムスタンプ付きのバックアップディレクトリを作成
backup_dir="/root/pve_cluster_backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p $backup_dir

# PVE設定ファイル群のバックアップ(pmxcfsで管理されているファイル)
cp -r /etc/pve/* $backup_dir/pve/

# corosync関連のバックアップ
cp -r /etc/corosync/ $backup_dir/corosync/

# クラスタデータのバックアップ
cp -r /var/lib/pve-cluster/ $backup_dir/pve-cluster/

# バックアップの圧縮(オプション)
tar czf ${backup_dir}.tar.gz $backup_dir/
ShellScript

以下で壊れたノードの情報が破棄できます。

# クラスタサービスを停止
systemctl stop pve-cluster corosync

# pmxcfsをクリーンアップ(これ重要!)
pmxcfs -l

# ロックファイルを削除(ある場合)
rm -f /var/lib/pve-cluster/.pmxcfs.lockfile

# プロセス強制終了
killall pmxcfs

# サービス再開
systemctl start pve-cluster
ShellScript

この状況で管理画面をみるとまだ壊れたノードのエントリ自体は残っていますが、クラスタの参加画面から再度参加させることができます。

ご参考までに。