7.6. ホストアグリゲートの作成と管理
クラウド管理者は、パフォーマンスおよび管理目的で、コンピュートのデプロイメントを論理グループに分割することができます。Red Hat OpenStack Platform (RHOSP) では、論理グループへの分割に以下のメカニズムを使用することができます。
- ホストアグリゲート
ホストアグリゲートとは、ハードウェアやパフォーマンス特性などの属性に基づいてコンピュートノードを論理的なユニットにグループ化したものです。コンピュートノードを 1 つまたは複数のホストアグリゲートに割り当てることができます。
ホストアグリゲートでメタデータを設定してフレーバーおよびイメージをホストアグリゲートにマッピングし、続いてフレーバーの追加スペックまたはイメージのメタデータ属性をホストアグリゲートのメタデータにマッチングすることができます。必要なフィルターが有効な場合、Compute スケジューラーはこのメタデータを使用してインスタンスのスケジューリングを行うことができます。ホストアグリゲートで指定するメタデータは、ホストの使用をフレーバーまたはイメージで指定するメタデータと同じメタデータのインスタンスに限定します。
ホストアグリゲートのメタデータで
xxx_weight_multiplier
設定オプションを定義することで、それぞれのホストアグリゲートに重みの乗数を設定することができます。ホストアグリゲートを使用して、負荷分散の処理、物理的な分離または冗長性の適用、共通の属性を持つサーバーのグループ化、ハードウェアのクラス分け等を行うことができます。
ホストアグリゲートを作成する際に、ゾーン名を指定することができます。この名前は、クラウドユーザーが選択することのできるアベイラビリティーゾーンとして提示されます。
- アベイラビリティーゾーン
アベイラビリティーゾーンは、ホストアグリゲートのクラウドユーザー側のビューです。クラウドユーザーは、アベイラビリティーゾーンに属するコンピュートノードやアベイラビリティーゾーンのメタデータを把握することはできません。クラウドユーザーは、アベイラビリティーゾーンの名前を見ることしかできません。
それぞれのコンピュートノードは、1 つのアベイラビリティーゾーンにしか割り当てることができません。デフォルトのアベイラビリティーゾーンを設定することができます。クラウドユーザーがゾーンを指定しない場合、インスタンスはこのアベイラビリティーゾーンにスケジューリングされます。特定の機能を持つアベイラビリティーゾーンを使用するように、クラウドユーザーに指示することができます。
7.6.1. ホストアグリゲートでのスケジューリングの有効化
特定の属性を持つホストアグリゲートにインスタンスをスケジュールするには、Compute スケジューラーの設定を更新し、ホストアグリゲートのメタデータに基づく絞り込みを有効にします。
手順
- Compute 環境ファイルを開きます。
NovaSchedulerEnabledFilters
パラメーターにまだ以下の値がなければ、値を追加します。AggregateInstanceExtraSpecsFilter
: フレーバーの追加スペックに一致するホストアグリゲートメタデータでコンピュートノードを絞り込むには、この値を追加します。注記このフィルターが想定どおりに機能するには、
extra_specs
キーにaggregate_instance_extra_specs:
名前空間の接頭辞を指定して、フレーバーの追加スペックのスコープを定義する必要があります。AggregateImagePropertiesIsolation
: イメージメタデータ属性に一致するホストアグリゲートメタデータでコンピュートノードを絞り込むには、この値を追加します。注記イメージメタデータ属性を使用してホストアグリゲートのメタデータを絞り込むには、ホストアグリゲートメタデータキーが有効なイメージメタデータ属性と一致する必要があります。有効なイメージメタデータ属性に関する情報は、イメージ設定パラメーター を参照してください。
AvailabilityZoneFilter
: インスタンスの起動時にアベイラビリティーゾーンで絞り込むには、この値を追加します。注記Compute スケジューラーサービスのフィルター
AvailabilityZoneFilter
を使用する代わりに、Placement サービスを使用してアベイラビリティーゾーンの要求を処理することができます。詳細は、Filtering by availability zone using the Placement service を参照してください。
- 更新内容を Compute 環境ファイルに保存します。
その他の環境ファイルと共に Compute 環境ファイルをスタックに追加して、オーバークラウドをデプロイします。
openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml
Copy to Clipboard Copied!
7.6.2. ホストアグリゲートの作成
クラウド管理者は、ホストアグリゲートを必要なだけ作成することができます。
手順
ホストアグリゲートを作成するには、以下のコマンドを入力します。
openstack aggregate create <aggregate_name>
(overcloud)# openstack aggregate create <aggregate_name>
Copy to Clipboard Copied! <aggregate_name>
をホストアグリゲートに割り当てる名前に置き換えてください。ホストアグリゲートにメタデータを追加します。
openstack aggregate set \ --property <key=value> \ --property <key=value> \ <aggregate_name>
(overcloud)# openstack aggregate set \ --property <key=value> \ --property <key=value> \ <aggregate_name>
Copy to Clipboard Copied! -
<key=value>
はメタデータのキー/値のペアに置き換えてください。AggregateInstanceExtraSpecsFilter
フィルターを使用している場合、キーは任意の文字列 (例:ssd=true
) にすることができます。AggregateImagePropertiesIsolation
フィルターを使用している場合は、キーは有効なイメージメタデータ属性と一致する必要があります。有効なイメージメタデータプロパティーの詳細は、イメージ設定パラメーター を参照してください。 -
<aggregate_name>
をホストアグリゲートの名前に置き換えてください。
-
コンピュートノードをホストアグリゲートに追加します。
openstack aggregate add host \ <aggregate_name> \ <host_name>
(overcloud)# openstack aggregate add host \ <aggregate_name> \ <host_name>
Copy to Clipboard Copied! -
<aggregate_name>
は、コンピュートノードを追加するホストアグリゲートの名前に置き換えます。 -
<host_name>
は、ホストアグリゲートに追加するコンピュートノードの名前に置き換えてください。
-
ホストアグリゲート用のフレーバーまたはイメージを作成します。
フレーバーを作成します。
openstack flavor create \ --ram <size_mb> \ --disk <size_gb> \ --vcpus <no_reserved_vcpus> \ host-agg-flavor
(overcloud)$ openstack flavor create \ --ram <size_mb> \ --disk <size_gb> \ --vcpus <no_reserved_vcpus> \ host-agg-flavor
Copy to Clipboard Copied! イメージの作成
openstack image create host-agg-image
(overcloud)$ openstack image create host-agg-image
Copy to Clipboard Copied!
フレーバーまたはイメージに、ホストアグリゲートのキー/値のペアに一致するキー/値のペアを 1 つまたは複数設定します。
フレーバーにキー/値のペアを設定するには、スコープ
aggregate_instance_extra_specs
を使用します。openstack flavor set \ --property aggregate_instance_extra_specs:ssd=true \ host-agg-flavor
(overcloud)# openstack flavor set \ --property aggregate_instance_extra_specs:ssd=true \ host-agg-flavor
Copy to Clipboard Copied! イメージにキー/値のペアを設定するには、有効なイメージメタデータ属性をキーとして使用します。
openstack image set \ --property os_type=linux \ host-agg-image
(overcloud)# openstack image set \ --property os_type=linux \ host-agg-image
Copy to Clipboard Copied!
7.6.3. アベイラビリティーゾーンの作成
クラウド管理者は、クラウドユーザーがインスタンスを作成する際に選択できるアベイラビリティーゾーンを作成することができます。
手順
アベイラビリティーゾーンを作成するには、新しいアベイラビリティーゾーンホストアグリゲートを作成するか、既存のホストアグリゲートをアベイラビリティーゾーンにすることができます。
新しいアベイラビリティーゾーンホストアグリゲートを作成するには、以下のコマンドを入力します。
openstack aggregate create \ --zone <availability_zone> \ <aggregate_name>
(overcloud)# openstack aggregate create \ --zone <availability_zone> \ <aggregate_name>
Copy to Clipboard Copied! -
<availability_zone>
をアベイラビリティーゾーンに割り当てる名前に置き換えてください。 -
<aggregate_name>
をホストアグリゲートに割り当てる名前に置き換えてください。
-
既存のホストアグリゲートをアベイラビリティーゾーンにするには、以下のコマンドを入力します。
openstack aggregate set --zone <availability_zone> \ <aggregate_name>
(overcloud)# openstack aggregate set --zone <availability_zone> \ <aggregate_name>
Copy to Clipboard Copied! -
<availability_zone>
をアベイラビリティーゾーンに割り当てる名前に置き換えてください。 -
<aggregate_name>
をホストアグリゲートの名前に置き換えてください。
-
オプション: アベイラビリティーゾーンにメタデータを追加します。
openstack aggregate set --property <key=value> \ <aggregate_name>
(overcloud)# openstack aggregate set --property <key=value> \ <aggregate_name>
Copy to Clipboard Copied! -
<key=value>
をメタデータのキー/値のペアに置き換えてください。キー/値の属性は、必要なだけ追加することができます。 -
<aggregate_name>
をアベイラビリティーゾーンホストアグリゲートの名前に置き換えてください。
-
コンピュートノードをアベイラビリティーゾーンホストアグリゲートに追加します。
openstack aggregate add host <aggregate_name> \ <host_name>
(overcloud)# openstack aggregate add host <aggregate_name> \ <host_name>
Copy to Clipboard Copied! -
<aggregate_name>
は、コンピュートノードを追加するアベイラビリティーゾーンホストアグリゲートの名前に置き換えてください。 -
<host_name>
は、アベイラビリティーゾーンに追加するコンピュートノードの名前に置き換えてください。
-
7.6.4. ホストアグリゲートの削除
ホストアグリゲートを削除するには、まずホストアグリゲートからすべてのコンピュートノードを削除します。
手順
ホストアグリゲートに割り当てられたすべてのコンピュートノードのリストを表示するには、以下のコマンドを入力します。
openstack aggregate show <aggregate_name>
(overcloud)# openstack aggregate show <aggregate_name>
Copy to Clipboard Copied! ホストアグリゲートから割り当てられたすべてのコンピュートノードを削除するには、それぞれのコンピュートノードで以下のコマンドを入力します。
openstack aggregate remove host <aggregate_name> \ <host_name>
(overcloud)# openstack aggregate remove host <aggregate_name> \ <host_name>
Copy to Clipboard Copied! -
<aggregate_name>
は、コンピュートノードを削除するホストアグリゲートの名前に置き換えてください。 -
<host_name>
は、ホストアグリゲートから削除するコンピュートノードの名前に置き換えてください。
-
ホストアグリゲートからすべてのコンピュートノードを削除したら、以下のコマンドを入力してホストアグリゲートを削除します。
openstack aggregate delete <aggregate_name>
(overcloud)# openstack aggregate delete <aggregate_name>
Copy to Clipboard Copied!
7.6.5. プロジェクト分離ホストアグリゲートの作成
特定のプロジェクトでのみ利用可能なホストアグリゲートを作成することができます。ホストアグリゲートに割り当てたプロジェクトだけが、ホストアグリゲートでインスタンスを起動することができます。
プロジェクト分離では、Placement サービスを使用して各プロジェクトのホストアグリゲートを絞り込みます。このプロセスは、AggregateMultiTenancyIsolation
フィルターの機能に優先します。したがって、AggregateMultiTenancyIsolation
フィルターを使用する必要はありません。
手順
- Compute 環境ファイルを開きます。
-
プロジェクト分離ホストアグリゲートでプロジェクトインスタンスをスケジュールするには、Compute 環境ファイルの
NovaSchedulerLimitTenantsToPlacementAggregate
パラメーターをTrue
に設定します。 オプション: ホストアグリゲートに割り当てたプロジェクトだけがクラウド上でインスタンスを作成できるようにするには、
NovaSchedulerPlacementAggregateRequiredForTenants
パラメーターをTrue
に設定します。注記NovaSchedulerPlacementAggregateRequiredForTenants
のデフォルト値はFalse
です。このパラメーターがFalse
の場合、ホストアグリゲートに割り当てられていないプロジェクトは、任意のホストアグリゲートでインスタンスを作成することができます。- 更新内容を Compute 環境ファイルに保存します。
その他の環境ファイルと共に Compute 環境ファイルをスタックに追加して、オーバークラウドをデプロイします。
openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml \
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e /home/stack/templates/<compute_environment_file>.yaml \
Copy to Clipboard Copied! - ホストアグリゲートを作成します。
プロジェクト ID のリストを取得します。
openstack project list
(overcloud)# openstack project list
Copy to Clipboard Copied! filter_tenant_id<suffix>
メタデータキーを使用して、プロジェクトをホストアグリゲートに割り当てます。openstack aggregate set \ --property filter_tenant_id<ID0>=<project_id0> \ --property filter_tenant_id<ID1>=<project_id1> \ ...
(overcloud)# openstack aggregate set \ --property filter_tenant_id<ID0>=<project_id0> \ --property filter_tenant_id<ID1>=<project_id1> \ ... --property filter_tenant_id<IDn>=<project_idn> \ <aggregate_name>
Copy to Clipboard Copied! -
<ID0>
、<ID1>
、および<IDn>
までのすべての ID を、作成する各プロジェクトフィルターの一意の値に置き換えてください。 -
<project_id0>
、<project_id1>
、および<project_idn>
までのすべてのプロジェクト ID を、ホストアグリゲートに割り当てる各プロジェクトの ID に置き換えてください。 <aggregate_name>
をプロジェクト分離ホストアグリゲートの名前に置き換えてください。たとえば、プロジェクト
78f1
、9d3t
、およびaa29
をホストアグリゲートproject-isolated-aggregate
に割り当てるには、以下の構文を使用します。openstack aggregate set \ --property filter_tenant_id0=78f1 \ --property filter_tenant_id1=9d3t \ --property filter_tenant_id2=aa29 \ project-isolated-aggregate
(overcloud)# openstack aggregate set \ --property filter_tenant_id0=78f1 \ --property filter_tenant_id1=9d3t \ --property filter_tenant_id2=aa29 \ project-isolated-aggregate
Copy to Clipboard Copied! ヒントfilter_tenant_id
メタデータキーの接尾辞を省略することで、単一の特定プロジェクトでのみ利用可能なホストアグリゲートを作成することができます。openstack aggregate set \ --property filter_tenant_id=78f1 \ single-project-isolated-aggregate
(overcloud)# openstack aggregate set \ --property filter_tenant_id=78f1 \ single-project-isolated-aggregate
Copy to Clipboard Copied!
-
関連情報
- ホストアグリゲートの作成の詳細は、Creating and managing host aggregates を参照してください。