第14章 Cruise Control を使用したクラスターのリバランス
Cruise Control は、クラスターワークロードの監視、事前定義の制約を基にしたクラスターの再分散、異常の検出および修正などの Kafka の操作を自動化するオープンソースのシステムです。Cruise Control は Load Monitor、Analyzer、Anomaly Detector、および Executor の主な 4 つのコンポーネントと、クライアントの対話に使用される REST API で設定されます。
Cruise Control を使用して Kafka クラスターを リバランス できます。Red Hat Enterprise Linux 上の AMQ Streams の Cruise Control は、個別の zip 形式のディストリビューションとして提供されます。
AMQ Streams は REST API を使用して、以下の Cruise Control 機能をサポートします。
- 最適化ゴールから最適化プロポーザルを生成します。
最適化プロポーザルを基にして Kafka クラスターのリバランスを行います。
- 最適化ゴール
最適化ゴールは、リバランスから達成する特定のゴールを表します。たとえば、トピックのレプリカをブローカー間でより均等に分散することがゴールになる場合があります。設定から追加するゴールを変更できます。ゴールは、ハードゴールまたはソフトゴールとして定義されます。Cruise Control 展開設定を使用してハード目標を追加できます。また、これらの各カテゴリーに適合するメイン、デフォルト、およびユーザー提供の目標もあります。
- ハードゴール は事前設定されており、最適化プロポーザルが正常に実行されるには満たされる必要があります。
- 最適化プロポーザルが正常に実行されるには、ソフトゴール を満たす必要はありません。これは、すべてのハードゴールが一致することを意味します。
- メインゴール は Cruise Control から継承されます。ハードゴールとして事前設定されているものもあります。メインゴールは、デフォルトで最適化プロポーザルで使用されます。
- デフォルトのゴール は、デフォルトでメインゴールと同じです。デフォルトゴールのセットを指定できます。
- ユーザー提供 のゴールは、特定の最適化プロポーザルを生成するために設定されるデフォルトゴールのサブセットです。
- 最適化プロポーザル
最適化プロポーザルは、リバランスから達成するゴールで構成されます。最適化プロポーザルを生成して、提案された変更の概要と、リバランス可能な結果を作成します。ゴールは特定の優先順位で評価されます。その後、プロポーザルの承認または拒否を選択できます。プロポーザルを拒否し、調整したゴールセットを使用して再度実行できます。
次の API エンドポイントのいずれかにリクエストを送信することで、最適化の提案を生成して承認できます。
- /rebalance エンドポイントで完全なリバランスを実行します。
- /add_broker エンドポイントは、Kafka クラスターをスケールアップするときにブローカーを追加した後に再調整します。
- /remove_broker エンドポイントを再調整してから、Kafka クラスターをスケールダウンするときにブローカーを削除します。
最適化ゴールは、設定プロパティーファイルで設定します。AMQ Streams には、Cruise Control のプロパティーファイルのサンプルが含まれています。
自己修復、通知、独自ゴールの作成、トピックレプリケーション係数の変更など、その他の Cruise Control の機能は現在サポートされていません。
14.1. Cruise Control のコンポーネントと機能 リンクのコピーリンクがクリップボードにコピーされました!
Cruise Control は、Load Monitor、Analyzer、Anomaly Detector、Executor の 4 つの主要コンポーネントと、クライアントとの対話用の REST API で設定されています。AMQ Streams は REST API を使用して、以下の Cruise Control 機能をサポートします。
- 最適化ゴールから最適化プロポーザルを生成します。
- 最適化プロポーザルを基にして Kafka クラスターのリバランスを行います。
- 最適化ゴール
最適化ゴールは、リバランスから達成する特定のゴールを表します。たとえば、トピックのレプリカをブローカー間でより均等に分散することがゴールになる場合があります。設定から追加するゴールを変更できます。ゴールは、ハードゴールまたはソフトゴールとして定義されます。Cruise Control 展開設定を使用してハード目標を追加できます。また、これらの各カテゴリーに適合するメイン、デフォルト、およびユーザー提供の目標もあります。
- ハードゴール は事前設定されており、最適化プロポーザルが正常に実行されるには満たされる必要があります。
- 最適化プロポーザルが正常に実行されるには、ソフトゴール を満たす必要はありません。これは、すべてのハードゴールが一致することを意味します。
- メインゴール は Cruise Control から継承されます。ハードゴールとして事前設定されているものもあります。メインゴールは、デフォルトで最適化プロポーザルで使用されます。
- デフォルトのゴール は、デフォルトでメインゴールと同じです。デフォルトゴールのセットを指定できます。
- ユーザー提供のゴール は、特定の最適化プロポーザルを生成するために設定されるデフォルトゴールのサブセットです。
- 最適化プロポーザル
最適化プロポーザルは、リバランスから達成するゴールで構成されます。最適化プロポーザルを生成して、提案された変更の概要と、リバランス可能な結果を作成します。ゴールは特定の優先順位で評価されます。その後、プロポーザルの承認または拒否を選択できます。プロポーザルを拒否し、調整したゴールセットを使用して再度実行できます。
3 つのモードのいずれかで最適化プロポーザルを生成できます。
-
fullはデフォルトのモードで、完全なリバランスを実行します。 -
add-brokersは、Kafka クラスターをスケールアップするときにブローカーを追加した後に使用するモードです。 -
remove-brokersは、Kafka クラスターを縮小するときにブローカーを削除する前に使用するモードです。
-
自己修復、通知、独自ゴールの作成、トピックレプリケーション係数の変更など、その他の Cruise Control の機能は現在サポートされていません。