19.5. Configuring and deploying Cruise Control with Kafka


Kafka リソースを設定して、Kafka クラスターと共に Cruise Control をデプロイします。Kafka リソースの CruiseControl プロパティーを使用して、デプロイを設定できます。Kafka クラスターごとに Cruise Control のインスタンスを 1 つデプロイします。

最適化の提案を生成するための最適化ゴールを指定するには、Cruise Control configgoals 設定を使用します。brokerCapacity を使用して、リソース配分に関連するゴールのデフォルトの容量制限を変更できます。ブローカーが異種ネットワークリソースを持つノードで実行されている場合、overrides を使用して各ブローカーのネットワーク容量制限を設定できます。

空のオブジェクト ({}) が CruiseControl 設定に使用されている場合、すべてのプロパティーはデフォルト値を使用します。

Cruise Control の設定オプションの詳細は、Streams for Apache Kafka カスタムリソース API リファレンス を参照してください。

前提条件

  • OpenShift クラスター
  • 稼働中の Cluster Operator

手順

  1. Kafka リソースの cruiseControl プロパティーを編集します。

    設定可能なプロパティーは以下の例のとおりです。

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      # ...
      cruiseControl:
        brokerCapacity: 1
          inboundNetwork: 10000KB/s
          outboundNetwork: 10000KB/s
          overrides: 2
          - brokers: [0]
            inboundNetwork: 20000KiB/s
            outboundNetwork: 20000KiB/s
          - brokers: [1, 2]
            inboundNetwork: 30000KiB/s
            outboundNetwork: 30000KiB/s
          # ...
        config: 3
          # Note that `default.goals` (superset) must also include all `hard.goals` (subset)
          default.goals: > 4
            com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal,
            com.linkedin.kafka.cruisecontrol.analyzer.goals.ReplicaCapacityGoal,
            com.linkedin.kafka.cruisecontrol.analyzer.goals.DiskCapacityGoal
            # ...
          hard.goals: >
            com.linkedin.kafka.cruisecontrol.analyzer.goals.RackAwareGoal
            # ...
          cpu.balance.threshold: 1.1
          metadata.max.age.ms: 300000
          send.buffer.bytes: 131072
          webserver.http.cors.enabled: true 5
          webserver.http.cors.origin: "*"
          webserver.http.cors.exposeheaders: "User-Task-ID,Content-Type"
          # ...
        resources: 6
          requests:
            cpu: 1
            memory: 512Mi
          limits:
            cpu: 2
            memory: 2Gi
        logging: 7
            type: inline
            loggers:
              rootLogger.level: INFO
        template: 8
          pod:
            metadata:
              labels:
                label1: value1
            securityContext:
              runAsUser: 1000001
              fsGroup: 0
            terminationGracePeriodSeconds: 120
        readinessProbe: 9
          initialDelaySeconds: 15
          timeoutSeconds: 5
        livenessProbe:
          initialDelaySeconds: 15
          timeoutSeconds: 5
        metricsConfig: 10
          type: jmxPrometheusExporter
          valueFrom:
            configMapKeyRef:
              name: cruise-control-metrics
              key: metrics-config.yml
    # ...
    1
    ブローカーリソースの容量制限。
    2
    オーバーライドは、異種ネットワークリソースを持つノード上で実行されている場合に、特定のブローカーのネットワーク容量制限を設定します。
    3
    Cruise Control の設定。Streams for Apache Kafka によって直接管理されないプロパティーに限り、標準の Cruise Control 設定を指定できます。
    4
    最適化ゴールの設定。デフォルトの最適化ゴール (default.goals)、メインの最適化ゴール (goals)、およびハードゴール (hard.goals) の設定を含めることができます。
    5
    CORS が有効になっており、Cruise Control API への読み取り専用アクセスが設定されています。
    6
    現在 cpu および memory である、サポートされるリソースの予約を要求し、消費可能な最大リソースを指定を制限します。
    7
    Cruise Control ロガーとログレベルは、ConfigMap を通じて直接 (inline) または間接 (external) に追加されます。カスタム Log4j 設定は、ConfigMap の log4j.properties キーの下に配置する必要があります。Cruise Control には、rootLogger.level という名前の単一のロガーがあります。ログレベルは INFO、ERROR、WARN、TRACE、DEBUG、FATAL、または OFF に設定できます。
    8
    テンプレートのカスタマイズ。ここでは、Pod が追加のセキュリティー属性でスケジュールされています。
    9
    コンテナーを再起動するタイミング (liveness) およびコンテナーがトラフィックを許可できるタイミング (readiness) を把握するためのヘルスチェック。
    10
    Prometheus メトリックが有効になりました。この例では、メトリクスは Prometheus JMX Exporter (デフォルトのメトリクスエクスポーター) に対して設定されます。
  2. リソースを作成または更新します。

    oc apply -f <kafka_configuration_file>
  3. デプロイメントのステータスを確認します。

    oc get deployments -n <my_cluster_operator_namespace>

    デプロイメント名と準備状態が表示されている出力

    NAME                      READY  UP-TO-DATE  AVAILABLE
    my-cluster-cruise-control 1/1    1           1

    my-cluster は Kafka クラスターの名前です。

    READY は、Ready/expected 状態のレプリカ数を表示します。AVAILABLE 出力に 1 が表示されれば、デプロイメントは成功しています。

自動作成されたトピック

以下の表は、Cruise Control のデプロイ時に自動作成される 3 つのトピックを表しています。このトピックは、Cruise Control が適切に動作するために必要であるため、削除または変更しないでください。指定された設定オプションを使用して、トピックの名前を変更できます。

表19.3 自動作成されたトピック
自動作成されたトピック設定デフォルトのトピック名作成元機能

metric.reporter.topic

strimzi.cruisecontrol.metrics

Streams for Apache Kafka Metrics Reporter

Metrics Reporter からの raw メトリクスを各 Kafka ブローカーに格納します。

partition.metric.sample.store.topic

strimzi.cruisecontrol.partitionmetricsamples

Cruise Control

各パーティションの派生されたメトリックを格納します。これは Metric Sample Aggregator によって作成されます。

broker.metric.sample.store.topic

strimzi.cruisecontrol.modeltrainingsamples

Cruise Control

クラスターワークロードモデル の作成に使用されるメトリックサンプルを格納します。

Cruise Control に必要なレコードを削除しないようにするため、自動作成されたトピックではログの圧縮は無効になっています。

注記

自動作成されたトピックの名前が、すでに Cruise Control が有効になっている Kafka クラスターで変更された場合、古いトピックは削除されないため、手動で削除する必要があります。

次のステップ

Cruise Control を設定およびデプロイした後、最適化プロポーザルを生成 できます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.