5.4. Ceph Manager バランサーモジュールの使用
バランサーは、Ceph Manager (ceph-mgr
) のモジュールで、OSD 全体の配置グループ (PG) の配置を最適化することで、自動または監視された方法で負荷分散を実現します。
バランサーモジュールを無効にできません。これをオフにして設定をカスタマイズすることしかできません。
モード
サポートされているバランサーモードは次のとおりです。
- crush-compat
CRUSH compat モードは、Ceph Luminous で導入された compat の
weight-set
機能を使用して、CRUSH 階層のデバイスの別の重みセットを管理します。通常の重みは、デバイスに保存する目的のデータ量を反映するために、デバイスのサイズに設定したままにする必要があります。その後バランサーは、可能な限り目的のディストリビューションに一致するディストリビューションを達成するために、weight-set
の値を少しずつ増減させ、値を最適化します。PG の配置は擬似ランダムプロセスであるため、配置には自然なばらつきが伴います。重みを最適化することで、バランサーはこの自然なばらつきに対応します。このモードは、古いクライアントと完全に後方互換性があります。OSDMap および CRUSH マップが古いクライアントと共有されると、バランサーは最適化された weightsff を実際の重みとして提示します。
このモードの主な制限は、階層のサブツリーが OSD を共有する場合に、バランサーが配置ルールの異なる複数の CRUSH 階層を処理できないことです。この設定では、共有 OSD での領域の使用を管理するのが困難になるため、一般的には推奨されません。そのため、通常、この制限は問題にはなりません。
- upmap
Luminous 以降、OSDMap は、通常の CRUSH 配置計算への例外として、個々の OSD の明示的なマッピングを保存できます。これらの
upmap
エントリーにより、PG マッピングを細かく制御できます。この CRUSH モードは、負荷分散を実現するために、個々の PG の配置を最適化します。多くの場合、この分散は各 OSD の PG 数 +/-1 PG で “完璧“ です。これは割り切れない場合があるためです。重要この機能の使用を許可するには、次のコマンドを使用して、luminous 以降のクライアントのみをサポートする必要があることをクラスターに伝える必要があります。
[ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous
[ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、luminous 以前のクライアントまたはデーモンがモニターに接続されていると失敗します。
既知の問題により、カーネル CephFS クライアントは自身を jewel クライアントとして報告します。この問題を回避するには、
--yes-i-really-mean-it
フラグを使用します。[ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
[ceph: root@host01 /]# ceph osd set-require-min-compat-client luminous --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用しているクライアントのバージョンは、以下で確認できます。
[ceph: root@host01 /]# ceph features
[ceph: root@host01 /]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - read
OSDMap は、通常の CRUSH 配置計算の例外として、個々のプライマリー OSD の明示的なマッピングを保存できます。これらの
pg-upmap-primary
エントリーは、プライマリー PG マッピングに対するきめ細かい制御を提供します。このモードでは、読み取りの負荷がクラスター内で分散されるように (またはプライマリー PG)、個々のプライマリー PG の配置が最適化されます。read
モードでは upmap の動作は実行されないため、このモードは読み取りの負荷分散のみが必要とされるユースケースに最適です。重要この機能の使用を許可するには、次のコマンドを使用して、クラスターに Reef 以降のクライアントのみをサポートする必要があることを通知する必要があります。
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef
Copy to Clipboard Copied! Toggle word wrap Toggle overflow モニターに Reef 以前のクライアントまたはデーモンが接続されている場合は、このコマンドは失敗します。
この問題を回避するには、
--yes-i-really-mean-it
フラグを使用します。[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用しているクライアントのバージョンは、以下で確認できます。
[ceph: root@host01 /]# ceph features
[ceph: root@host01 /]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - upmap-read
このバランサーモードは、
upmap
とread
モードの両方の最適化の利点を組み合わせたものです。read
モードと同様に、upmap-read
はpg-upmap-primary
を使用します。upmap
モードの PG の負荷分散と、read
モードの読み取り負荷の分散を実現するにはupmap-read
を使用します。重要この機能の使用を許可するには、次のコマンドを使用して、クラスターに Reef 以降のクライアントのみをサポートする必要があることを通知する必要があります。
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef
Copy to Clipboard Copied! Toggle word wrap Toggle overflow モニターに Reef 以前のクライアントまたはデーモンが接続されている場合は、このコマンドは失敗します。
この問題を回避するには、
--yes-i-really-mean-it
フラグを使用します。[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用しているクライアントのバージョンは、以下で確認できます。
[ceph: root@host01 /]# ceph features
[ceph: root@host01 /]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.1. キャパシティーバランサーを使用した Red Hat Ceph クラスターの負荷分散 リンクのコピーリンクがクリップボードにコピーされました!
キャパシティバランサーを使用して、Red Hat Ceph Storage クラスターの負荷を分散します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
手順
バランサーモジュールが有効になっているかどうかを確認します。
例
[ceph: root@host01 /]# ceph mgr module enable balancer
[ceph: root@host01 /]# ceph mgr module enable balancer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow balancer モジュールをオンにします。
例
[ceph: root@host01 /]# ceph balancer on
[ceph: root@host01 /]# ceph balancer on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow モードを変更するには、次のコマンドを使用します。デフォルトのモードは
upmap
です。例
[ceph: root@host01 /]# ceph balancer mode crush-compat
[ceph: root@host01 /]# ceph balancer mode crush-compat
Copy to Clipboard Copied! Toggle word wrap Toggle overflow あるいは、以下のような場合もあります。
例
[ceph: root@host01 /]# ceph balancer mode upmap
[ceph: root@host01 /]# ceph balancer mode upmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バランサーの現在の状態を確認します。
例
[ceph: root@host01 /]# ceph balancer status
[ceph: root@host01 /]# ceph balancer status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
自動バランシング
バランサーモジュールをオンにするときは、自動分散を使用します。ceph balancer on
コマンドを使用して、容量バランサーをオンにします。デフォルトでは、バランサーモジュールをオンにすると、自動分散が使用され、upmap
モードが有効になります。
例
[ceph: root@host01 /]# ceph balancer on
[ceph: root@host01 /]# ceph balancer on
バランサーモードを upmap
から crush-compact
モードに変更できます。crush-compat
モードは古いクライアントとの下位互換性があり、OSD が均等に使用されるようにデータの分散に若干変更を加えます。
バランサーをオンにすると、バランサーの状態を確認できます。
例
バランサーモジュールを無効にするには、ceph balancer off
コマンドを使用します。
例
スロットリング
たとえば、OSD が失敗し、システムがまだ修復していない場合などに、クラスターのパフォーマンスが低下する場合は、PG ディストリビューションには調整は行われません。
クラスターが正常な場合、バランサーは変更を調整して、置き間違えた、または移動する必要のある PG の割合がデフォルトで 5% のしきい値を下回るようにします。この割合は、target_max_misplaced_ratio
の設定を使用して調整できます。
構文
ceph config-key set mgr target_max_misplaced_ratio THRESHOLD_PERCENTAGE
ceph config-key set mgr target_max_misplaced_ratio THRESHOLD_PERCENTAGE
以下の例では、しきい値を 7% に増やします。
例
[ceph: root@host01 /]# ceph config-key set mgr target_max_misplaced_ratio .07
[ceph: root@host01 /]# ceph config-key set mgr target_max_misplaced_ratio .07
自動バランシングの場合:
- 自動バランサーの実行間におけるスリープ時間を秒単位で設定します。
例
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/sleep_interval 60
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/sleep_interval 60
- 自動バランシングを開始する時刻を HHMM 形式で設定します。
例
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_time 0000
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_time 0000
- 自動バランシングを終了する時刻を HHMM 形式で設定します。
例
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_time 2359
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_time 2359
-
自動バランシングをこの曜日以降に制限します。
0
は日曜日、1
は月曜日というように、crontab と同じ規則を使用します。
例
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_weekday 0
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/begin_weekday 0
-
自動バランシングをこの曜日以前に制限します。
0
は日曜日、1
は月曜日というように、crontab と同じ規則を使用します。
例
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_weekday 6
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/end_weekday 6
-
自動バランシングを制限するプール ID を定義します。これのデフォルトは空の文字列で、すべてのプールが均衡していることを意味します。数値のプール ID は、
ceph osd pool ls detail
コマンドで取得できます。
例
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/pool_ids 1,2,3
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/pool_ids 1,2,3
監視付き最適化
balancer 操作はいくつかの異なるフェーズに分類されます。
-
プラン
の構築。 -
現在の PG ディストリビューションまたは
プラン
実行後に得られる PG ディストリビューションに対するデータ分散の品質の評価。 プラン
の実行。現在のディストリビューションを評価し、スコアを付けます。
例
[ceph: root@host01 /]# ceph balancer eval
[ceph: root@host01 /]# ceph balancer eval
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 単一プールのディストリビューションを評価するには、以下を実行します。
構文
ceph balancer eval POOL_NAME
ceph balancer eval POOL_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph balancer eval rbd
[ceph: root@host01 /]# ceph balancer eval rbd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 評価の詳細を表示するには、以下を実行します。
例
[ceph: root@host01 /]# ceph balancer eval-verbose ...
[ceph: root@host01 /]# ceph balancer eval-verbose ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在設定されているモードを使用してプランを生成するには、以下を実行します。
構文
ceph balancer optimize PLAN_NAME
ceph balancer optimize PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PLAN_NAME は、カスタムプラン名に置き換えます。
例
[ceph: root@host01 /]# ceph balancer optimize rbd_123
[ceph: root@host01 /]# ceph balancer optimize rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プランの内容を表示するには、以下を実行します。
構文
ceph balancer show PLAN_NAME
ceph balancer show PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph balancer show rbd_123
[ceph: root@host01 /]# ceph balancer show rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 古いプランを破棄するには、以下を実行します。
構文
ceph balancer rm PLAN_NAME
ceph balancer rm PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph balancer rm rbd_123
[ceph: root@host01 /]# ceph balancer rm rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 現在記録されているプランを表示するには、status コマンドを使用します。
[ceph: root@host01 /]# ceph balancer status
[ceph: root@host01 /]# ceph balancer status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プラン実行後に生じるディストリビューションの品質を計算するには、以下を実行します。
構文
ceph balancer eval PLAN_NAME
ceph balancer eval PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph balancer eval rbd_123
[ceph: root@host01 /]# ceph balancer eval rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プランを実行するには、以下を実行します。
構文
ceph balancer execute PLAN_NAME
ceph balancer execute PLAN_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
[ceph: root@host01 /]# ceph balancer execute rbd_123
[ceph: root@host01 /]# ceph balancer execute rbd_123
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ディストリビューションの改善が想定される場合にのみ、プランを実行します。実行後、計画は破棄されます。
5.4.2. 読み取りバランサーを使用した Red Hat Ceph クラスターの負荷分散 リンクのコピーリンクがクリップボードにコピーされました!
クラスター内のプライマリー配置グループ (PG) の負荷を分散します。バランサーは、OSD 間での配置グループの割り当てを最適化して、負荷分散を実現します。バランサーは、自動 (オンライン)、オフライン、または監視付き (オフライン) で動作できます。
5.4.2.1. オンライン最適化 リンクのコピーリンクがクリップボードにコピーされました!
バランサモジュールを使用して、クラスター内のプライマリー PG の負荷を分散します。
前提条件
始める前に、Red Hat Ceph Storage クラスターが実行中であることを確認してください。
手順
バランサーモジュールを有効にします。
構文
[ceph: root@host01 /]# ceph mgr module enable balancer
[ceph: root@host01 /]# ceph mgr module enable balancer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バランサーモジュールをオンにします。
構文
[ceph: root@host01 /]# ceph balancer on
[ceph: root@host01 /]# ceph balancer on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター上の
min_compact_client
を更新します。オンライン最適化を使用するには、クラスターで Reef 以降のクライアントのサポートが指定されている必要があります。構文
ceph osd set-require-min-compat-client reef
ceph osd set-require-min-compat-client reef
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記モニターに Reef 以前のクライアントまたはデーモンが接続されている場合は、このコマンドは失敗します。この問題を回避するには、
--yes-i-really-mean-it
フラグを使用します。構文
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reef --yes-i-really-mean-it
Copy to Clipboard Copied! Toggle word wrap Toggle overflow You can check what client versions are in use with: the ceph features command.
You can check what client versions are in use with: the ceph features command.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 構文
[ceph: root@host01 /]# ceph features
[ceph: root@host01 /]# ceph features
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 読み取りの負荷を分散するために、モードを
upmap-read
またはread
に変更します。デフォルトのモードは
upmap
です。これらのモードを有効にするには、次のいずれかのコマンドを実行します。構文
ceph balancer mode upmap-read ceph balancer mode read
ceph balancer mode upmap-read ceph balancer mode read
Copy to Clipboard Copied! Toggle word wrap Toggle overflow バランサーの現在の状態を確認します。
構文
ceph balancer status
ceph balancer status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.2. オフライン最適化 (テクノロジープレビュー) リンクのコピーリンクがクリップボードにコピーされました!
テクノロジープレビュー機能は、実稼働環境での Red Hat サービスレベルアグリーメント (SLA) ではサポートされておらず、機能的に完全ではない可能性があるため、Red Hat では実稼働環境での使用を推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。詳細は、Red Hat テクノロジープレビュー機能のサポート範囲 を参照してください。
アンバランスなプライマリー OSD がある場合は、osdmaptool
に組み込まれているオフラインオプティマイザーを使用してそれらを更新できます。
Red Hat では、最適な結果を確保するために、読み取りバランサーを実行する前にキャパシティーバランサーを実行することを推奨します。
読み取りバランサーを使用してクラスターの負荷を分散するには、次の手順に従います。
前提条件
始める前に、次の前提条件が満たされていることを確認してください。
- 実行し、容量の負荷が分散された Red Hat Ceph Storage クラスター。
最適な結果を確保するために、読み取りバランサーを実行する前に容量バランサーを実行して各 OSD の容量の負荷を分散させます。次の手順を実行して容量の負荷を分散します。
osdmap の最新コピーを取得します。
[ceph: root@host01 /]# ceph osd getmap -o map
[ceph: root@host01 /]# ceph osd getmap -o map
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アップマップバランサーを実行します。
[ceph: root@host01 /]# ospmaptool map –upmap out.txt
[ceph: root@host01 /]# ospmaptool map –upmap out.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow out.txt ファイルには、提案されたソリューションが含まれています。
この手順のコマンドは、クラスターに変更を適用するために実行する通常の Ceph CLI コマンドです。
out.txt ファイルに推奨事項がある場合は、次のコマンドを実行します。
[ceph: root@host01 /]# source out.txt
[ceph: root@host01 /]# source out.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
各プールで利用可能な
read_balance_score
を確認します。[ceph: root@host01 /]# ceph osd pool ls detail
[ceph: root@host01 /]# ceph osd pool ls detail
Copy to Clipboard Copied! Toggle word wrap Toggle overflow read_balance_score
が 1 を大幅に上回っている場合、プールには負荷が分散されていないプライマリー OSD があります。同種のクラスターの場合、最適なスコアは [Ceil{(PG の数/OSD の数)}/(PG の数/OSD の数]/[PG の数/OSD の数)/(PG の数/OSD の数値)] です。たとえば、32 個の PG と 10 個の OSD を含むプールがある場合は、(PG の数/OSD の数) = 32/10 = 3.2 となります。したがって、すべてのデバイスが同一である場合の最適なスコアは、上限値 3.2 を (PG の数/OSD の数) で割った値、つまり 4/3.2 = 1.25 になります。同じシステム内に 64 PG を持つ別のプールがある場合、最適なスコアは 7/6.4 =1.09375 です。
出力例:
ceph osd pool ls detail
$ ceph osd pool ls detail pool 1 '.mgr' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 1 pgp_num 1 autoscale_mode on last_change 17 flags hashpspool stripe_width 0 pg_num_max 32 pg_num_min 1 application mgr read_balance_score 3.00 pool 2 'cephfs.a.meta' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 16 pgp_num 16 autoscale_mode on last_change 55 lfor 0/0/25 flags hashpspool stripe_width 0 pg_autoscale_bias 4 pg_num_min 16 recovery_priority 5 application cephfs read_balance_score 1.50 pool 3 'cephfs.a.data' replicated size 3 min_size 1 crush_rule 0 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode on last_change 27 lfor 0/0/25 flags hashpspool,bulk stripe_width 0 application cephfs read_balance_score 1.31
Copy to Clipboard Copied! Toggle word wrap Toggle overflow osdmap
の最新のコピーを取得します。[ceph: root@host01 /]# ceph osd getmap -o om
[ceph: root@host01 /]# ceph osd getmap -o om
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
got osdmap epoch 56
got osdmap epoch 56
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプティマイザーを実行します。
out.txt
ファイルには、提案されたソリューションが含まれています。[ceph: root@host01 /]# osdmaptool om --read out.txt --read-pool _POOL_NAME_ [--vstart]
[ceph: root@host01 /]# osdmaptool om --read out.txt --read-pool _POOL_NAME_ [--vstart]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow out.txt
ファイルには、提案されたソリューションが含まれています。この手順のコマンドは、クラスターに変更を適用するために実行する通常の Ceph CLI コマンドです。vstart クラスターで作業している場合は、
--vstart
パラメーターを渡すと、CLI コマンドが./bin/
接頭辞でフォーマットされるようになります。[ceph: root@host01 /]# source out.txt
[ceph: root@host01 /]# source out.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ceph osd pg-upmap-primary
コマンドを初めて実行すると、次のような警告が表示される場合があります。Error EPERM: min_compat_client luminous < reef, which is required for pg-upmap-primary. Try 'ceph osd set-require-min-compat-client reef' before using the new interface
Error EPERM: min_compat_client luminous < reef, which is required for pg-upmap-primary. Try 'ceph osd set-require-min-compat-client reef' before using the new interface
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この場合、推奨コマンド
ceph osd set-require-min-compat-client reef
を実行し、クラスターの min-compact-client を調整します。
配置グループ (PG) の数が変更した場合、または OSD がクラスターに追加または削除された場合は、スコアを再チェックしてバランサーを再実行することを検討してください。これらの操作は、プールに対する読み取りバランサーの効果に大きな影響を与える可能性があります。
5.4.2.3. 監視付き最適化 リンクのコピーリンクがクリップボードにコピーされました!
読み取りバランサーは、監視付き最適化でも使用できます。監視付き最適化を使用する場合は、容量バランサーを使用した Red Hat Ceph クラスターの負荷分散 の詳細情報を確認してください。モードを upmap-read
または read
のいずれかに設定します。