catch-img

Proxmox VE HA構成における物理サーバ台数の注意点

本記事では、Proxmox VEでHA構成を組む際に注意すべき「物理サーバ台数」と Quorumの考え方について、実際の検証結果をもとに解説します。

設計や運用の考え方を誤ると、
「HA構成なのに、ある日突然クラスタ操作ができなくなる」
といった事態に陥ることがあります。

vSphereなど他の仮想化基盤に慣れている方ほど陥りやすいポイントでもあるため、これからProxmox VEでクラスタ構成を検討している方はぜひ参考にしてください。

▼ 製品ページを見てみる!

1. Proxmox VEクラスタの基本仕様

Proxmox VEでは、クラスタ構成を組むため最小3台の物理サーバが必要です。
最大構成については、2021年時点で50台規模まで運用している、という記載があります。
(参考:Cluster Manager

Proxmox VEクラスタでは、corosyncを用いてクラスタの正常性を判断しています。

  • corosyncの仕組み
  • 各物理サーバは「1票」をもつ
  • 正常稼働しているサーバが1票づつ投票
  • クラスタに所属しているサーバ群の半分を超えた得票(Quorum)が獲得できた場合にクラスタは正常動作してると判断

このように「過半数が稼働しているか」という点がProxmoxのHA構成の考え方のポイントとなります。

  • 最小構成例

corosyncの仕様により、最小でも3台の物理サーバが必要であることがわかりました。
しかし、かならずしもProxmox VEサーバを3台の構築は必要ありません。

  • Proxmox VEサーバ×2台
  • Linuxサーバ(corosync qdeviceプログラム起動)×1台

の計3台、という構成を取ることも可能です。
(※qdevice は Quorum 補助用の投票ノードであり、投票のみを行います。)

2. Proxmox VE で2台ではHA構成が組めない理由

さて、上記を踏まえて、仮にProxmox VEサーバが2台のみの場合の動作について考えてみましょう。

  • 正常稼働:稼働2台/全体2台 → 問題なし
  • 1台停止:稼働1台 / 全体2台 → 過半数に届かない

1台を停止させた状態では、クラスタは 「正常ではない」 と判断され、 仮想マシンの作成・起動などの操作が制限されます。このような所属しているサーバの過半数を要求するような動作はvSphere環境では発生しないものです。

vSphere環境の場合、クラスタに所属するサーバのうち稼働しているサーバ数が一時的に少なくなっても、メモリリソースが足りていればクラスタとしては特に問題なく稼働させることができます。

Proxmox VE環境の場合、クラスタに所属するサーバのうち過半数が正常に動作していないと、クラスタ全体の機能が止まるという点に注意が必要です。

3. Quorumを失った場合に起きること

3台構成のHAクラスタで、稼働サーバが過半数を割った状態を再現し、どのようなことが起こるかを実際に見てみましょう。
3台のproxmoxサーバのうち、2台を停止させます。
稼働サーバ数が過半数を割るとクラスタのステータスは下記のとおりです。

このような状態の時に仮想マシンを作成や起動を行おうとすると「cluster not ready - no quorum?」というエラーとなります。

この状態では、

  • 仮想マシンの新規作成
  • 仮想マシンの起動・停止

といった操作がブロックされ、HAクラスタとして事実上利用できなくなります
通常時にサーバを1台止める程度であれば問題は発生することは少ないでしょう。
複数台のサーバを同時に止めたい場合に注意が必要となります。

  • 物理4台構成は特に注意!

構成で特に注意しなければならないのは、物理サーバ4台構成で組む場合です。
Proxmox VEサーバをパッチ適用などを行う場合に2台同時に再起動してしまうと、サーバ台数が過半数を割ることになり、Proxmox VEクラスタ上での操作が制限されることになります。

4. 「使っていないから停止」は通用しない!?

例えば、物理サーバ10台でHAクラスタ構築して運用を開始したとします。
しかし、当面は物理サーバ4台分で十分な仮想マシンしか起動しないので、サーバ5台は止めておこう、とすると問題が発生します。

クラスタに10台所属している場合、6台以上のサーバが正常稼働してる必要があります。このため、サーバリソースが4台分で足りるような状況であっても、

  • 最低6台のサーバが常時稼働
  • メンテナンスや障害を考慮すると7台以上のサーバが稼働

といった運用が求められます。

ただし、上記はコマンド操作を行わない、GUIのみを使って管理を行う場合の制限となります。コマンド操作を行うことで、稼働中のサーバに対して正常稼働に必要な投票数を一時的に変更することで回避することができます。

次項では、コマンド操作での具体的な回避方法と実際の動作を具体的にご紹介します。

5. 一時的な回避策:pvecm expected コマンド

ここでは、3台のHA構成で2台をメンテナンスで同時に停止させなければならない、というシナリオで回避策を確認してみましょう。

  • 正常時:3台稼働中の状況

3台稼働時点でのGUIのステータスは下記のとおりです。

"pvecm status" コマンドでステータスを確認してみましょう。
過半数と判断されるための「Quorum」の値は「Expected votesの値」を基準に算出されます。現在は「3」であるためQuorumが「2」となります。
「Total votes」の値が「Quorum」の値より大きいため正常稼働と判断されています。

root@proxmox1:~# pvecm status

Cluster information

-------------------

Name:             pvecluster

Config Version:   3

Transport:        knet

Secure auth:      on

Quorum information

------------------

Date:             Thu Jan  8 17:07:38 2026

Quorum provider:  corosync_votequorum

Nodes:            3

Node ID:          0x00000001

Ring ID:          1.a2

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.54 (local)

0x00000002          1 192.168.2.55

0x00000003          1 192.168.2.56

root@proxmox1:~#

  • 異常発生:1台稼働、2台停止させた場合の状況

この状態で、実際に2台を停止させてみましょう。
GUIのステータス画面は下記のとおりです。

コマンドでのステータスを確認します。
Total votes:1に対して、Quorum:2となっているため、必要数を下回ってしまったため「Activity blocked」となり、問題が発生してる、と判断されています。

root@proxmox1:~# pvecm status

Cluster information

-------------------

Name:             pvecluster

Config Version:   3

Transport:        knet

Secure auth:      on

Quorum information

------------------

Date:             Thu Jan  8 17:12:38 2026

Quorum provider:  corosync_votequorum

Nodes:            1

Node ID:          0x00000001

Ring ID:          1.aa

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.54 (local)

root@proxmox1:~#

  • 回避手順: ”pvecm expected” の実行

問題発生のステータスを回避します。
"pvecm expected" コマンドは『Expected votes(予想投票数)』を一時的に手動変更するコマンドです。
今回の回避手順では、1台のみが稼働している状況のため、Expected votesを「1」と指定します。

※本回避手順はCLIからのみ実施可能です。GUI操作での実行はできません。

root@proxmox1:~# pvecm expected 1

コマンド実行後のGUIステータスを確認します。
GUI上の表示は特に変わりません。これはあくまでも一時的な回避という扱いとなっているため、GUI上ではのステータスとなっていることにご注意ください。

しかし、コマンドでステータスを確認すると出力内容に変化があります。
"pvecm expected 1" を実行したことにより、「Expected votes」が「1」と設定され、この変化に伴い必要な「Quorum」の値も「1」になりました。
「Total votes」の値は「Quorum」の値を下回る状況が回避されています。
これにより、必要な物理サーバの稼働数が満たされている、と判断され、Proxmox VEクラスタとして稼働させることができる状態となっています。

※回避策実施後は、CLI及びGUI両方からクラスタ操作が可能となります。

root@proxmox1:~# pvecm status

Cluster information

-------------------

Name:             pvecluster

Config Version:   3

Transport:        knet

Secure auth:      on

Quorum information

------------------

Date:             Thu Jan  8 17:13:02 2026

Quorum provider:  corosync_votequorum

Nodes:            1

Node ID:          0x00000001

Ring ID:          1.aa

Quorate:          Yes

Votequorum information

----------------------

Expected votes:   1

Highest expected: 1

Total votes:      1

Quorum:           1

Flags:            Quorate

Membership information

----------------------

    Nodeid      Votes Name

0x00000001          1 192.168.2.54 (local)

root@proxmox1:~#

  • 復旧①:2台稼働、1台停止

ここからは、物理サーバを再起動し、正常な状態へ戻していきます。
まずは1台を再起動し、「1台起動、2台停止」→「2台起動、1台停止」の状況にします。この時のステータスは下記のとおりです。
起動サーバが増えると、自動的にExpected votes」と「Quorum」の値が増加したことが確認できます。

root@proxmox1:~# pvecm status

Cluster information

-------------------

Name:             pvecluster

Config Version:   3

Transport:        knet

Secure auth:      on

Quorum information

------------------

Date:             Thu Jan  8 17:22:39 2026

Quorum provider:  corosync_votequorum

Nodes:            2

Node ID:          0x00000001

Ring ID:          1.af

Quorate:          Yes

Votequorum information

----------------------

Expected votes:   2

Highest expected: 2

Total votes:      2

Quorum:           2

Flags:            Quorate

Membership information

----------------------

    Nodeid      Votes Name

0x00000001          1 192.168.2.54 (local)

0x00000002          1 192.168.2.55

root@proxmox1:~#

  • 復旧②:3台稼働

残りの1台も再起動をします。これですべての物理サーバが正常稼働する状況に復旧しました。この時のステータスは下記のとおりです。

root@proxmox1:~# pvecm status

Cluster information

-------------------

Name:             pvecluster

Config Version:   3

Transport:        knet

Secure auth:      on

Quorum information

------------------

Date:             Thu Jan  8 17:23:12 2026

Quorum provider:  corosync_votequorum

Nodes:            3

Node ID:          0x00000001

Ring ID:          1.b3

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.54 (local)

0x00000002          1 192.168.2.55

0x00000003          1 192.168.2.56

root@proxmox1:~#

6. まとめ:設計段階が肝心、台数の決定は慎重に!

Proxmox VEのHA構成では、「過半数が稼働しているか」でシステムが正常であるかどうかを決める、という特徴がありました。
これを踏まえ、設計段階から下記の内容を予め検討の上、構成台数を決定することをお勧めします。

  • 同時に停止・再起動できる物理サーバの最大数
  • メンテナンス時の運用フロー
  • 物理サーバの最小稼働数を割らない運用

vShpereと同じ感覚で設計すると、「動いているのに操作できない!」という状況に陥る可能性があります。Proxmox VEならではの特徴を理解したうえで、無理のないHA構成を設計することが重要です。

本記事は検証環境での結果に基づいています。本番環境への導入時は、十分な検証を行ってください。

▼ 製品ページを見てみる!

デジタルテクノロジー 技術検証チーム
デジタルテクノロジー 技術検証チーム
当社取り扱い製品の動作検証や技術的知見をまとめ、皆さまの業務に役立つ情報を発信します。

CONTACT

中堅・中小企業様のITインフラの課題は
私たちデジタルテクノロジーにご相談ください

お困りごとは小さな点でも
お気軽にご相談ください

お役立ち資料は
無料でダウンロード頂けます

お電話でのお問い合わせはこちら

平日9時~17時

人気記事ランキング

タグ