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


/rebalance エンドポイントに POST リクエストを行うと、Cruise Control は 最適化プロポーザル を生成して、指定の最適化ゴールを基にして Kafka クラスターをリバランスします。

dryrun パラメーターが入力され、false に設定されていない限り、最適化プロポーザルはドライランとして生成されます。「ドライラン」モードでは、Cruise Control は最適化プロポーザルと予測された結果を生成しますが、クラスターをリバランスしてプロポーザルを開始しません。

最適化プロポーザルで返される情報を分析して、プロポーザルを開始するかどうかを判断できます。

以下は、/rebalance エンドポイントへの要求のキーパラメーターです。使用できるすべてのパラメーターの詳細は、Cruise Control Wiki の「REST APIs」を参照してください。

dryrun

type: boolean、default: true

最適化プロポーザルのみを生成するか(true)、最適化プロポーザルを生成してクラスターリバランスを行うか、Cruise Control に通知します。false

dryrun=true (デフォルト)の場合、verbose パラメーターを渡して、Kafka クラスターの状態に関する詳細情報を返すことができます。これには、最適化プロポーザルの適用前および後の各 Kafka ブローカーの負荷のメトリクスと、before と after 値の違いが含まれます。

excluded_topics

type: regex

最適化プロポーザルの計算から除外するトピックと一致する正規表現。

goals

type: list of strings, default: configured default.goals list

最適化プロポーザルの準備に使用するユーザー提供の最適化ゴールのリスト。ゴールが指定されない場合、cruisecontrol.properties ファイルの設定済みの default.goals リストが使用されます。

skip_hard_goals_check

type: boolean、default: false

デフォルトでは、Cruise Control はユーザー提供の最適化ゴール( goals パラメーター)に設定済みのハードゴール( hard.goals)がすべて含まれていることを確認します。設定された hard.goals のサブセットではないゴールを指定する場合は、リクエストが失敗します。

設定されたすべての hard.goals を含まないユーザー提供の最適化ゴールで最適化プロポーザルを生成する場合は、skip_hard_goals_checktrue に設定します。

json

type: boolean、default: false

Cruise Control サーバーによって返される応答の型を制御します。指定されない場合、または false に設定されている場合、Cruise Control はコマンドラインで表示するためにフォーマットされたテキストを返します。返された情報の要素を抽出する場合は、json=true を設定します。これにより、jq などのツールやスクリプトやプログラムで解析できる JSON 形式のテキストが返されます。

verbose

type: boolean、default: false

Cruise Control サーバーによって返される応答の詳細レベルを制御します。dryrun=true と併用することができます。

前提条件

  • Kafka および ZooKeeper が稼働している必要があります。
  • Cruise Control が稼働している必要があります。

手順

  1. コンソールに対してフォーマットされた「dry run」最適化プロポーザルを生成するには、POST 要求を /rebalance エンドポイントに送信します。

    • 設定した default.goals を使用するには、以下を実行します。

      curl -v -X POST 'cruise-control-server:9090/kafkacruisecontrol/rebalance'

      キャッシュされた最適化プロポーザルは即座に返されます。

      注記

      NotEnoughValidWindows が返されると、Cruise Control は最適化プロポーザルを生成するために十分なメトリクスデータを記録していません。数分待機した後に、リクエストを再送信します。

    • 設定された default.goals の代わりにユーザー提供の最適化ゴールを指定するには、goals パラメーターにゴールを 1 つ以上指定します。

      curl -v -X POST 'cruise-control-server:9090/kafkacruisecontrol/rebalance?goals=RackAwareGoal,ReplicaCapacityGoal'

      指定されたゴールを満たす場合、キャッシュされた最適化プロポーザルは即座に返されます。それ以外の場合、指定のゴールを使用して新しい最適化プロポーザルが生成されます。算出にかかる時間が長くなります。この挙動を強制するには、ignore_proposal_cache=true パラメーターをリクエストに追加します。

    • 設定済みのすべてのハードゴールを含まないユーザー提供の最適化ゴールを指定するには、skip_hard_goal_check=true パラメーターをリクエストに追加します。

      curl -v -X POST 'cruise-control-server:9090/kafkacruisecontrol/rebalance?goals=RackAwareGoal,ReplicaCapacityGoal,ReplicaDistributionGoal&skip_hard_goal_check=true'
  2. 応答に含まれる最適化プロポーザルを確認します。プロパティーは、保留中のクラスターリバランス操作を記述します。

    このプロポーザルには、提案された最適化の概要、その後の各デフォルト最適化ゴールのサマリー、およびプロポーザルの実行後に予想されるクラスター状態が含まれます。

    以下の情報に注意してください。

    • Cluster load after rebalance の概要要件を満たす場合は、高レベルの概要を使用して、提案された変更の影響を評価する必要があります。
    • n inter-broker replica (y MB) moves ブローカー間のネットワーク全体に移動するデータ量を示します。値が高いほど、リバランス中の Kafka クラスターのパフォーマンスに影響する可能性があります。
    • n intra-broker replica (y MB) moves ブローカー自体(ディスク)内で移動するデータ量を示します。値が大きいほど、個別のブローカーのパフォーマンスに影響する可能性があります(ただし n inter-broker replica (y MB) moves未満です)。
    • リーダーシップの移動の数。これは、リバランス中のクラスターのパフォーマンスに対する影響を与えます。

非同期応答

Cruise Control REST API エンドポイントは、デフォルトでは 10 秒後にタイムアウトしますが、プロポーザルの生成はサーバーで続行されます。最新のキャッシュされた最適化プロポーザルの準備ができない場合や、ユーザー提供の最適化ゴールが ignore_proposal_cache=true で指定された場合にタイムアウトが発生することがあります。

後で最適化プロポーザルを取得できるようにするには、/rebalance エンドポイントからの応答のヘッダーに指定されるリクエストに固有の識別子を書き留めておきます。

curl を使用して応答を取得するには、詳細(-v)オプションを指定します。

curl -v -X POST 'cruise-control-server:9090/kafkacruisecontrol/rebalance'

以下はヘッダーの例です。

* Connected to cruise-control-server (::1) port 9090 (#0)
> POST /kafkacruisecontrol/rebalance HTTP/1.1
> Host: cc-host:9090
> User-Agent: curl/7.70.0
> Accept: /
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 01 Jun 2020 15:19:26 GMT
< Set-Cookie: JSESSIONID=node01wk6vjzjj12go13m81o7no5p7h9.node0; Path=/
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< User-Task-ID: 274b8095-d739-4840-85b9-f4cfaaf5c201
< Content-Type: text/plain;charset=utf-8
< Cruise-Control-Version: 2.0.103.redhat-00002
< Cruise-Control-Commit_Id: 58975c9d5d0a78dd33cd67d4bcb497c9fd42ae7c
< Content-Length: 12368
< Server: Jetty(9.4.26.v20200117-redhat-00001)

タイムアウト内に最適化プロポーザルが準備状態でない場合は、POST リクエストを再送信できます。これには、ヘッダーの元のリクエストの User-Task-ID が含まれます。

curl -v -X POST -H 'User-Task-ID: 274b8095-d739-4840-85b9-f4cfaaf5c201' 'cruise-control-server:9090/kafkacruisecontrol/rebalance'
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.