この記事では、Proxmox VEのクラスタの構成要素であるCorosyncの基本的な要素であるVoteQuorumの基本、クラスターノード数と耐障害性の基本的な考え方、pvecmコマンドによるCorosyncパラメータの確認方法について解説します。
Corosyncとは
CorosyncはOSSのクラスタ通信フレームワークであり、Proxmoxのクラスタリングで使用され、ノード間の通信を管理します。これにより、クラスタ全体の整合性が保たれます。
VoteとQuorumとは
どちらもCorosyncを構成する要素です。CorosyncはVote(投票)とQuorum(定足数)よりクラスタ・ノードの正常性を判断します。
Voteは各ノードに割り当てられる投票権で、クラスタの意思決定に使用されます。Expected votes はクラスタに参加しているPVEノード数、Total Vote はクラスタに参加していて正常に動作しているノード数となります。
Quorumはクラスタが動作可能と見なされるための最小 Vote 数で、ProxmoxではExpected votesの半分を超える(過半数である)必要があります。
なお、Total VoteがQuorumを満たすことができなくなったPVEノードは強制的に一度停止し、読み取りモード(VM/CTを起動することができないモード)で再起動します。
Split-Brainとは
クラスタがネットワーク分割により正常と判断されているグループが複数発生してしまう事象です。これにより、同じVMが複数のノード上で起動したり、共有ストレージにアクセスすることによりデータの一貫性が損なわれる可能性があります。
Proxmox VEではSplit-Brainが発生しないようにQuorumの数を過半数に設定しています。そのため、Split-Brainになることはありませんが偶数クラスタではクラスタが半分ずつ分断された際に、分断されたそれぞれのグループが前述の読み取りモードにて再起動します。つまり、クラスタ全体が機能を停止します。そのため、奇数ノードクラスタが推奨されています。
クラスタノード数ごとの比較
PVEクラスタノード数ごとのExpected votes、Quorum、耐障害性を比較しています。
Expected votesの数はPVEクラスタノード数と同数になります。そしてQuorumはその過半数となります。
2ノードではQuorumが2となっているため、1ノード停止でもQuorumを下回ってしまいます。そのため、1ノードの停止も許容されません。
また4ノードでは3ノードからノード数が増えているがQuorumも同数増えているため、1ノード停止までしか許容されません。そのため耐障害性は向上していません。
前述のクラスタ停止のリスクに加えて、耐障害性の観点でも偶数ノードクラスタではなく、奇数ノードクラスタが推奨されています。
2ノード | 3ノード | 4ノード | 5ノード | |
---|---|---|---|---|
Expected votes | 2 | 3 | 4 | 5 |
Quorum | 2 | 2 | 3 | 3 |
耐障害性 | なし | 1ノード障害まで | 1ノード障害まで | 2ノード障害まで |
pvecm status コマンドの見方
Proxmox VEのGUIではCorosyncの詳細な状態を確認することはできません。CLIからpvecm statusコマンドを使うことで、詳細な状態を確認することができます。
正常な状態の例(Quorumを満たせている例)
今回着目すべきはVotequorum information セクションです。
Expected votes クラスタ全体のVote数、Total votesが現在のVote数、Quorumがクラスタ正常性に必要な数、Flagsが現在の状態を示します。
Total VoteがQuorumを満たしているため、FlagsもQuorate(Quorumを満たしている)となっています。
root@pve-handon1:~# pvecm status
Cluster information
-------------------
Name: pve-cluster
Config Version: 12
Transport: knet
Secure auth: on
Quorum information
------------------
Date: Tue Apr 1 00:22:59 2025
Quorum provider: corosync_votequorum
Nodes: 3
Node ID: 0x00000001
Ring ID: 1.23b
Quorate: Yes
Votequorum information
----------------------
Expected votes: 3
Highest expected: 3
Total votes: 3
Quorum: 2
Flags: Quorate
Membership information
----------------------
Nodeid Votes Name
0x00000001 1 192.168.2.41 (local)
0x00000002 1 192.168.2.42
0x00000003 1 192.168.2.43
root@pve-handon1:~#
異常な状態の例(Quorumを満たせていない例)
異常な状態の例(Quorumを満たせていない例)のpvecm status を示します。現在、3ノードクラスタのうち2ノードが停止している状態です。
Total Voteが1となり、Quorumを満たしていないため、FlagsからQuorateが消えています。また、Activity blocked となっており、クラスタとしての動作が停止している状態です。
root@pve-handon1:~# pvecm status
Cluster information
-------------------
Name: pve-cluster
Config Version: 12
Transport: knet
Secure auth: on
Quorum information
------------------
Date: Tue Apr 1 00:51:02 2025
Quorum provider: corosync_votequorum
Nodes: 1
Node ID: 0x00000001
Ring ID: 1.248
Quorate: No
Votequorum information
----------------------
Expected votes: 3
Highest expected: 3
Total votes: 1
Quorum: 2 Activity blocked
Flags:
Membership information
----------------------
Nodeid Votes Name
0x00000001 1 192.168.2.41 (local)
株式会社クラスアクトは2023年2月にリセラーパートナー契約を締結して以来、日本市場におけるProxmoxの先駆者的な存在として、豊富な経験と高い技術力を誇っております。 Proxmoxに関するご質問、サブスクリプションのご購入、システム開発のご相談など、お気軽にお声がけください。