Kafka群集配置问题

时间:2020-02-17 09:56:54

标签: apache-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
advertised.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 = serever1-ip:2181,serever2-ip:2181
zookeeper.connection.timeout.ms = 6000
group.initial.rebalance.delay.ms = 3000
auto.leader.rebalance.enable = true
leader.imbalance.check.interval.seconds = 5


Zookeeper配置


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的预期行为,还是此配置有问题?

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

2 个答案:

答案 0 :(得分:0)

您应将所有代理地址都添加到生产者和使用者配置中的bootstrap.servers属性中。这样一来,如果一台或多台服务器发生故障,您就可以连接到Kafka群集。

bootstrap.servers :用于建立与Kafka群集的初始连接的主机/端口对列表。客户端 不管使用哪个服务器,都将使用所有服务器 在此处指定用于引导-此列表仅影响初始 用于发现整套服务器的主机。此列表应该在 形式为host1:port1,host2:port2,....由于这些服务器只是 用于初始连接以发现整个群集 成员资格(可能会动态更改),此列表无需包含 整套服务器(您可能需要多个服务器,以防 服务器已关闭)。

答案 1 :(得分:-1)

在属性文件中添加所有引导服务器IP。如果服务器中的任何一个出现故障,Kafka使用者将尝试使用其他]]自举服务器连接到Kafka。在下面的行中添加服务器2的网址:

编辑:

spring.kafka.bootstrap-servers={SERVER1_HOST},{SERVER2_HOST}