本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将 LinkedIn 对 Apache Kafka 的巡回控制与 Amazon MSK 结合使用
您可以使用 LinkedIn 的飞船控制重新平衡 Amazon MSK 集群,检测和修复异常,以及监控集群的状态和运行状况。
下载和构建飞船控制
-
在与Amazon EC2相同的 Amazon VPC 中创建 Amazon MSK 集群 实例。
-
在上一步中创建的 Amazon EC2 实例上安装 Prometheus。记下私有 IP 和端口。默认端口号为 9090。有关如何配置 Prometheus 以聚合集群的指标的信息,请参阅Prometheus 的开源监控系统。
-
在 实例上下载
Crue Control (订阅控制)Amazon EC2。(或者,如果您愿意,也可以使用单独的 Amazon EC2 实例进行巡回控制。) 对于 Apache Kafka 版本 2.4.* 的集群,请使用最新的 2.4.* 飞船控制版本。如果您的集群具有 2.4.* 之前的 Apache Kafka 版本,请使用最新的 2.0。* 飞船控制版本。 -
解压缩 Cruing Control 文件,然后转到解压缩的文件夹。
-
运行以下命令安装 git。
sudo yum -y install git
-
运行以下命令初始化本地存储库。Replace
Your-Cruise-Control-Folder
替换为当前文件夹(即您在解压缩 Cuting Control 下载时获得的文件夹)的名称。git init && git add . && git commit -m "Init local repo." && git tag -a
Your-Cruise-Control-Folder
-m "Init local version." -
运行以下命令生成源代码。
./gradlew jar copyDependantLibs
配置和运行巡回控制
-
对
config/cruisecontrol.properties
文件进行以下更新。将示例引导服务器和 Apache ZooKeeper 连接字符串替换为集群的值。要获取集群的这些字符串,您可以在 控制台中查看集群详细信息。或者,您也可以使用 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 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
-
编辑
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." } ] }
-
您可以选择性地安装 Criing Control UI。要下载它,请转到设置巡回控制前端
。 -
运行以下命令以启动巡回控制。考虑使用
screen
或tmux
等工具来使长时间运行的会话保持打开状态。./kafka-cruise-control-start.sh config/cruisecontrol.properties 9091
-
使用飞船控制 APIs 或 UI 确保飞船控制具有集群加载数据,并且它正在提出重新平衡建议。获取有效的指标时段可能需要几分钟时间。