Proxmoxの偶数ノードクラスタでハマった
録画鯖と不要なサーバの統廃合をする為にProxmoxクラスタを作っていた時、それは起きた。
“ns-lab BB”で構築するサーバの基本設計は2台1組のデュアルアクティブ方式なのだが、
Proxmoxも同様に2台1組のスタンドアロン構成で組んでいた。
統廃合によって管理するゲストサーバ台数が増えたので、
管理画面から全台を見れる様にすべく4台クラスタに構成変更したのだが、
メンテナンスで2台停止する時にQuorum判定で過半数を超えられず、
ホストサーバがクラスタに復帰出来ない場合がある事にぶち当たった。
クラスタで良くあるQuorum判定はProxmoxでも有効で、
偶数ノードでクラスタを構築すると過半数を超えられずメンテ時に嵌る
実際に2台のホストを停止した状態が次の画像だが確実にNO判定になってしまい、
無理やりホストを起動してもゲストがエラーを吐いて起動出来なかった。
そもそも、後から起動したProxmoxノードがクラスタに参加出来なかったりする。
ググると“pvecm expected 1”でQuorum判定をYESに変更して復帰させる手法が出てくるが、
試した限り確実に復帰できるわけでは無く、正常に復帰出来なかった事も半分位あった。
- Proxmox VE Administration Guide > Remove a Cluster Node
この問題は最終的にクラスタノードを何回か再起動すると直る事が多いのだが、
クラスタ構成のイロハの通り、Proxmoxノードも奇数にしておく必要があると身をもって実感した。
4台でクラスタを組んだ状態のProxmoxクラスタステータスは次の通り。
Quorumが過半数を超える様にする必要があるので、自動的に”3″が入力される事となる。
# pvecm status
Cluster information
-------------------
Name: cluster
Config Version: 4
Transport: knet
Secure auth: on
Quorum information
------------------
Date: Sun Jan 22 hh:mm:ss 2023
Quorum provider: corosync_votequorum
Nodes: 4
Node ID: 0x00000001
Ring ID: 1.11
Quorate: Yes
Votequorum information
----------------------
Expected votes: 4
Highest expected: 4
Total votes: 4
Quorum: 3
Flags: Quorate
Membership information
----------------------
Nodeid Votes Name
0x00000001 1 192.168.x.1 (local)
0x00000002 1 192.168.x.2
0x00000003 1 192.168.x.3
0x00000004 1 192.168.x.4
|
この状態で2台落とす、前述の通りともれなく面倒な事になる。
どうやってコレを解決するか考え中だが有力候補はラズパイでモニタ用Proxmoxを構築する事。
Pimoxというラズパイ用Proxmoxがあるので、構築してモニタ機に仕立てれば過半数を超えられる。
他にはProxmoxをゲストサーバとしてProxmox上に構築してモニター専用機にする方法も検討中。
Nested Virtualizationになるので動作は重くなるが、
クラスタ参加して過半数を超えられれば良いので動けばOK理論でやるかもしれない。
しかし、万が一クラスタが壊れてもゲストサーバは稼働し続けてくれる事が分かっているので、
一旦はこのまま構築を進めて自鯖弄りの糧にしようと思う。
進めている統廃合を先に完了させないと検証環境を維持できないので、時間を見つけて進めねば。