アフィニティルール【affinity rule】

概要

アフィニティルールとは、仮想化環境において、仮想マシンなどの配置先を特定の物理サーバやリソースに関連付けて制御する設定のこと。仮想マシンコンテナなどのワークロードを特定のホストや他のワークロードと同じ場所に配置する、あるいは逆に離れた場所に配置するよう制御することができる。

このルールは仮想化基盤において、複数の物理サーバ上に配置されるワークロードの配置方針を定義するために用いられる。特定のワークロード同士を同一ホスト上で実行するよう指定する「アフィニティ」は通信頻度の高いワークロード同士の遅延を抑える目的で設定される。逆に、同一ホストに配置しないよう制限する「アンチアフィニティ」は、障害発生時の影響範囲を分散させるために用いられる。

アフィニティルールはワークロードの自動配置やライブマイグレーションの動作にも影響を与える。リソースの使用状況や負荷分散の観点からワークロードの移動が行われる際にも、設定されたルールが優先されるため、配置の自由度は制約される。設定内容によっては特定のホストに負荷が集中する場合や、移動可能な範囲が限定される場合があるため、性能要件や可用性要件を踏まえて調整が行われる。

vSphereのアフィニティルール

VMware vSphereでは、仮想マシンのアフィニティルールをvCenter Serverで設定できる。「VM-VMアフィニティルール」は複数の仮想マシンを常に同一ホスト上で動作させる設定で、仮想マシン間の通信遅延を最小化したい場合などに使われる。「VM-VMアンチアフィニティルール」は特定の仮想マシン同士を異なるホストに配置する設定で、冗長構成サーバーを物理的に分離して単一障害点を避ける目的で使われる。

Kubernetesのアフィニティルール

Kubernetesでは、PodのアフィニティルールをPod specのaffinityフィールドで定義する。「podAffinity」は特定のラベルを持つPodと同じノードまたはゾーンに配置する設定で、頻繁に通信するマイクロサービス同士を近くに置く用途に使われる。「podAntiAffinity」はその逆で、同じDeploymentPodを複数のノードに分散させて可用性を高める構成に使われる。ノード自体の属性(ラベル)を条件にする「nodeAffinity」も用意されており、特定のGPU搭載ノードや特定リージョンノードにのみPodを配置するといった制御が可能だ。これらのルールは必須条件(required)と優先条件(preferred)の2段階で設定できる。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。