18.6. 最適化プロポーザルの生成
KafkaRebalance
リソースを作成または更新すると、Cruise Control は 設定済みの 最適化ゴール を基にして、Kafka クラスターの 最適化プロポーザル を生成します。最適化プロポーザルの情報を分析して、プロポーザルを承認するかどうかを決定します。最適化プロポーザルの結果を使用して Kafka クラスターをリバランスできます。
最適化の提案は、次のいずれかのモードで実行できます。
-
full
(デフォルト) -
add-brokers
-
remove-brokers
使用するモードは、Kafka クラスターですでに実行されているすべてのブローカー間で再調整するかどうかによって異なります。または、Kafka クラスターをスケールアップした後またはスケールダウンする前に再調整したい場合。詳細については、ブローカーのスケーリングによるモードの再調整 を参照してください。
前提条件
- AMQ Streams クラスターに Cruise Control がデプロイされている 必要があります。
- 最適化ゴール、およびオプションでブローカーリソースの容量制限を設定しました。
Cruise Control の設定の詳細については、「Configuring and deploying Cruise Control with Kafka」 を参照してください。
手順
KafkaRebalance
リソースを作成し、適切なモードを指定します。full
モード(デフォルト)Kafka
リソースに定義された デフォルトの最適化ゴール を使用するには、spec
プロパティーを空のままにします。Cruise Control は、デフォルトでfull
モードで Kafka クラスターを再調整します。デフォルトで完全なリバランスを行う設定例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow spec.mode
プロパティーでfull
モードを指定して、完全なリバランスを実行することもできます。full
モードを指定した設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow add-brokers
モードスケールアップ後に Kafka クラスターを再調整する場合は、
add-brokers
モードを指定します。このモードでは、既存のレプリカが新しく追加されたブローカーに移動されます。ブローカーをリストとして指定する必要があります。
add-brokers
モードを指定した設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- スケールアップ操作によって追加された、新しく追加されたブローカーのリスト。このプロパティーは必須です。
remove-brokers
モードスケールダウンする前に Kafka クラスターを再調整する場合は、
remove-brokers
モードを指定します。このモードでは、削除されるブローカーからレプリカが移動されます。削除するブローカーをリストとして指定する必要があります。
remove-brokers
モードを指定した設定例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- スケールダウン操作によって削除されるブローカーのリスト。このプロパティーは必須です。
注記次の手順と、再調整を承認または停止する手順は、使用している再調整モードに関係なく同じです。
デフォルトのゴールを使用する代わりに ユーザー提供の最適化ゴール を設定するには、
goals
プロパティーを追加し、1 つ以上のゴールを入力します。以下の例では、ラックアウェアネス (Rack Awareness) およびレプリカの容量はユーザー提供の最適化ゴールとして設定されています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定されたハードゴールを無視するには、
skipHardGoalCheck: true
プロパティーを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow (オプション) 最適化プロポーザルを自動的に承認するには、
strimzi.io/rebalance-auto-approval
アノテーションをtrue
に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースを作成または更新します。
oc apply -f <kafka_rebalance_configuration_file>
oc apply -f <kafka_rebalance_configuration_file>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cluster Operator は Cruise Control から最適化プロポーザルを要求します。Kafka クラスターのサイズによっては処理に数分かかることがあります。
自動承認メカニズムを使用した場合は、最適化プロポーザルのステータスが
Ready
に変わるまで待ちます。自動承認メカニズムを有効にしていない場合は、最適化プロポーザルのステータスがProposalReady
に変わるまで待ちます。oc get kafkarebalance -o wide -w -n <namespace>
oc get kafkarebalance -o wide -w -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PendingProposal
-
PendingProposal
ステータスは、最適化プロポーザルの準備できているかどうかを確認するために、リバランス Operator が Cruise Control API をポーリングしていることを意味します。 ProposalReady
-
ProposalReady
ステータスは、最適化プロポーザルのレビューおよび承認の準備ができていることを意味します。
ステータスが
ProposalReady
に変わると、最適化プロポーザルを承認する準備が整います。最適化プロポーザルを確認します。
最適化プロポーザルは
KafkaRebalance
カスタムリソースのStatus.Optimization Result
プロパティーに含まれます。oc describe kafkarebalance <kafka_rebalance_resource_name>
oc describe kafkarebalance <kafka_rebalance_resource_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最適化プロポーザルの例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Optimization Result
セクションのプロパティーには、保留クラスターリバランス操作の詳細が表示されます。各プロパティーの説明は、最適化プロポーザルの内容 を参照してください。
CPU 容量が不足している
Kafka クラスターが CPU 使用率の観点から過負荷になっている場合には、 KafkaRebalance
ステータスで CPU 容量が十分でないというエラーが発生する可能性があります。この使用率の値は、excludedTopics
設定の影響を受けないことに注意してください。最適化の提案では、除外されたトピックのレプリカは再割り当てされませんが、負荷は使用率の計算で考慮されます。
CPU 使用率エラーの例
com.linkedin.kafka.cruisecontrol.exception.OptimizationFailureException: [CpuCapacityGoal] Insufficient capacity for cpu (Utilization 615.21, Allowed Capacity 420.00, Threshold: 0.70). Add at least 3 brokers with the same cpu capacity (100.00) as broker-0. Add at least 3 brokers with the same cpu capacity (100.00) as broker-0.
com.linkedin.kafka.cruisecontrol.exception.OptimizationFailureException:
[CpuCapacityGoal] Insufficient capacity for cpu (Utilization 615.21,
Allowed Capacity 420.00, Threshold: 0.70). Add at least 3 brokers with
the same cpu capacity (100.00) as broker-0. Add at least 3 brokers with
the same cpu capacity (100.00) as broker-0.
このエラーは、CPU コアの数ではなく、CPU 容量をパーセンテージで示しています。このため、Kafka カスタムリソースで設定された CPU の数に直接マップされません。これは、Kafka.spec.kafka.resources.limits.cpu
で設定された CPU のサイクルを持つ、ブローカーごとに単一の 仮想 CPU を持つようなものです。CPU 使用率と容量の比率は同じであるため、これはリバランスの動作に影響はありません。
次のステップ