13.5. 最適化ゴールの概要


最適化ゴールは、Kafka クラスター全体のワークロード再分散およびリソース使用の制約です。Cruise Control は Kafka クラスターの再分散を行うために、最適化ゴールを使用して 最適化プロポーザル を生成します。

13.5.1. 優先度によるゴールの順序

Red Hat Enterprise Linux 上の Streams for Apache Kafka は、Cruise Control プロジェクトで開発されたすべての最適化ゴールをサポートしています。以下に、サポートされるゴールをデフォルトの優先度順に示します。

  1. ラックアウェアネス (Rack Awareness)
  2. 一連のトピックに対するブローカーごとのリーダーレプリカの最小数
  3. レプリカの容量
  4. 容量: ディスク容量、ネットワークインバウンド容量、ネットワークアウトバウンド容量
  5. CPU 容量
  6. レプリカの分散
  7. 潜在的なネットワーク出力
  8. リソース分布: ディスク使用率の分布、ネットワークインバウンド使用率の分布、ネットワークアウトバウンド使用率の分布。
  9. リーダーへの単位時間あたりバイト流入量の分布
  10. トピックレプリカの分散
  11. CPU 使用率の分散
  12. リーダーレプリカの分散
  13. 優先リーダーエレクション
  14. Kafka Assigner のディスク使用率の分散
  15. ブローカー内のディスク容量
  16. ブローカー内のディスク使用率

各最適化ゴールの詳細は、Cruise Control WikiGoals を参照してください。

13.5.2. Cruise Control プロパティーファイルのゴール設定

最適化ゴールの設定は、cruise-control/config/ ディレクトリー内の cruisecontrol.properties ファイルで行います。Cruise Control には、満たなければならない厳しい最適化ゴールのほか、メイン、デフォルト、およびユーザーが指定した最適化ゴールの設定があります。

次の設定では、次のタイプの最適化ゴールを指定できます。

  • メインゴールcruisecontrol.properties ファイル
  • ハードゴール — cruisecontrol.properties ファイル
  • デフォルトゴールcruisecontrol.properties ファイル
  • ユーザー提供のゴール — 実行時パラメーター

オプションで、ユーザー提供 の最適化ゴールは、実行時に /rebalance エンドポイントへのリクエストのパラメーターとして設定されます。

最適化ゴールは、ブローカーリソースのあらゆる 容量制限 の対象となります。

13.5.3. ハードおよびソフト最適化ゴール

ハードゴールは最適化プロポーザルで 必ず 満たさなければならないゴールです。ハードゴールとして設定されていないゴールは ソフトゴール と呼ばれます。ソフトゴールは ベストエフォート ゴールと解釈できます。これらは、最適化プロポーザルで満たす必要はありませんが、最適化の計算に含まれます。

Cruise Control は、すべてのハードゴールを満たし、優先度順にできるだけ多くのソフトゴールを満たす最適化プロポーザルを算出します。すべてのハードゴールを 満たさない 最適化プロポーザルは Analyzer によって拒否され、ユーザーには送信されません。

注記

たとえば、クラスター全体でトピックのレプリカを均等に分散するソフトゴールがあるとします (トピックレプリカ分散のゴール)。このソフトゴールを無視すると、設定されたハードゴールがすべて有効になる場合、Cruise Control はこのソフトゴールを無視します。

Cruise Control では、以下の メイン最適化ゴール がハードゴールとして事前設定されています。

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal

ハードゴールを変更するには、cruisecontrol.properties ファイルの hard.goals プロパティーを編集し、完全修飾ドメイン名を使用してゴールを指定します。

ハードゴールの数を増やすと、Cruise Control が有効な最適化プロポーザルを計算して生成する可能性が低くなります。

13.5.4. メイン最適化ゴール

メイン最適化ゴールはすべてのユーザーが使用できます。メイン最適化ゴールにリストされていないゴールは、Cruise Control 操作で使用できません。

次に示す主な最適化 goal は、cruisecontrol.properties ファイルの goal プロパティーに優先順位の降順で事前設定されています。

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal; PreferredLeaderElectionGoal

複雑さを軽減するために、最適化の提案を生成するために使用される 1 つ以上のゴールを完全に除外する必要がない限り、事前設定されたメインの最適化ゴールを変更しないことを推奨します。必要な場合、メイン最適化ゴールの優先順位は、デフォルトの最適化ゴールの設定で変更できます。

事前設定された主な最適化ゴールを変更するには、目標のリストを ゴール プロパティーに優先度の高い順に指定します。cruisecontrol.properties ファイルに記載されているように、完全修飾ドメイン名を使用します。

主なゴールを少なくとも 1 つ指定する必要があります。そうしないと、Cruise Control がクラッシュします。

注記

事前設定されたメインの最適化ゴールを変更する場合は、設定された hard.goals が、設定したメインの最適化ゴールのサブセットであることを確認する必要があります。そうしないと、最適化プロポーザルの生成時にエラーが発生します。

13.5.5. デフォルトの最適化ゴール

Cruise Control は デフォルトの最適化ゴール リストを使用して、キャッシュされた最適化プロポーザル を生成します。詳細は、「最適化プロポーザルの概要」 を参照してください。

ユーザー提供の最適化ゴール を設定すると、デフォルトの最適化ゴールを実行時に上書きできます。

次のデフォルトの最適化ゴールは、cruisecontrol.properties ファイルの default.goals プロパティーに優先順位の降順で事前設定されています。

RackAwareGoal; MinTopicLeadersPerBrokerGoal; ReplicaCapacityGoal; DiskCapacityGoal; NetworkInboundCapacityGoal; NetworkOutboundCapacityGoal; CpuCapacityGoal; ReplicaDistributionGoal; PotentialNwOutGoal; DiskUsageDistributionGoal; NetworkInboundUsageDistributionGoal; NetworkOutboundUsageDistributionGoal; CpuUsageDistributionGoal; TopicReplicaDistributionGoal; LeaderReplicaDistributionGoal; LeaderBytesInDistributionGoal

デフォルトのゴールを 1 つ以上指定する必要があります。そうしないと、Cruise Control がクラッシュします。

デフォルトの最適化ゴールを変更するには、default.goals プロパティーで目標のリストを優先度の高い順に指定します。デフォルトのゴールは、主要な最適化ゴールのサブセットである必要があります。完全修飾ドメイン名を使用します。

13.5.6. ユーザー提供の最適化ゴール

ユーザー提供の最適化ゴール は、特定の最適化プロポーザルの設定済みのデフォルトゴールを絞り込みます。必要に応じて、/rebalance エンドポイントへの HTTP リクエストのパラメーターとして設定することができます。詳細は、「最適化プロポーザルの生成」 を参照してください。

ユーザー提供の最適化ゴールは、さまざまな状況の最適化プロポーザルを生成できます。たとえば、ディスクの容量やディスクの使用率を考慮せずに、Kafka クラスター全体でリーダーレプリカの分布を最適化したい場合があります。そのため、/rebalance エンドポイントに、リーダーレプリカディストリビューションの単一のゴールが含まれるリクエストを送信します。

ユーザー提供の最適化ゴールには以下が必要になります。

最適化プロポーザルの設定済みのハードゴールを無視するには、skip_hard_goals_check=true パラメーターをリクエストに追加します。

関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.