我们有几十个不同的Kafka集群实验室
其中一些是与卡夫模式,其中大部分是普通的Kafka集群与zookeeper
由于我们在所有Kafka集群上运行基于python/perl/bash
的冒烟测试脚本,
然后我们要确定Kafka运行的模式-- Kraft还是Kraft
我将在这里分享一些选项,但我必须说,我测试的所有选项仍然没有说服力,我们希望找到更好的选择
第一种选择是使用Kafka PID作为
ps -ef | grep ` netstat -tulpn | grep "9092" | awk '{print $NF}' | sed s'/\// /g' | awk '{print $1}' ` | grep -v grep | grep -i kraft
字符串
这给出了PID内容,但如果binary/s folder/s不包括名称Kraft
,则我们不过滤字符串- Kraft
第二种选择是使用Kafka脚本-kafka-metadata-quorum.sh
bash kafka-metadata-quorum.sh --bootstrap-server `hostname`:9092 describe --status
ClusterId: uuZQoN9-TGmVU3lKDFCtww
LeaderId: 2001
LeaderEpoch: 975
HighWatermark: 224514
MaxFollowerLag: 0
MaxFollowerLagTimeMs: 0
CurrentVoters: [2001,2002,2003]
CurrentObservers: [1010,1001,1002,1003]
型
在Kraft模式下,我们应该得到上述细节,在zookeeper模式下,我们得到以下内容
kafka-metadata-quorum.sh --bootstrap-server `hostname`:9092 describe --status
org.apache.kafka.common.errors.UnsupportedVersionException: The broker does not support DESCRIBE_QUORUM
java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.UnsupportedVersionException: The broker does not support DESCRIBE_QUORUM
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:357)
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1908)
at org.apache.kafka.common.internals.KafkaFutureImpl.get(KafkaFutureImpl.java:165)
at org.apache.kafka.tools.MetadataQuorumCommand.handleDescribeStatus(MetadataQuorumCommand.java:208)
at org.apache.kafka.tools.MetadataQuorumCommand.execute(MetadataQuorumCommand.java:108)
at org.apache.kafka.tools.MetadataQuorumCommand.mainNoExit(MetadataQuorumCommand.java:61)
at org.apache.kafka.tools.MetadataQuorumCommand.main(MetadataQuorumCommand.java:56)
Caused by: org.apache.kafka.common.errors.UnsupportedVersionException: The broker does not support DESCRIBE_QUORUM
型
我也在考虑在/var/lib/kafka/kraft
下创建标志作为文件的选项,
但我不喜欢这样,因为文件可以删除的用户
其他最后一个选项是有缺陷的控制器PID(进程ID),所以如果它运行,那么我们可以说Kafka是Kraft模式,但实际上这个选项不是那么好,因为它与合并模式相关(当代理和控制器在同一主机上运行时),并且当控制器在专用主机上分离时不支持分离的集群,并且如果控制器由于某种原因关闭,那么这是一个问题
1条答案
按热度按时间vsnjm48y1#
jps
可能包含工作Kraft
;无法调用。对于集群本身,最好的选择是解析
server.properties
文件,以确定Kraft模式下是否存在quorum.voters
或缺少zookeeper.connect
。否则,
kafka-metadata-quorum.sh
也应该工作,因为非Kraft经纪人不应该对此做出响应。