第4章 ハイパーコンバージドノード上におけるリソース分離の設定
Red Hat OpenStack Platform の HCI 実装では、director は Ceph OSD サービスと Compute サービスを同じ場所に配置してハイパーコンバージドノードを作成します。ただし、この配置をさらに調整しなければ、Ceph サービスと Compute サービスは、同じホスト上でお互いの存在を認識しないため、それらのサービス間で リソースの競合 が発生するリスクがあります。リソースの競合が発生すると、サービスのパフォーマンスが低下する可能性があり、その場合には、ハイパーコンバージェンスによって提供されるメリットが相殺されてしまいます。
競合が発生しないようにするには、Ceph サービスと Compute サービスの両方にリソースの分離を設定する必要があります。以下のサブセクションでは、その方法について説明します。
4.1. Compute 用の CPU とメモリーリソースの確保
デフォルトでは、Compute サービスのパラメーターは Ceph OSD サービスが同じノード上に配置されていることは考慮に入れません。この問題に対処して、安定を維持し、ホスト可能なインスタンス数を最大化するには、ハイパーコンバージドノードを調整する必要があります。そのためには、ハイパーコンバージドノード上の Compute サービスにリソースの制約を設定する必要があります。これは、プラン環境ファイル で設定できます。
プラン環境ファイルは、director が OpenStack Workflow (Mistral) サービスを介して実行可能な ワークフロー を定義します。director は、ハイパーコンバージドノード上のリソース制約を設定するための専用のデフォルトのプラン環境ファイルも提供しています。
/usr/share/openstack-tripleo-heat-templates/plan-samples/plan-environment-derived-params.yaml
-p パラメーターを使用して (openstack overcloud deploy コマンドに対して)、このプラン環境ファイルをデプロイメント中に呼び出します。このプラン環境ファイルは、OpenStack Workflow に以下の操作を指示します。
- ハードウェアイントロスペクションデータの取得 (「ノードのハードウェアの検査」で収集されるデータ)
- そのデータに基づいた、ハイパーコンバージドノード上の Compute に最適な CPU とメモリーの制約の算出
- それらの制約を設定するために必要なパラメーターの自動生成
~/plan-samples/plan-environment-derived-params.yaml プラン環境ファイルは、hci_profile_config 下で定義されている CPU およびメモリーの割り当てのワークロード プロファイル をいくつか定義します。hci_profile パラメーターは、有効化されるワークロードプロファイルを設定します。たとえば、NFV を使用している場合には、hci_profile: nfv_default を設定します。
同じ構文を使用して、プラン環境ファイルでカスタムのプロファイルを設定することも可能です。my_workload という名前の新規プロファイルを定義する場合の例を以下に示します。
各ワークロードプロファイル内の average_guest_memory_size_in_mb および average_guest_cpu_utilization_percentage パラメーターは、Compute の reserved_host_memory と cpu_allocation_ratio の設定値を算出します。これらの値は、Red Hat の推奨値に基づいて計算されます。これは、以前のリリースの手動での計算と同様です。
4.1.1. メモリーまたは CPU 割り当てに計算された設定値のオーバーライド
別の環境ファイルを使用して、OpenStack Workflow によって自動的に定義される Compute の設定をオーバーライドすることができます。これは、reserved_host_memory または cpu_allocation_ratio のみをオーバーライドして、それ以外は OpenStack Workflow に定義させる場合に役立ちます。以下のスニペットを考慮してください。
parameter_defaults:
ComputeHCIParameters:
NovaReservedHostMemory: 181000 # 1
ComputeHCIExtraConfig:
nova::cpu_allocation_ratio: 8.2 # 2
ComputeHCIParameters および ComputeHCIExtraConfig のフックは、それらのネストされたパラメーターを ComputeHCI ロールを使用する全ノード (全ハイパーコンバージドノード) に適用します。 NovaReservedHostMemory および nova::cpu_allocation_ratio: の最適な値を手動で決定する方法に関する詳しい情報は、「Compute の CPU およびメモリーの計算」を参照してください。
4.2. Ceph のバックフィルおよびリカバリーの操作
Ceph OSD が削除されると、Ceph は バックフィル と リカバリー の操作を使用して、クラスターをリバランスします。Ceph は、配置グループポリシーに従って複数のコピーを保管するためにこの操作を実行します。これらの操作は、システムリソースを使用します。Ceph クラスターに負荷がかかっている場合には、リソースがバックフィルとリカバリーに回されるので、パフォーマンスが低下します。
OSD の削除時にこのようなパフォーマンスの影響を軽減するには、バックフィルとリカバリーの操作の優先度を低くすることができます。この方法を使用すると、データのレプリカがより少ない状態が長くなるので、データはより高いリスクにさらされることにます。
バックフィルとリカバリーの操作の優先度を設定するには、以下の内容を記述した ceph-backfill-recovery.yaml という名前の環境ファイルを ~/templates に追加します。
parameter_defaults:
CephAnsibleExtraConfig:
osd_recovery_op_priority: 3 # 1
osd_recovery_max_active: 3 # 2
osd_max_backfills: 1 # 3
サンプルで使用している値は、現在のデフォルト値です。異なる値を使用する予定がなければ、ceph-backfill-recovery.yaml デプロイメントに追加する必要はありません。
4.3. Ceph 用のメモリーと CPU リソースの確保
ハイパーコンバージドノードでは、コンテナー化された各 OSD は、docker run コマンドの --memory と --cpu-quota のオプションを使用して、RAM の GB と vCPU を制限する必要があります。storage-container-config.yaml ファイルを編集して、値をオプションに渡すことができます。以下の例は、3 GB の RAM と、1 OSD あたり 1 vCPU を確保します。
parameter_defaults:
CephAnsibleExtraConfig:
ceph_osd_docker_memory_limit: 3g
ceph_osd_docker_cpu_limit: 1
上記の設定を /home/stack/templates/storage-container-config.yaml に保存します。
この例で使用されている値は、平均的なハイパーコンバージドノードに適したデフォルト値です。ハードウェアとワークロードによっては、別の値が適切な場合があります。詳しくは、『Red Hat Ceph Storage Hardware Guide』を参照してください。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.