検索

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

download PDF

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

dryrun パラメーターが指定され、false に設定されない限り、最適化プロポーザルは ドライラン として生成されます。

その後、ドライランの最適化プロポーザルの情報を分析し、開始するかどうかを決定します。

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

dryrun

type: boolean、デフォルト: true

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

excluded_topics

type: regex

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

goals

type: 文字列のリスト。default: 設定済み default.goals リスト

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

skip_hard_goals_check

type: boolean、デフォルト: false

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

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

json

type: boolean、デフォルト: false

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

verbose

type: boolean、デフォルト: false

Cruise Control サーバーが返す応答の詳細レベルを制御します。

前提条件

  • Kafka と ZooKeeper が実行されている。
  • Cruise Control が実行されている。

手順

  1. コンソール用にフォーマットされた最適化プロポーザルを生成するには、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.