鱧技術

hamo_daisukiの技術メモ

Proxmox VEのクラスタ構築の闇と脱出法

Proxmox VEでのクラスタリングが手軽だと思いきや、実際には大変でした

サーバー関連の作業をするとき、Proxmox VEは避けて通れない存在です。少なくとも競合製品であるVMware ESXiのいずれかには触れたことがあるでしょう。私自身、業務上の理由から久しぶりにProxmox VEを使いましたが、クラスタリングのテスト中に大きく躓き、その記録としてこのメモを残します。

 

バージョン8.1.4をインストールし、スタンドアロンで快適に「仮想化が楽だな」と感心していましたが、次に2台でのクラスタ構築に挑戦しました。理想は3台構成ですが、利用可能な実機がなかったためです。多少の困難を乗り越えてクラスタを構築した後で「スタンドアロンに戻そう」と考えた矢先、予期せぬことが起こりました。

コマンドでしかクラスタ解消ができない

Webインターフェースを隅々まで調べて「クラスタ解消ボタン」を探しましたが、見つかりませんでした。なぜでしょうか?調べてみると、「コマンドを入力してください」という情報が得られました。

# まずは現状確認
pvecm nodes
# 次に削除コマンド
pvecm delnode <ノード名>

コマンドを実行し、コマンドライン上で確認したところ、削除されたノードが表示されていないことを確認しました。しかし、Webインターフェイス上では、ページを完全に再読み込みしてもノードが残っており、一部は機能しているようです。「こんなの意味がないように思えます...」(実際にはそうではありません)

そして、多くの解説サイトではここまでの情報をもって「まだ続きの作業がある...」と説明されています。

    rm -fr /etc/pve/nodes/<ノード名>

してくれとのこと。コマンドを打ったところ、「パーミッションがないため実行できない」というエラーメッセージが表示されました。さらに調査を進めて、いくつかのサイトを読んでみましたが、どれも「削除してからリロードすれば問題が解決する」という情報しか書かれていませんでした。一体何が起こっているのでしょうか。

諦めて英語の情報をあさる

私はよく英語を間違って読んでしまうため、英語が苦手です。ですが、DeepLの助けを借りながら調べてみたところ、本家のProxmoxフォーラムに答えが掲載されているのを見つけました。

forum.proxmox.comどうやら、デーモンを停止させたり、設定用のファイルシステムをロックしなければならないようです。

ノード削除の操作
    systemctl stop pve-cluster corosync
    pmxcfs -l
    rm /etc/corosync/*
    rm /etc/pve/corosync.conf
    killall pmxcfs
    systemctl start pve-cluster

理解してしまえば「なんだ、こんなことか」と思うのですが、上記の投稿を見るまで全くわかりませんでした。

ノードの切り離しをなんとか完了させた後でわかったのですが、切り離したノードは基本的に新規インストールが必要とされていました。そのため、ノードを切り離す前に中身をすべて空にして、そのノードに関連するジョブも全て修正しなければならないということでした。

ちなみに、再インストールしなくても、他のネットワークで端末を短時間使用したい場合にも、切り離し作業を行わなければ、以前の親ノードの表示が引き続き残ってしまいます。

ところで、corosync ってなに

OpenAISのクラスタ管理ソフトらしいです。

www.designet.co.jp

pve-cluster とか、pmxcfsってなに

本家のリファレンスに載ってました。英語ができないって不便ね。

pve.proxmox.com