8.3. 最適化プロポーザルの概要
最適化プロポーザルは、パーティションのワークロードをブローカー間でより均等に分散することで、Kafka クラスターの負荷をより均等にするために提案された変更の概要です各最適化プロポーザルは、そのプロポーザルの生成に使用された 最適化ゴール のセットが基になっており、ブローカーリソースの設定済みの容量制限 の対象になります。
最適化プロポーザルは KafkaRebalance
カスタムリソースの Status.Optimization Result
プロパティーに含まれます。提供される情報は完全な最適化プロポーザルの概要になります。概要を使用して以下を決定します。
- 最適化プロポーザルの承認。プロポーザルを Kafka クラスターに適用し、クラスターリバランス操作を開始するよう Cruise Control が指示されます。
- 最適化プロポーザルの拒否。最適化ゴールを変更し、別のプロポーザルを生成できます。
最適化プロポーザルはすべてドライランです。最適化プロポーザルを最初に生成しないと、クラスターのリバランスを承認できません。生成できる最適化プロポーザルの数に制限はありません。
キャッシュされた最適化プロポーザル
Cruise Control は、設定済みのデフォルト最適化ゴールを基にして キャッシュされた最適化プロポーザル を維持します。キャッシュされた最適化プロポーザルはワークロードモデルから生成され、Kafka クラスターの現在の状況を反映するために 15 分ごとに更新されます。デフォルトの最適化ゴールを使用して最適化プロポーザルを生成する場合、Cruise Control は最新のキャッシュされたプロポーザルを返します。
キャッシュされた最適化プロポーザルの更新間隔を変更するには、Cruise Control デプロイメント設定の proposal.expiration.ms
設定を編集します。更新間隔を短くすると、Cruise Control サーバーの負荷が増えますが、変更が頻繁に行われるクラスターでは、更新間隔を短くするよう考慮してください。
最適化プロポーザルの内容
最適化プロポーザルは 2 つのメインセクションで構成されます。
-
summaryは、
KafkaRebalance
リソースのstatus
に格納されます。 - ブローカーの負荷は、データが JSON 文字列として含まれる ConfigMap に保存されます。
サマリーは、提案されたクラスターリバランスの概要を提供し、関係する変更の規模を示します。ブローカーの負荷は提案されたリバランスの前と後の値を表示するため、クラスターの各ブローカーへの影響を確認できます。
サマリー
以下の表は、最適化プロポーザルのサマリーセクションに含まれるプロパティーについて説明しています。
JSON プロパティー | 説明 |
---|---|
| ディスクとクラスターのブローカーとの間で転送されるパーティションレプリカの合計数。
リバランス操作中のパフォーマンスへの影響度: 比較的高いが、 |
| サポートされていません。空のリストが返されます。 |
| 個別のブローカー間で移動されるパーティションレプリカの数。 リバランス操作中のパフォーマンスへの影響度: 比較的高い。 |
| 最適化プロポーザルの生成前および生成後における、Kafka クラスターの全体的な 分散度 (balancedness) の値。
スコアは、違反した各ソフトゴールの
|
|
同じブローカーのディスク間で移動される各パーティションレプリカのサイズの合計 (
リバランス操作中のパフォーマンスへの影響度: 場合による。値が大きいほど、クラスターのリバランスの完了にかかる時間が長くなります。大量のデータを移動する場合、同じブローカーのディスク間で移動する方が個別のブローカー間で移動するよりも影響度が低くなります ( |
| 最適化プロポーザルの基になるメトリクスウインドウの数。 |
|
個別のブローカーに移動される各パーティションレプリカのサイズの合計 ( リバランス操作中のパフォーマンスへの影響度: 場合による。値が大きいほど、クラスターのリバランスの完了にかかる時間が長くなります。 |
|
最適化プロポーザルの対象となる Kafka クラスターのパーティションの割合 (パーセント)。 |
|
|
| リーダーが別のレプリカに切り替えられるパーティションの数。ZooKeeper 設定の変更を伴います。 リバランス操作中のパフォーマンスへの影響度: 比較的低い。 |
| サポートされていません。空のリストが返されます。 |
ブローカーの負荷
ブローカーの負荷は、JSON 形式の文字列として ConfigMap (KafkaRebalance カスタムリソースと同じ名前) に保存されます。この JSON 文字列は、各ブローカーのいくつかのメトリクスにリンクする各ブローカー ID のキーを持つ JSON オブジェクトで構成されます。各メトリクスは 3 つの値で構成されます。1 つ目は、最適化プロポーザルの適用前のメトリクスの値です。2 つ目はプロポーザルの適用後に期待される値、3 つ目は、最初の 2 つの値の差 (後の値から前の値を引いた) です。
ConfigMap から JSON 文字列を抽出するには、jq コマンドラインの JSON パーサーツールを使用する次のコマンドを使用できます。
oc get configmap MY-REBALANCE -o json | jq '.["data"]["brokerLoad.json"]|fromjson|.'
以下の表は、最適化プロポーザルのブローカー負荷 ConfigMap に含まれるプロパティーについて説明しています。
JSON プロパティー | 説明 |
---|---|
| パーティションリーダーであるこのブローカーのレプリカ数。 |
| このブローカーのレプリカ数。 |
| 定義された容量の割合をパーセントで表す CPU 使用率。 |
| 定義された容量の割合をパーセントで表す ディスク 使用率。 |
| 絶対ディスク使用量 (MB 単位) |
| ブローカーのネットワーク出力レートの合計。 |
| このブローカーのすべてのパーティションリーダーレプリカに対するネットワーク入力レート。 |
| このブローカーのすべてのフォロワーレプリカに対するネットワーク入力レート。 |
| このブローカーが現在ホストしているレプリカすべてのリーダーであった場合に実現される、仮定上の最大ネットワーク出力レート。 |
その他のリソース