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