1500

2025,09,08

  • PROXMOX VE

Proxmox VE のHA設定、「Affinity Rules」について

Proxmox VE 9.0で導入された「Affinity Rules」は、従来のHAグループに代わるHA設定です。
この記事では、Affinity Rulesの概要、HAグループとの違い、代表的な設定例を紹介します。

Affinity Rulesとは?

Proxmox VE 9.0からHAマネージャ(ha-manager)で利用可能になった、HA管理対象リソース(VM/CT)の配置を制約するルールです。

Node Affinity Rules・Resource Affinity Rules という2種類のルールを持ち、従来のHAグループはNode Affinity Rulesに引き継がれます。
2種類のルールを活用することでHAグループよりも柔軟な可用性を提供することが可能です。
一方で、不適切な設定時にはリソースの想定外のノードでの起動や停止につながるため、注意が必要です。

Node Affinity Rulesとは?

従来のHAグループと同等の機能であり、HAリソースを特定ノードへ配置する設定です。
インプレースアップグレードを行った場合にはHAグループの設定がNode Affinity Rulesに引き継がれます。

設定項目は以下の通り。

テーブル
項目名 入力値 備考
HA Resources 対象リソースを指定
ノード 対象ノードを指定
プライオリティ 数値 数字が大きいノードで優先的に動作する。
同じ値に設定することも可能。
Strict 有効/無効 有効時は対象ノードのみでリソースが動作する。
無効時は対象ノード以外へのFallbackを行う。

HAグループのnofailback設定はHA全体のfailbak設定に移管されました。また、nostrictからstrictに変更されました。
各ルール選択時に編集ボタンはグレーアウトしており選択できませんが、ルールをダブルクリックすることで編集することが可能です。

Resource Affinity Rulesとは?

新規追加された機能です。
複数のHAリソース間の関係を定義し、Keep Together/positive(同一ノードにまとめる)または Keep Separate/negative(異なるノードへ分散)を指定します。
同一ノードで動作させたいVM(Web/AP/DBなど)をKeep Together/positiveに、別ノードで動作させたいVM(負荷分散を行いたい同一種別のVMなど)をKeep Separate/negativeに設定することで、想定の動作をさせることが可能です。

設定項目は以下の通り。

テーブル
項目名 入力値 備考
HA Resources 対象リソースを指定 2つ以上の指定が必要
Affinity Keep Together/Keep Separate

設定画面のポップアップではKeep Together/Keep Separateと表示されていますが、Affinity Rules の画面や設定ファイルではpositive/negativeと表記されます。
Node Affinity Rules 同様に、各ルール選択時に編集ボタンはグレーアウトしており選択できませんが、ルールをダブルクリックすることで編集することが可能です。

設定例

Node Affinity Rulesであれば、VMを実行するノードを指定できるため、より厳密な制御をすることが可能です。
Resource Affinity Rulesと同等の設定をすることも可能ですが、ノード数が多い場合にはクラスタノードの数だけNode Affinity Rulesを設定する必要があり、設計・設定のコストが高いケースもあり得ます。
そのようなケースでResource Affinity Rulesを利用するとリソースの配置ポリシーだけを設定するため、クラスタの規模に設計・設定が依存せず、優位と考えられます。

ただし、Resource Affinity Rules でどのノードに対してマイグレーションを行うかは、HAマネージャーによりノードの正常性・CPU/MEMなどのリソース割り当て可否により判断されます。
クラスタ内のすべてのノードが候補となり、実際のCPU/MEM利用率やワークロードなどは考慮されないため、注意が必要です。
なお、この動作はNode Affinity Rules、Resource Affinity Rulesを利用せずにリソースをHA対象にした場合と同じです。
詳細な仕様は以下もご参考ください。
High Availability Cluster Resource Scheduling

Node Affinity Rules で、複数VMを単一ノードへHAする場合。

画像のように設定しました。

この設定では正常時にノード3でリソースは動作します。
ノード3が停止した場合、ノード3のリソースはノード2へ移動します。
実際の環境では各ノードごとに優先度をずらしたNode Affinity Rulesを設定し、各ノードで動作するリソースを割り当てるケースが多いと考えらえます。

Node Affinity Rules で、複数VMを複数ノードへHAする場合。

画像のように設定しました。

正常時にノード3でリソースが動作する点は前項と同様です。
ノード3が停止した場合、ノード3のリソースはノード1、2で同じプライオリティのため、ノード1,2に分散してマイグレーションされます。
どのように分散するかはHAマネージャーにより評価されます。

Resource Affinity Rules で、複数VMを単一ノードへHAする場合。(Keep Together/positive)

画像のように設定しました。

正常時にどのノードで動作するかの指定はしていません。
どちらかのリソースに対して手動でのマイグレーションを行った場合は、他のリソースも併せてマイグレーションされます。
障害発生時にも同様に、同じノードに対してマイグレーションされます。
また、複数のResource Affinity Rulesの対象になっているリソースが同じノードで動作している場合、HAマネージャーにより評価され、マイグレーション先ノードが決定します。

Resource Affinity Rules で、複数VMを複数ノードで動作させる場合。(Keep Separate/negative)

画像のように設定しました。

画像のように設定しました。

前項同様に、正常時にどのノードで動作するかの指定はしていません。
手動でのマイグレーションを行い際に、同じルールの他リソースが動作しているノードへのマイグレーションはできません。
障害発生時は同じルールの他リソースが動作していないノードの中から、HAマネージャーにより評価され、マイグレーション先ノードが決定します。
クラスタ内ノード数と対象リソース数が同じ場合等、動作可能なノードがなければ、マイグレーションを行わずにリソースは停止します。この点はKeep Separate/negative利用時の注意点と言えるでしょう。

Node Affinity RulesとResource Affinity Rules を併用する場合。

画像のように設定しました。

このように、Node Affinity RulesとResource Affinity Rules は併用することが可能です。
ですが、併用した場合はNode Affinity Rulesで複数のノードを指定することはできません。
つまり、クラスタが正常な状態でリソースが動作するノードだけを指定可能な状態です。
またこの状態であればFailbackオプションが動作します。

この例ではKeep Together/positiveで設定していますが、Keep Separate/negativeでも同様の設定が可能です。

設定の競合・エラー

Node Affinity Rules と Resource Affinity Rules の設定に競合があった場合、警告により設定投入ができないようになっています。
ですが、各ノード・リソースの状況によっては競合によるエラーが発生する可能性があります。
競合とエラーの確認は以下に基づいて評価が行われます。

https://pve.proxmox.com/pve-docs/chapter-ha-manager.html#ha_manager_rule_conflicts


株式会社クラスアクトは2023年2月にリセラーパートナー契約を締結して以来、日本初の Gold Reseller Partnerとして、豊富な経験と高い技術力を誇っております。 Proxmoxに関するご質問、サブスクリプションのご購入、システム開発のご相談など、お気軽にお声がけください。

SHARE
  • facebook
  • X
  • LINE

クラスアクトでは、豊富な経験と高度な技術を持つ
専門チームによるサポートを提供しています。