首页 > 解决方案 > Kafka集群配置问题

问题描述

我的 Kafka 集群设置存在问题。我有一个 Kafka 集群,其中有两个代理连接到两个动物园管理员。我将数据发布到一个主题,该主题具有复制因子和两个分区,每个分区都有一个 Spring Boot Kafka 生产者,并与另一个 Spring Boot 应用程序一起使用。

在以以下方式测试集群时,我发现了一种奇怪的行为 -

 Turned off node1 and node 2
 Turned on node 1
 Turned off node 1
 Turned on node 2

打开节点 2 后,Kafka 集群出现故障,我无法向 Kafka 生成数据。我的消费者开始连续发送消息,如下所示。

[Producer clientId=producer-1] 无法建立到节点 1 (/server1-ip:9092) 的连接。经纪人可能不可用。

问题在两个节点中都可见。但是如果我让两个系统都运行一段时间,问题就会得到解决,我可以在不破坏集群的情况下关闭任何节点。

我的代理配置如下。


broker.id=0
listeners=PLAINTEXT://server1-ip:9092
Advertisementd.listeners=PLAINTEXT://serever1-ip:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes =102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/home/user/kafka/data/kafka-logs
num.partitions=1
num.recovery.threads.per.data .dir=2 offsets.topic.replication.factor
=2
transaction.state.log.replication.factor=2
transaction.state.log.min.isr=2
log.retention.hours=168
log.segment.bytes=1073741824
log .retention.check.interval.ms=300000
zookeeper.connect=server1-ip:2181,server2-ip:2181
zookeeper.connection.timeout.ms=6000 group.initial.rebalance.delay.ms
=3000
auto.leader.rebalance.enable=true
leader.imbalance.check.interval.seconds=5


动物园管理员配置


dataDir=/home/user/kafka/data
clientPort=2181
maxClientCnxns=0
initLimit=10
syncLimit=5
tickTime=2000
server.1=server1-ip:2888:3888
server.2=server2-ip:2888:3888

这是 Kafka 的预期行为还是我对这个配置做错了什么?

有人可以帮我解决这个问题..

标签: apache-kafka

解决方案


您应该将所有代理地址添加到生产者和消费者配置中的 bootstrap.servers 属性。通过这种方式,您可以在一台或多台服务器发生故障的情况下连接到 Kafka 集群。

bootstrap.servers:用于建立与 Kafka 集群的初始连接的主机/端口对列表。客户端将使用所有服务器,无论此处指定哪些服务器进行引导——此列表仅影响用于发现完整服务器集的初始主机。此列表应采用 host1:port1,host2:port2,.... 的形式。由于这些服务器仅用于初始连接以发现完整的集群成员(可能会动态更改),因此此列表不需要包含完整集服务器数量(但您可能需要多个服务器,以防服务器停机)。


推荐阅读