1.3. ハイパーコンバージドノード上におけるリソース分離の設定

ハイパーコンバージドノード上で Ceph OSD サービスと Compute サービスを共存させると、お互いが同じホスト上に存在することを認識しないため、Red Hat Ceph Storage サービスと Compute サービス間でリソースの競合が発生するリスクがあります。リソースの競合が発生すると、サービスのパフォーマンスが低下し、ハイパーコンバージェンスの利点が打ち消される可能性があります。

Ceph サービスと Compute サービスの両方にリソースの分離を設定して、競合が発生を防ぐ必要があります。

手順

  1. (オプション) Compute 環境ファイルに以下のパラメーターを追加して、自動生成される Compute 設定を上書きします。

    parameter_defaults:
      ComputeHCIParameters:
        NovaReservedHostMemory: <ram>
        NovaCPUAllocationRatio: <ratio>
    • <ram> を、ハイパーコンバージドノード上で Ceph OSD サービスおよびインスタンスのオーバーヘッド用に確保する RAM 容量 (MB 単位) に置き換えます。
    • <ratio> を、インスタンスをデプロイするコンピュートノードを選択する際に Compute スケジューラーが使用すべき比率に置き換えます。

      自動生成される Compute 設定についての詳細は、Compute サービス用に確保する CPU およびメモリーリソースの自動生成プロセス を参照してください。

  2. Red Hat Ceph Storage 用にメモリーリソースを確保するには、/home/stack/templates/storage-container-config.yamlis_hcitrue に設定します。

    parameter_defaults:
      CephAnsibleExtraConfig:
        is_hci: true

    この設定により、ceph-ansible は Red Hat Ceph Storage 用のメモリーリソースを確保することができ、HCI デプロイメントの osd_memory_target パラメーター設定を自動的に調整することで、Ceph OSD によるメモリー増大を低減することができます。

    警告

    Red Hat では、ceph_osd_docker_memory_limit パラメーターを直接上書きすることは推奨しません。

    注記

    FileStore または BlueStore どちらのバックエンドが使用されていても、ceph-ansible 3.2 では、ceph_osd_docker_memory_limit は Ansible の検出したホストの最大メモリーに自動的に設定されます。

  3. (オプション) デフォルトでは、ceph-ansible は Ceph OSD ごとに 1 つの仮想 CPU を確保します。Ceph OSD ごとに複数の CPU が必要な場合は、以下の設定を /home/stack/templates/storage-container-config.yaml に追加します。

    parameter_defaults:
      CephAnsibleExtraConfig:
        ceph_osd_docker_cpu_limit: <cpu_limit>

    <cpu_limit> を各 Ceph OSD 用に確保する CPU 数に置き換えます。

    ハードウェアおよびワークロードに基づいて CPU リソースを調整する方法の詳細は、Red Hat Ceph Storage Hardware Selection Guide を参照してください。

  4. (オプション) 以下のパラメーターを Ceph 環境ファイルに追加することで、Ceph OSD の削除時に Red Hat Ceph Storage のバックフィルとリカバリーの操作の優先度を低くします。

    parameter_defaults:
      CephConfigOverrides:
        osd_recovery_op_priority: <priority_value>
        osd_recovery_max_active: <no_active_recovery_requests>
        osd_max_backfills: <max_no_backfills>
    • <priority_value> を、OSD クライアント OP の優先度と相対的に、リカバリーの操作の優先度に置き換えます。
    • <no_active_recovery_requests> を、1 OSD あたりの 1 回にアクティブなリカバリー要求の件数に置き換えます。
    • <max_no_backfills> を、単一の OSD との間で許容されるバックフィルの最大数に置き換えます。

      デフォルトの Red Hat Ceph Storage のバックフィルおよびリカバリーオプションに関する詳細は、Red Hat Ceph Storage のバックフィルとリカバリーの操作 を参照してください。

1.3.1. Compute サービス用に確保する CPU およびメモリーリソースの自動生成プロセス

director の提供するデフォルトのプラン環境ファイルにより、デプロイメント時のハイパーコンバージドノードのリソース制約が設定されます。このプラン環境ファイルは、OpenStack Workflow に以下のプロセスを実施するように指示します。

  1. ハードウェアノードの検査時に収集したハードウェアイントロスペクションデータを取得する。
  2. そのデータに基づき、ハイパーコンバージドノード上の Compute の最適な CPU およびメモリー割り当て負荷を算出する。
  3. これらの制約を設定し Compute に CPU/メモリーリソースを確保するのに必要なパラメーターを自動生成する。これらのパラメーターは、plan-environment-derived-params.yaml ファイルの hci_profile_config セクションで定義されます。
注記

Compute の reserved_host_memory および cpu_allocation_ratio の設定値を算出するのに、各ワークロードプロファイルの average_guest_memory_size_in_mb および average_guest_cpu_utilization_percentage パラメーターが使用されます。

Compute 環境ファイルに以下のパラメーターを追加して、自動生成される Compute 設定を上書きすることができます。

自動生成される nova.conf パラメーターCompute 環境ファイルのオーバーライド説明

reserved_host_memory

parameter_defaults:
  ComputeHCIParameters:
    NovaReservedHostMemory: 181000

ハイパーコンバージドノード上で、Ceph OSD サービスおよびゲストインスタンスごとのオーバーヘッドに確保する RAM 容量を設定します。

cpu_allocation_ratio

parameter_defaults:
  ComputeHCIParameters:
    NovaCPUAllocationRatio: 8.2

インスタンスをデプロイするコンピュートノードを選択する際に Compute スケジューラーが使用すべき比率を設定します。

これらのオーバーライドは、ComputeHCI ロールを使用するすべてのノード (つまり、すべてのハイパーコンバージドノード) に適用されます。NovaReservedHostMemory および NovaCPUAllocationRatio の最適値を手動で決定する方法についての詳細は、OpenStack Workflow Compute の CPU およびメモリーの計算 を参照してください。

ヒント

以下のスクリプトを使用して、ハイパーコンバージドノードの NovaReservedHostMemory および NovaCPUAllocationRatio の適切な基準値を算出することができます。

nova_mem_cpu_calc.py

1.3.2. Red Hat Ceph Storage のバックフィルとリカバリーの操作

Ceph OSD が削除されると、Red Hat Ceph Storage はバックフィルおよびリカバリー操作を使用してクラスターをリバランスします。Red Hat Ceph Storage は配置グループポリシーに従って、データのコピーを複数保管するためにこの操作を実行します。これらの操作は、システムリソースを使用します。Red Hat Ceph Storage クラスターに負荷がかかっている場合、リソースがバックフィルおよびリカバリーに回されるので、パフォーマンスが低下します。

OSD 削除時のこのパフォーマンスへの影響を軽減するには、バックフィルおよびリカバリー操作の優先度を低くすることができます。この手法のマイナス面は、データのレプリカがより少ない状態が長くなるので、データがリスクにさらされる可能性が若干高くなることです。

以下の表で説明するパラメーターが、バックフィルおよびリカバリー操作の優先度を設定するのに使用されます。

パラメーター説明デフォルト値

osd_recovery_op_priority

OSD クライアントの操作に関して、リカバリー操作の優先度を設定します。

3

osd_recovery_max_active

同時に要求できる 1 OSD あたりのアクティブなリカバリー要求の数を設定します。要求が増えるにつれてリカバリーは加速されますが、それらの要求によりクラスターにかかる負荷が増大します。レイテンシーを低くするには、このパラメーターを 1 に設定します。

3

osd_max_backfills

単一の OSD との間で許容されるバックフィルの最大数を設定します。

1