18.6. 最適化プロポーザルの生成


KafkaRebalance リソースを作成または更新すると、Cruise Control は 設定済みの 最適化ゴール を基にして、Kafka クラスターの 最適化プロポーザル を生成します。最適化プロポーザルの情報を分析して、プロポーザルを承認するかどうかを決定します。最適化プロポーザルの結果を使用して Kafka クラスターをリバランスできます。

最適化の提案は、次のいずれかのモードで実行できます。

  • full (デフォルト)
  • add-brokers
  • remove-brokers

使用するモードは、Kafka クラスターですでに実行されているすべてのブローカー間で再調整するかどうかによって異なります。または、Kafka クラスターをスケールアップした後またはスケールダウンする前に再調整したい場合。詳細については、ブローカーのスケーリングによるモードの再調整 を参照してください。

前提条件

Cruise Control の設定の詳細については、「Configuring and deploying Cruise Control with Kafka」 を参照してください。

手順

  1. KafkaRebalance リソースを作成し、適切なモードを指定します。

    full モード(デフォルト)

    Kafka リソースに定義された デフォルトの最適化ゴール を使用するには、spec プロパティーを空のままにします。Cruise Control は、デフォルトで full モードで Kafka クラスターを再調整します。

    デフォルトで完全なリバランスを行う設定例

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec: {}
    Copy to Clipboard Toggle word wrap

    spec.mode プロパティーで full モードを指定して、完全なリバランスを実行することもできます。

    full モードを指定した設定例

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      mode: full
    Copy to Clipboard Toggle word wrap

    add-brokers モード

    スケールアップ後に Kafka クラスターを再調整する場合は、add-brokers モードを指定します。

    このモードでは、既存のレプリカが新しく追加されたブローカーに移動されます。ブローカーをリストとして指定する必要があります。

    add-brokers モードを指定した設定例

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      mode: add-brokers
      brokers: [3, 4] 
    1
    Copy to Clipboard Toggle word wrap

    1
    スケールアップ操作によって追加された、新しく追加されたブローカーのリスト。このプロパティーは必須です。
    remove-brokers モード

    スケールダウンする前に Kafka クラスターを再調整する場合は、remove-brokers モードを指定します。

    このモードでは、削除されるブローカーからレプリカが移動されます。削除するブローカーをリストとして指定する必要があります。

    remove-brokers モードを指定した設定例

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      mode: remove-brokers
      brokers: [3, 4] 
    1
    Copy to Clipboard Toggle word wrap

    1
    スケールダウン操作によって削除されるブローカーのリスト。このプロパティーは必須です。
    注記

    次の手順と、再調整を承認または停止する手順は、使用している再調整モードに関係なく同じです。

  2. デフォルトのゴールを使用する代わりに ユーザー提供の最適化ゴール を設定するには、goals プロパティーを追加し、1 つ以上のゴールを入力します。

    以下の例では、ラックアウェアネス (Rack Awareness) およびレプリカの容量はユーザー提供の最適化ゴールとして設定されています。

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      goals:
        - RackAwareGoal
        - ReplicaCapacityGoal
    Copy to Clipboard Toggle word wrap
  3. 設定されたハードゴールを無視するには、skipHardGoalCheck: true プロパティーを追加します。

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      goals:
        - RackAwareGoal
        - ReplicaCapacityGoal
      skipHardGoalCheck: true
    Copy to Clipboard Toggle word wrap
  4. (オプション) 最適化プロポーザルを自動的に承認するには、strimzi.io/rebalance-auto-approval アノテーションを true に設定します。

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
      annotations:
        strimzi.io/rebalance-auto-approval: "true"
    spec:
      goals:
        - RackAwareGoal
        - ReplicaCapacityGoal
      skipHardGoalCheck: true
    Copy to Clipboard Toggle word wrap
  5. リソースを作成または更新します。

    oc apply -f <kafka_rebalance_configuration_file>
    Copy to Clipboard Toggle word wrap

    Cluster Operator は Cruise Control から最適化プロポーザルを要求します。Kafka クラスターのサイズによっては処理に数分かかることがあります。

  6. 自動承認メカニズムを使用した場合は、最適化プロポーザルのステータスが Ready に変わるまで待ちます。自動承認メカニズムを有効にしていない場合は、最適化プロポーザルのステータスが ProposalReady に変わるまで待ちます。

    oc get kafkarebalance -o wide -w -n <namespace>
    Copy to Clipboard Toggle word wrap
    PendingProposal
    PendingProposal ステータスは、最適化プロポーザルの準備できているかどうかを確認するために、リバランス Operator が Cruise Control API をポーリングしていることを意味します。
    ProposalReady
    ProposalReady ステータスは、最適化プロポーザルのレビューおよび承認の準備ができていることを意味します。

    ステータスが ProposalReady に変わると、最適化プロポーザルを承認する準備が整います。

  7. 最適化プロポーザルを確認します。

    最適化プロポーザルは KafkaRebalance カスタムリソースの Status.Optimization Result プロパティーに含まれます。

    oc describe kafkarebalance <kafka_rebalance_resource_name>
    Copy to Clipboard Toggle word wrap

    最適化プロポーザルの例

    Status:
      Conditions:
        Last Transition Time:  2020-05-19T13:50:12.533Z
        Status:                ProposalReady
        Type:                  State
      Observed Generation:     1
      Optimization Result:
        Data To Move MB:  0
        Excluded Brokers For Leadership:
        Excluded Brokers For Replica Move:
        Excluded Topics:
        Intra Broker Data To Move MB:         0
        Monitored Partitions Percentage:      100
        Num Intra Broker Replica Movements:   0
        Num Leader Movements:                 0
        Num Replica Movements:                26
        On Demand Balancedness Score After:   81.8666802863978
        On Demand Balancedness Score Before:  78.01176356230222
        Recent Windows:                       1
      Session Id:                             05539377-ca7b-45ef-b359-e13564f1458c
    Copy to Clipboard Toggle word wrap

    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.
Copy to Clipboard Toggle word wrap

注記

このエラーは、CPU コアの数ではなく、CPU 容量をパーセンテージで示しています。このため、Kafka カスタムリソースで設定された CPU の数に直接マップされません。これは、Kafka.spec.kafka.resources.limits.cpu で設定された CPU のサイクルを持つ、ブローカーごとに単一の 仮想 CPU を持つようなものです。CPU 使用率と容量の比率は同じであるため、これはリバランスの動作に影響はありません。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat