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


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

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

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

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

前提条件

  • Streams for Apache Kafka クラスターに Cruise Control をデプロイ した。
  • 最適化ゴールと、必要に応じてブローカーリソースの容量制限を設定した。

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: {}

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

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

    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaRebalance
    metadata:
      name: my-rebalance
      labels:
        strimzi.io/cluster: my-cluster
    spec:
      mode: full

    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

    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

    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
  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
  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
  5. リソースを作成または更新します。

    oc apply -f <kafka_rebalance_configuration_file>

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

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

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

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

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

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

    oc describe kafkarebalance <kafka_rebalance_resource_name>

    最適化プロポーザルの例

    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

    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.

注記

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

© 2024 Red Hat, Inc.