4.2. Cruise Control によるクラスターのリバランス
Cruise Control は本リリースでもテクノロジープレビューですが、新たな改良が加えられました。
Cruise Control をデプロイし、これを使用して 最適化ゴール (CPU、ディスク、ネットワーク負荷などに定義された制約) を使用し、Kafka をリバランスできます。バランス調整された Kafka クラスターでは、ワークロードがブローカー Pod 全体に均等に分散されます。
Cruise Control は Kafka
リソースの一部として設定され、デプロイされます。デフォルトの最適化ゴールを使用するか、要件に合わせて変更できます。Cruise Control の YAML 設定ファイルのサンプルは、examples/cruise-control/
にあります。
Cruise Control がデプロイされると、KafkaRebalance
カスタムリソースを作成して以下を行うことができます。
- 複数の最適化のゴールから、最適化のプロポーザルを生成します。
- 最適化のプロポーザルを基にして Kafka クラスターを再分散します。
異常検出、通知、独自ゴールの作成、トピックレプリケーション係数の変更などの、その他の Cruise Control の機能は現在サポートされていません。
「Cruise Control for cluster rebalancing」を参照してください。
4.2.1. テクノロジープレビューの改良
最適化プロポーザルの更新
既存の KafkaRebalance
リソースを Ready
のステータスで再利用できるようになりました。これは、クラスターのリバランスが正常に完了したことを示します。KafkaRebalance
リソースに定義された最適化ゴールを再利用するか、ゴールを変更することができます。
最適化プロポーザルを更新するには、以下を実行します。
KafkaRebalance
リソースの状態をチェックします。oc describe kafkarebalance REBALANCE-NAME
strimzi.io/rebalance=refresh
アノテーションを適用します。oc annotate kafkarebalance REBALANCE-NAME strimzi.io/rebalance=refresh
Cruise Control は最適化プロポーザルを更新し、Kafka クラスターの最新状態を反映します。
「Approving an optimization proposal」を参照してください。
最適化プロポーザルでのブローカー負荷の表示
最適化プロポーザルは要約ステータスに加えてブローカー負荷で構成されるようになりました。ブローカーの負荷が ConfigMap 内で返され、CPU 使用率、ディスク使用量、ネットワーク出力レートなどの各 Kafka ブローカーの負荷のメトリクスが表示されます。メトリクスは 3 つのカテゴリーに分類されます。
- before
- 最適化プロポーザルを適用する前の現在の値
- after
- 最適化プロポーザルの適用後に想定される値
- difference
- after 値と before 値の差
ブローカー負荷 ConfigMap の名前は KafkaRebalance
リソースと同じになります。メトリクスは JSON 文字列としてエンコードされます。人が判読できる形式で表示するには、jq
または同様の JSON パーサーを使用します。以下は例になります。
oc get configmap MY-REBALANCE -o json | jq '.["data"]["brokerLoad.json"]|fromjson|.'
「Optimization proposals overview」を参照してください。