Apache Kafka +如何使用Kraft模式或使用zookeeper模式的Kafka背叛Kafka集群

hc8w905p  于 5个月前  发布在  Apache
关注(0)|答案(1)|浏览(61)

我们有几十个不同的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模式,但实际上这个选项不是那么好,因为它与合并模式相关(当代理和控制器在同一主机上运行时),并且当控制器在专用主机上分离时不支持分离的集群,并且如果控制器由于某种原因关闭,那么这是一个问题

vsnjm48y

vsnjm48y1#

jps可能包含工作Kraft;无法调用。
对于集群本身,最好的选择是解析server.properties文件,以确定Kraft模式下是否存在quorum.voters或缺少zookeeper.connect
否则,kafka-metadata-quorum.sh也应该工作,因为非Kraft经纪人不应该对此做出响应。

相关问题