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このコマンドは、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 features- read
OSDMap は、通常の CRUSH 配置計算の例外として、個々のプライマリー OSD の明示的なマッピングを保存できます。これらの
pg-upmap-primaryエントリーは、プライマリー PG マッピングに対するきめ細かい制御を提供します。このモードでは、読み取りの負荷がクラスター内で分散されるように (またはプライマリー PG)、個々のプライマリー PG の配置が最適化されます。readモードでは upmap の動作は実行されないため、このモードは読み取りの負荷分散のみが必要とされるユースケースに最適です。重要この機能の使用を許可するには、次のコマンドを使用して、クラスターに Reef 以降のクライアントのみをサポートする必要があることを通知する必要があります。
[ceph: root@host01 /]# ceph osd set-require-min-compat-client reefモニターに 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 features- 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モニターに 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 features
5.4.1. キャパシティーバランサーを使用した Red Hat Ceph クラスターの負荷分散 リンクのコピーリンクがクリップボードにコピーされました!
キャパシティバランサーを使用して、Red Hat Ceph Storage クラスターの負荷を分散します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
手順
バランサーモジュールが有効になっているかどうかを確認します。
例
[ceph: root@host01 /]# ceph mgr module enable balancerbalancer モジュールをオンにします。
例
[ceph: root@host01 /]# ceph balancer onモードを変更するには、次のコマンドを使用します。デフォルトのモードは
upmapです。例
[ceph: root@host01 /]# ceph balancer mode crush-compatあるいは、以下のような場合もあります。
例
[ceph: root@host01 /]# ceph balancer mode upmapバランサーの現在の状態を確認します。
例
[ceph: root@host01 /]# ceph balancer status
自動バランシング
バランサーモジュールをオンにするときは、自動分散を使用します。ceph balancer on コマンドを使用して、容量バランサーをオンにします。デフォルトでは、バランサーモジュールをオンにすると、自動分散が使用され、upmap モードが有効になります。
例
[ceph: root@host01 /]# ceph balancer on
バランサーモードを upmap から crush-compact モードに変更できます。crush-compat モードは古いクライアントとの下位互換性があり、OSD が均等に使用されるようにデータの分散に若干変更を加えます。
バランサーをオンにすると、バランサーの状態を確認できます。
例
[ceph: root@host01 /]# ceph balancer on
[ceph: root@host01 /]# ceph balancer mode crush-compat
[ceph: root@host01 /]# ceph balancer status
{
"active": true,
"last_optimize_duration": "0:00:00.001174",
"last_optimize_started": "Fri Nov 22 11:09:18 2024",
"mode": "crush-compact",
"no_optimization_needed": false,
"optimize_result": "Unable to find further optimization, change balancer mode and retry might help",
"plans": []
}
バランサーモジュールを無効にするには、ceph balancer off コマンドを使用します。
例
[ceph: root@host01 /]# ceph balancer off
[ceph: root@host01 /]# ceph balancer status
{
"active": false,
"last_optimize_duration": "",
"last_optimize_started": "",
"mode": "crush-compat",
"no_optimization_needed": false,
"optimize_result": "",
"plans": []
}
スロットリング
たとえば、OSD が失敗し、システムがまだ修復していない場合などに、クラスターのパフォーマンスが低下する場合は、PG ディストリビューションには調整は行われません。
クラスターが正常な場合、バランサーは変更を調整して、置き間違えた、または移動する必要のある PG の割合がデフォルトで 5% のしきい値を下回るようにします。この割合は、target_max_misplaced_ratio の設定を使用して調整できます。
構文
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 set mgr mgr/balancer/sleep_interval 60
- 自動バランシングを開始する時刻を HHMM 形式で設定します。
例
[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
-
自動バランシングをこの曜日以降に制限します。
0は日曜日、1は月曜日というように、crontab と同じ規則を使用します。
例
[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
-
自動バランシングを制限するプール ID を定義します。これのデフォルトは空の文字列で、すべてのプールが均衡していることを意味します。数値のプール ID は、
ceph osd pool ls detailコマンドで取得できます。
例
[ceph: root@host01 /]# ceph config set mgr mgr/balancer/pool_ids 1,2,3
監視付き最適化
balancer 操作はいくつかの異なるフェーズに分類されます。
-
planの構築。 -
現在の PG ディストリビューションまたは
plan実行後に得られる PG ディストリビューションに対するデータ分散の品質の評価。 planの実行。現在のディストリビューションを評価し、スコアを付けます。
例
[ceph: root@host01 /]# ceph balancer eval単一プールのディストリビューションを評価するには、以下を実行します。
構文
ceph balancer eval POOL_NAME例
[ceph: root@host01 /]# ceph balancer eval rbd評価の詳細を表示するには、以下を実行します。
例
[ceph: root@host01 /]# ceph balancer eval-verbose ...現在設定されているモードを使用してプランを生成するには、以下を実行します。
構文
ceph balancer optimize PLAN_NAMEPLAN_NAME は、カスタムプラン名に置き換えます。
例
[ceph: root@host01 /]# ceph balancer optimize rbd_123プランの内容を表示するには、以下を実行します。
構文
ceph balancer show PLAN_NAME例
[ceph: root@host01 /]# ceph balancer show rbd_123古いプランを破棄するには、以下を実行します。
構文
ceph balancer rm PLAN_NAME例
[ceph: root@host01 /]# ceph balancer rm rbd_123現在記録されているプランを表示するには、status コマンドを使用します。
[ceph: root@host01 /]# ceph balancer statusプラン実行後に生じるディストリビューションの品質を計算するには、以下を実行します。
構文
ceph balancer eval PLAN_NAME例
[ceph: root@host01 /]# ceph balancer eval rbd_123プランを実行するには、以下を実行します。
構文
ceph balancer execute PLAN_NAME例
[ceph: root@host01 /]# ceph balancer execute rbd_123注記ディストリビューションの改善が想定される場合にのみ、プランを実行します。実行後、計画は破棄されます。