19.4. リバランスパフォーマンスチューニングの概要
クラスターリバランスのパフォーマンスチューニングオプションを調整できます。このオプションは、リバランスのパーティションレプリカおよびリーダーシップの移動が行われる方法を制御し、また、リバランス操作に割り当てられた帯域幅も制御します。
19.4.1. パーティション再割り当てコマンド
最適化プロポーザル は、個別のパーティション再割り当てコマンドで設定されています。プロポーザルを 承認 すると、Cruise Control サーバーはこれらのコマンドを Kafka クラスターに適用します。
パーティション再割り当てコマンドは、以下のいずれかの操作で設定されます。
パーティションの移動: パーティションレプリカとそのデータを新しい場所に転送します。パーティションの移動は、以下の 2 つの形式のいずれかになります。
- ブローカー間の移動: パーティションレプリカを、別のブローカーのログディレクトリーに移動します。
- ブローカー内の移動: パーティションレプリカを、同じブローカーの異なるログディレクトリーに移動します。
- リーダーシップの移動: パーティションのレプリカのリーダーを切り替えます。
Cruise Control によって、パーティション再割り当てコマンドがバッチで Kafka クラスターに発行されます。リバランス中のクラスターのパフォーマンスは、各バッチに含まれる各タイプの移動数に影響されます。
19.4.2. レプリカの移動ストラテジー
クラスターリバランスのパフォーマンスは、パーティション再割り当てコマンドのバッチに適用される レプリカ移動ストラテジー の影響も受けます。デフォルトでは、Cruise Control は BaseReplicaMovementStrategy
を使用します。これは、生成された順序でコマンドを適用します。ただし、プロポーザルの初期に非常に大きなパーティションの再割り当てを行うと、このストラテジーではその他の再割り当ての適用が遅くなる可能性があります。
Cruise Control は、最適化プロポーザルに適用できる代替のレプリカ移動ストラテジーを 4 つ提供します。
-
PrioritizeSmallReplicaMovementStrategy
: サイズの昇順で再割り当てを並べ替えます。 -
PrioritizeLargeReplicaMovementStrategy
: サイズの降順で再割り当ての順序。 -
PostponeUrpReplicaMovementStrategy
: 非同期レプリカがないパーティションのレプリカの再割り当てを優先します。 -
PrioritizeMinIsrWithOfflineReplicasStrategy
: オフラインレプリカを持つ (At/Under) MinISR パーティションで再割り当てを優先します。この戦略は、Kafka
カスタムリソースの仕様でcruiseControl.config.concurrency.adjuster.min.isr.check.enabled
がtrue
に設定されている場合にのみ機能します。
これらのストラテジーをシーケンスとして設定できます。最初のストラテジーは、内部ロジックを使用して 2 つのパーティション再割り当ての比較を試みます。再割り当てが同等である場合は、順番を決定するために再割り当てをシーケンスの次のストラテジーに渡します。
19.4.3. ブローカー内のディスクバランシング
大量のデータを移動する場合、同じブローカーのディスク間で移動する方が個別のブローカー間で移動するよりも影響度が低くなります。Kafka デプロイメントで、同じブローカーにディスクが複数割り当てられた JBOD ストレージを使用している場合には、Cruise Control はディスク間でパーティションを分散できます。
1 つのディスクで JBOD ストレージを使用している場合は、分散するディスクがないため、ブローカー内でディスク分散すると、パーティションの移動が 0 と提案されます。
ブローカー内のディスク分散を実行するには、KafkaRebalance.spec
の下で rebalanceDisk
を true
に設定します。rebalanceDisk
を true
に設定する場合は、Cruise Control はブローカー内のゴールを自動的に設定し、ブローカー間のゴールを無視するため、KafkaRebalance.spec
の goals
フィールドを設定しないでください。Cruise Control はブローカー間およびブローカー内の分散を同時に実行しません。
19.4.4. リバランスチューニングオプション
Cruise Control には、上記のリバランスパラメーターを調整する設定オプションが複数あります。これらのチューニングオプションは、Kafka または 最適化提案 レベル で Cruise Control を設定および展開する ときに設定できます。
-
Cruise Control のサーバー設定は、Kafka カスタムリソースの下の
Kafka.spec.cruiseControl.config
で設定できます。 -
個々のリバランスのパフォーマンス設定は、
KafkaRebalance.spec
で設定できます。
関連する設定を以下の表にまとめています。
Cruise Control プロパティー | KafkaRebalance プロパティー | デフォルト | 説明 |
---|---|---|---|
|
| 5 | 各パーティション再割り当てバッチにおけるブローカー間パーティション移動の最大数。 |
|
| 2 | 各パーティション再割り当てバッチにおけるブローカー内パーティション移動の最大数。 |
|
| 1000 | 各パーティション再割り当てバッチにおけるパーティションリーダー変更の最大数。 |
|
| Null (制限なし) | パーティションの再割り当てに割り当てる帯域幅 (バイト/秒単位)。 |
|
|
|
パーティション再割り当てコマンドが、生成されたプロポーザルに対して実行される順番を決定するために使用されるストラテジー (優先順位順) の一覧。サーバーの設定には、ストラテジークラスの完全修飾名をコンマ区切りの文字列で指定します (各クラス名の先頭に |
- |
| false | ブローカー内のディスク分散を有効にし、同じブローカーのディスク間でディスク領域の使用率を分散します。ディスクが複数割り当てられた JBOD ストレージを使用する Kafka デプロイメントにのみ適用されます。 |
デフォルト設定を変更すると、リバランスの完了までにかかる時間と、リバランス中の Kafka クラスターの負荷に影響します。値を小さくすると負荷は減りますが、かかる時間は長くなります。その逆も同様です。