第6章 director を使用した Ceph Storage クラスターのさまざまなワークロード用のパフォーマンス層の定義
Red Hat OpenStack Platform (RHOSP) director を使用して、異なる Red Hat Ceph Storage パフォーマンス層をデプロイすることができます。Ceph CRUSH ルールと CephPools director パラメーターを組み合わせ、デバイスクラス機能を使用して異なる層を構築して、異なるパフォーマンス要件のあるワークロードに対応することができます。たとえば、通常のワークロード用に HDD クラスと、高パフォーマンスのロードのために SSD 上でのみデータを分散する SSD クラスを定義できます。このシナリオでは、新規の Block Storage ボリュームを作成する場合には、HDD または SSD のいずれかのパフォーマンス層を選択することができます。
- 警告
-
既存の環境でパフォーマンス層を定義すると、Ceph クラスター内で大量のデータが移動する場合があります。スタックの更新時に director がトリガーする
ceph-ansibleには、プールがクラスターにすでに定義されているかどうかや、データが含まれるかどうかを確認するロジックはありません。つまり、プールに関連付けられたデフォルトの CRUSH ルールを変更すると、データの移動が行われるため、既存の環境でパフォーマンス層を定義することは危険となる可能性があります。ノードの追加または削除に関する支援または推奨事項が必要な場合は、Red Hat サポートにお問い合わせください。
Ceph はディスク種別を自動検出し、Linux カーネルが公開するハードウェアプロパティーに基づいて、これを対応するデバイスクラス (HDD、SSD、または NVMe のいずれか) に割り当てます。ただし、必要に応じてカテゴリーをカスタマイズすることもできます。
前提条件
- 新規デプロイメントでは、Red Hat Ceph Storage (RHCS) バージョン 4.1 以降
- 既存のデプロイメントの場合は、Red Hat Ceph Storage (RHCS) バージョン 4.2 以降
異なる Red Hat Ceph Storage パフォーマンス層をデプロイするには、CRUSH マップの詳細が含まれる新規の環境ファイルを作成し、これをデプロイメントコマンドに追加します。
以下の手順では、各 Ceph Storage ノードには OSD が 3 つ含まれます。sdb および sdc は動作中のディスクで、sdc は SSD です。Ceph は正しいディスク種別を自動的に検出します。次に、HDD および SSD の 2 つの CRUSH ルールを設定し、2 つのデバイスクラスにそれぞれマッピングします。HDD ルールはデフォルトで、別のルールでプールを設定しない限り、すべてのプールに適用されます。
最後に、fastpool と呼ばれる追加のプールを作成し、SSD ルールにマッピングします。このプールは、最終的に Block Storage (cinder) バックエンドを通じて公開されます。この Block Storage バックエンドを使用するすべてのワークロードは、パフォーマンスを高速にする場合にのみ SSD によってサポートされます。これは、データまたはボリュームから起動 (boot from volume) のいずれかに活用できます。
6.1. パフォーマンス層の設定 リンクのコピーリンクがクリップボードにコピーされました!
- 警告
-
既存の環境でパフォーマンス層を定義すると、Ceph クラスター内で大量のデータが移動する場合があります。スタックの更新時に director がトリガーする
ceph-ansibleには、プールがクラスターにすでに定義されているかどうかや、データが含まれるかどうかを確認するロジックはありません。つまり、プールに関連付けられたデフォルトの CRUSH ルールを変更すると、データの移動が行われるため、既存の環境でパフォーマンス層を定義することは危険となる可能性があります。ノードの追加または削除に関する支援または推奨事項が必要な場合は、Red Hat サポートにお問い合わせください。
director はこの機能に対応するための特定のパラメーターを公開しませんが、以下の手順に従って ceph-ansible の想定される変数を生成することができます。
手順
-
アンダークラウドノードに
stackユーザーとしてログインします。 -
Ceph config パラメーターおよびデバイスクラス変数を含む環境ファイル (
/home/stack/templates/ceph-config.yaml等) を作成します。あるいは、既存の環境ファイルに以下の設定を追加することができます。 環境ファイルで
CephAnsibleDisksConfigパラメーターを使用して、Ceph OSD として使用するブロックデバイスをリスト表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: Ceph はディスクの種別を自動的に検出して、対応するデバイスクラスに割り当てます。ただし、
crush_device_classプロパティーを使用して、特定のデバイスを特定のクラスに属するように強制したり、独自のカスタムクラスを作成したりすることもできます。以下の例は、指定したクラスを持つ OSD のリストと同じです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow CephAnsibleExtraVarsパラメーターを追加します。crush_rulesパラメーターには、定義した各クラスまたは Ceph が自動検出する各クラスにルールが含まれている必要があります。新しいプールを作成する際にルールが指定されていない場合は、Ceph が使用するルールがデフォルトとして選択されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow CephPoolsパラメーターを追加します。-
rule_nameパラメーターを使用して、デフォルトのルールを使用しない各プールの層を指定します。以下の例では、fastpoolプールは、fast tier として設定された SSD デバイスクラスを使用して Block Storage ボリュームを管理します。 <appropriate_PG_num>を配置グループ (PG) の適切な数に置き換えます。あるいは、配置グループの自動スケーラーを使用して、Ceph プールの PG の数を計算します。詳細は、異なる Ceph プールへのカスタム属性の割り当て を参照してください。
CinderRbdExtraPoolsパラメーターを使用して、fastpoolを Block Storage バックエンドとして設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
以下の例を使用して、環境ファイルに正しい値が含まれることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud deployコマンドで新規の環境ファイルを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <other_overcloud_environment_files>をデプロイメントに追加する環境ファイルのリストに置き換えます。
既存の Ceph クラスターに環境ファイルを適用すると、既存の Ceph プールは新しいルールで更新されません。このため、デプロイメントの完了後に以下のコマンドを入力して、指定したプールにルールを設定する必要があります。
ceph osd pool set <pool> crush_rule <rule>
$ ceph osd pool set <pool> crush_rule <rule>
-
<pool>を新しいルールを適用するプールの名前に置き換えます。 -
<rule>をcrush_rulesパラメーターで指定したルール名の 1 つに置き換えます。 -
<appropriate_PG_num>を配置グループの適切な数またはtarget_size_ratioに置き換え、pg_autoscale_modeをtrueに設定します。
このコマンドを使用してルールを変更するたびに、既存のエントリーを更新するか、既存のテンプレートの CephPools パラメーターに新しいエントリーを追加します。
CephPools:
- name: <pool>
pg_num: <appropriate_PG_num>
rule_name: <rule>
application: rbd
CephPools:
- name: <pool>
pg_num: <appropriate_PG_num>
rule_name: <rule>
application: rbd