将领英的巡航控制用于阿帕奇卡夫卡与亚马逊 MSK - Amazon Managed Streaming for Apache Kafka
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将领英的巡航控制用于阿帕奇卡夫卡与亚马逊 MSK

您可以使用 LinkedIn 的巡航控制重新平衡 Amazon MSK 集群、检测和修复异常以及监控集群的状态和运行状况。

下载并构建巡航控制

  1. 在与 Amazon MSK 集群相同的亚马逊 VPC 中创建一个 Amazon EC2 实例。

  2. 将 Prometheus 安装到您在上一步创建的 Amazon EC2 实例上。请注意私有 IP 和端口。默认端口号为 9090。有关如何配置 Prometheus 以聚合集群指标的信息,请参阅Prometheus 的开源监控系统

  3. 下载巡航控制在 Amazon EC2 实例上。(或者,如果您愿意,您可以使用单独的 Amazon EC2 实例进行巡航控制。) 对于具有 Apache Kafka 版本 2.4.* 的集群,请使用最新的 2.4.* 巡航控制版本。如果您的集群具有早于 2.4.* 的 Apache Kafka 版本,请使用最新的 2.0.* 巡航控制版本。

  4. 解压缩巡航控制文件,然后转至解压缩的文件夹。

  5. 运行以下命令来安装 git。

    sudo yum -y install git
  6. 运行以下命令初始化本地存储库。Replace Your-Cruise-Control-Folder 替换为当前文件夹(解压缩巡航控制下载时获得的文件夹)的名称。

    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

配置和运行巡航控制

  1. config/cruisecontrol.properties文件。将示例引导服务器和 Apache ZooKeeper 连接字符串替换为集群的值。要获取集群的这些字符串,您可以在控制台中查看集群详细信息。此外,也可以使用GetBootstrapBrokersDescribeClusterAPI 操作或其 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 zookeeper.connect=z-1.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:2181,z-2.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:2181,z-3.test-cluster.2skv42.c1.kafka.us-east-1.amazonaws.com:2181 # 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 内核以及网络输入/输出限制。您可以使用DescribeClusterAPI 操作(或其等效 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. 您可以有选择性地安装巡航控制 UI。要下载,请转至设置巡航控制前端

  4. 运行以下命令启动巡航控制。考虑使用像screen或者tmux以保持长时间运行的会话处于打开状态。

    ./kafka-cruise-control-start.sh config/cruisecontrol.properties 9091
  5. 使用巡航控制 API 或 UI 确保巡航控制具有集群加载数据,并且正在提出重新平衡建议。可能需要几分钟的时间以获得有效的指标窗口。