Amazon MSK での LinkedInの Cruise Control for Apache Kafka の使用 - Amazon Managed Streaming for Apache Kafka

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon MSK での LinkedInの Cruise Control for Apache Kafka の使用

LinkedInの Cruise Control を使用して、Amazon MSK クラスターの再調整、異常の検出と修正、クラスターの状態と正常性のモニタリングを行うことができます。

Cruise Control をダウンロードして構築するには
  1. Amazon MSK クラスターと同じ Amazon VPC に Amazon EC2 インスタンスを作成します。

  2. 前のステップで作成した Amazon EC2 インスタンスに Prometheus をインストールします。プライベート IP とポートに注意してください。デフォルトのポート番号は 9090 です。クラスターのメトリクスを集約するように Prometheus を構成する方法については、「Prometheus によるオープンモニタリング」を参照してください。

  3. Amazon EC2 インスタンスに Cruise Control をダウンロードします。(または、必要に応じて、Cruise Control に別の Amazon EC2 インスタンスを使用することもできます。) Apache Kafka バージョン 2.4.* を搭載したクラスターの場合は、最新の 2.4.* Cruise Control リリースを使用してください。クラスターに 2.4.* より古いバージョンの Apache Kafka がある場合は、最新の 2.0.* Cruise Control リリースを使用してください。

  4. Cruise Control ファイルを解凍してから、解凍したフォルダに移動します。

  5. 次のコマンドを実行して git をインストールします。

    sudo yum -y install git
  6. 次のコマンドを実行して、ローカルリポジトリを初期化します。Your-Cruise-Control-Folderを、現在のフォルダ (Cruise Control のダウンロードを解凍したときに取得したフォルダ) の名前に置き換えます。

    git init && git add . && git commit -m "Init local repo." && git tag -a Your-Cruise-Control-Folder -m "Init local version."
  7. 次のコマンドを実行して、ソースコードを構築します。

    ./gradlew jar copyDependantLibs
Cruise Control を設定して実行するには
  1. config/cruisecontrol.properties ファイルを次のように更新します。サンプルブートストラップサーバーとブートストラップブローカー文字列をクラスターの値に置き換えます。クラスターのこれらの文字列を取得するには、コンソールでクラスターの詳細を確認できます。または、 GetBootstrapBrokersおよび DescribeCluster API オペレーション、または同等の CLI を使用することもできます。

    # If using TLS encryption, use 9094; use 9092 if using plaintext bootstrap.servers=b-1.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094,b-2.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094,b-3.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:9094 # SSL properties, needed if cluster is using TLS encryption security.protocol=SSL ssl.truststore.location=/home/ec2-user/kafka.client.truststore.jks # Use the Prometheus Metric Sampler metric.sampler.class=com.linkedin.kafka.cruisecontrol.monitor.sampling.prometheus.PrometheusMetricSampler # Prometheus Metric Sampler specific configuration prometheus.server.endpoint=1.2.3.4:9090 # Replace with your Prometheus IP and port # Change the capacity config file and specify its path; details below capacity.config.file=config/capacityCores.json
  2. config/capacityCores.json ファイルを編集して、適切なディスクサイズ、CPU コア、およびネットワークの入出力制限を指定します。DescribeCluster API オペレーション (または同等の CLI) を使用して、ディスクサイズを取得できます。CPU コアとネットワークの入出力制限については、Amazon EC2 インスタンスタイプを参照してください

    { "brokerCapacities": [ { "brokerId": "-1", "capacity": { "DISK": "10000", "CPU": { "num.cores": "2" }, "NW_IN": "5000000", "NW_OUT": "5000000" }, "doc": "This is the default capacity. Capacity unit used for disk is in MB, cpu is in number of cores, network throughput is in KB." } ] }
  3. オプションで、Cruise Control UI をインストールできます。ダウンロードするには、Cruise Control Frontend の設定に移動します。

  4. 次のコマンドを実行して、Cruise Control をスタートします。screentmux などのツールを使用して、長時間実行されるセッションを開いたままにすることを検討してください。

    <path-to-your-kafka-installation>/bin/kafka-cruise-control-start.sh config/cruisecontrol.properties 9091
  5. Cruise Control API または UI を使用して、Cruise Control にクラスター ロードデータがあり、リバランスの提案が行われていることを確認します。メトリクスの有効なウィンドウを取得するには、数分かかる場合があります。

Cruise Control for Amazon MSK の自動デプロイテンプレート

このCloudFormation テンプレート を使用して、Cruise Control と Prometheus を簡単にデプロイし、Amazon MSK クラスターのパフォーマンスに関するより深い洞察を得て、リソース使用率を最適化することもできます。

主な特徴:
  • Cruise Control と Prometheus が事前設定された Amazon EC2 インスタンスの自動プロビジョニング。

  • Amazon MSK でプロビジョニングされたクラスターのサポート。

  • PlainText および IAM による柔軟な認証。

  • Cruise Control に Zookeeper の依存関係はありません。

  • Amazon S3 バケットに保存されている独自の設定ファイルを提供することで、Prometheus ターゲット、Cruise Control 容量設定、およびその他の設定を簡単にカスタマイズできます。