OpenStack のアフィニティおよびアンチアフィニティルール
次の項では、アフィニティポリシーとアンチアフィニティポリシーについて例を挙げて説明します。
グループ内アフィニティポリシー
同じ VM グループ内の VNF は、同じホストまたは同じアベイラビリティゾーンに展開できます。
グループ内アフィニティポリシーの例:
<vm_group>
<name>affinity-test-gp</name>
<placement>
<type>affinity</type>
<enforcement>strict</enforcement>
</placement>
...
タイプ zone-host は、同じホストまたは同じアベイラビリティゾーンに VNF を展開するために使用されます。
ゾーンまたはホストベースの配置
VNF は同じ VM グループ内にあり、同じホストまたは同じアベイラビリティゾーンに展開されます。host タグは同じホストに VM を展開するために使用され、zone タグは同じアベイラビリティゾーンに VM を展開するために使用されます。展開する前に、ホストが OpenStack に存在することを確認する必要があります。ESC は OpenStack 上の指定されたホストを検証します。zone-host タグは、配置のタイプを指定します。したがって、展開時にホストまたはゾーンが指定されていない場合、展開は失敗します。
重要 |
同じホストまたは同じアベイラビリティゾーンに VM を展開するために、ホストタグとゾーンタグの両方を指定することはできません。 |
ホスト配置の例:
<vm_group>
<name>zone-host-test-gp1</name>
<placement>
<type>zone_host</type>
<enforcement>strict</enforcement>
<host>my-server</host>
</placement>
...
ゾーン配置の例:
<vm_group>
<name>zone-host-test-gp2</name>
<placement>
<type>zone_host</type>
<enforcement>strict</enforcement>
<zone>dt-zone</zone>
</placement>
...
グループ内アンチアフィニティポリシー
同じ VM グループ内の VNF は、異なるホストに明示的に展開されます。たとえば、バックアップ VNF などです。
グループ内アンチアフィニティポリシーの例:
<vm_group>
<name>anti-affinity-test-gp</name>
<placement>
<type>anti_affinity</type>
<enforcement>strict</enforcement>
</placement>
...
グループ間アフィニティポリシー
同じ導入環境にあるが VM グループが異なる VNF は、同じホストに明示的に展開できます。例としては、VNF バンドルです。複数の VM グループは、vm_group_ref タグを追加し、VM グループ名を値として 指定することで、このポリシーに従うことができます。
(注) |
placement タグの下で 1 つ以上の vm_group_ref タグ、type タグ、および enforcement タグを使用できます。ホストやゾーンは指定できません。 |
グループ間アフィニティポリシーの例:
<deployments>
<deployment>
<name>intergroup-affinity-dep</name>
<policies>
<placement>
<target_vm_group_ref>affinity-test-gp1</target_vm_group_ref>
<type>affinity</type>
<vm_group_ref>affinity-test-gp2</vm_group_ref>
<enforcement>strict</enforcement>
</placement>
</policies>
…
グループ間アンチアフィニティポリシー
同じ導入環境にあるが VM グループが異なる VNF は、異なるホストに明示的に展開できます。たとえば、バックアップ VNF や高可用性 VNF などです。複数の VM グループは、vm_group_ref タグを追加し、VM グループ名を値として 指定することで、このポリシーに従うことができます。
(注) |
placement タグの下で使用できる <target_vm_group_ref> タグ、type タグ、および enforcement タグは 1 つだけです。ホストまたはゾーンは指定できません。複数の <vm_group_ref> タグを使用できますが、アンチアフィニティポリシーは、 <vm_group_ref> およびそれらの <target_vm_group_ref> の間にのみ適用されます。つまり、許容できる <target_vm_group_ref> からそれぞれが別のホストに展開されている限り、2 つ以上の <vm_group_ref> を同じホストに展開できます。 |
グループ間アンチアフィニティポリシーの例:
<deployments>
<deployment>
<name>intergroup-anti_affinity-dep</name>
<policies>
<placement>
<target_vm_group_ref>affinity-test-gp1</target_vm_group_ref>
<type>anti_affinity</type>
<vm_group_ref>affinity-test-gp2</vm_group_ref>
<enforcement>strict</enforcement>
</placement>
</policies>
…
マルチ VIM 展開では、配置ポリシーの VM グループは同じ VIM に属している必要があります。つまり、VIM コネクタは(VM グループのロケータタグの vim_id 属性で指定される)VM グループで同一である必要があります。VM グループ間のアフィニティポリシーおよびアンチアフィニティポリシーが異なる VIM 上にある場合、ESC は展開を拒否します。複数展開での VM の展開の詳細については、「複数の OpenStack VIM への VNF の展開」を参照してください。
配置グループタグがポリシーの下に追加されます。それぞれの <placement_group> には次が含まれます。
-
name:展開ごとに一意の名前。
-
type:アフィニティまたはアンチアフィニティ
-
enforcement:strict
-
vm_group:各 vm_group の内容は、同じ展開でリストされた VM グループ名である必要があります。
配置グループタグは、配置ポリシー内に配置されます。配置ポリシーは、ターゲット VM グループと VM グループメンバー間の関係を記述します。配置グループポリシーは、すべての VM グループメンバー間の相互関係を記述します。配置グループポリシーは、ターゲット VM グループには適用されません。
次に、データモデルを示します。
<policies>
<placement_group>
<name>placement-affinity-1</name>
<type>affinity</type>
<enforcement>strict</enforcement>
<vm_group>t1g1</vm_group>
<vm_group>t1g2</vm_group>
<vm_group>t1g7</vm_group>
</placement_group>
<placement_group>
<name>placement-affinity-2</name>
<type>affinity</type>
<enforcement>strict</enforcement>
<vm_group>t1g3</vm_group>
<vm_group>t1g4</vm_group>
</placement_group>
<placement_group>
<name>placement-affinity-3</name>
<type>affinity</type>
<enforcement>strict</enforcement>
<vm_group>t1g5</vm_group>
<vm_group>t1g6</vm_group>
</placement_group>
<placement_group>
<name>placement-anti-affinity-1</name>
<type>anti_affinity</type>
<enforcement>strict</enforcement>
<vm_group>t1g1</vm_group>
<vm_group>t1g3</vm_group>
<vm_group>t1g5</vm_group>
</placement_group>
</policies>
(注) |
ポリシーの下の新しい配置グループタグでは、<target_vm_group_ref> および <vm_group_ref> が <vm_group> に置き換えられます。参照ベースのアフィニティタグとアンチアフィニティタグは廃止されました。 配置グループポリシーは、グループ間アフィニティおよびアンチアフィニティポリシーにのみ適用されます。 グループ間アフィニティおよびアンチアフィニティポリシーでは、配置タグと配置グループタグの両方を同時に使用することはできません。 配置グループ名タグは、配置グループポリシーごとに一意である必要があります。 |
制限事項
単一の VM は、アフィニティポリシーとアンチアフィニティポリシーの 1 つのサーバグループでのみ使用できます。
展開間アンチアフィニティポリシー
展開間アンチアフィニティルールは、ホストの配置に関して異なる展開間の関係を定義します。展開間のアンチアフィニティは、1 つの展開の VM が、他の展開の他の VM と同じホストに配置されないように定義されます。
(注) |
展開間アンチアフィニティは、OpenStack でのみサポートされます。展開間アンチアフィニティは、ホストの配置(アフィニティまたはアンチアフィニティ)では機能しません。これは、後者が展開間アンチアフィニティルールよりも優先されるためです。 |
ESC データモデルでは、アンチアフィニティグループを使用して展開間アンチアフィニティが定義されます。アンチアフィニティグループのすべてのメンバー展開には、メンバー間にアンチアフィニティ関係があります。たとえば、3 つの展開 dep-1、dep-2、および dep-3 を持つ default-anti と呼ばれるアンチアフィニティグループでは、dep-1 は dep-2 および dep-3 展開に対するアンチアフィニティ、dep-2 は dep-1 および dep-3 展開に対するアンチアフィニティ、dep-3 は dep-1 および dep-2 展開に対するアンチアフィニティです。展開では、以下に示すように、関連するすべてのグループ名を参照することによって、アンチアフィニティグループのメンバーシップを指定します。
<deployment>
<name>VPC-dep</name>
<deployment_groups>
<anti_affinity_group>VPC-ANTI-AFFINITY</anti_affinity_group>
<anti_affinity_group>VPNAAS-ANTI-AFFINITY</anti_affinity_group>
</deployment_groups>
….
</deployment>
前述の例では、VPC-dep は 2 つのアンチアフィニティグループに属しています。これら 2 つのグループのいずれかを参照する他の展開は、VPC-dep とのアンチアフィニティ関係を持ちます。
展開間配置グループ
アンチアフィニティグループは、配置グループの例です。アンチアフィニティグループには、ESC に次のプロパティがあります。
-
配置グループを作成または削除する必要はありません。
-
配置グループは、最初は 1 つの展開と複数の展開で同時に参照できます。
-
配置ルールは、次のようなサービスの展開フェーズで適用されます。
-
初期展開
-
スケール アウト
-
VM グループ更新の追加
-
VM グループの最小スケーリング更新(VM を追加するための最小スケーリングの増加)
-
リカバリ
-
複数の VIM 展開は、展開間アンチアフィニティをサポートします。ただし、次の場合、ESC は展開を拒否します。
-
複数の VIM 展開(VM グループ内のロケータを使用)とデフォルトの VIM 展開(ロケータを使用しない)との間で展開間アンチアフィニティポリシーが定義されている場合。
-
展開間アンチアフィニティグループのすべての展開が同じ VIM(同じ vim_id)に展開されていない場合。複数の VIM 展開の詳細については、複数の OpenStack VIM への VNF の展開を参照してください。