我面临一个问题,卡夫卡集群设置,我有。我有一个卡夫卡集群,有两个经纪人连接到两个动物园管理员。我将数据发布到一个具有复制因子和分区的主题上,每个主题都带有一个spring引导卡夫卡生产者,并使用另一个spring引导应用程序进行消费。
我在以以下方式测试集群时发现了一种奇怪的行为-
Turned off node1 and node 2
Turned on node 1
Turned off node 1
Turned on node 2在打开节点2之后,Kafka集群失败了,我无法向Kafka提供数据。我的消费者开始像下面这样不断地传递信息。
未能建立到节点1 (/server1-ip:9092)的Producer clientId=producer-1连接。可能找不到经纪人。
问题在两个节点中都是可见的。但是,如果我让这两个系统保持一段时间,问题就会得到解决,并且我可以在不破坏集群的情况下关闭任何节点。
我的代理配置如下.
broker.id=0
侦听器=明文://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-log
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
连接=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
动物园管理员配置
dataDir=/home/user/kafka/data
clientPort=2181
maxClientCnxns=0
initLimit=10
syncLimit=5
tickTime=2000
服务器1=服务器1-ip:2888:3888
服务器2=服务器2-ip:2888:3888
这是卡夫卡的预期行为,还是我做错了这个配置?
有人能帮我解决这个问题吗..。
发布于 2020-02-17 10:52:59
您应该在生产者和消费者信任中向bootstrap.servers属性添加所有代理地址。通过这种方式,您可以在一个或多个服务器发生故障时连接到Kafka集群。
bootstrap.servers:用于建立与
集群的初始连接的主机/端口对的列表。客户端将使用所有服务器,不管这里指定了哪些服务器进行引导--这个列表只会影响用于发现完整服务器集的初始主机。此列表应以host1:port1、host2:port2、.的形式显示。由于这些服务器只是用于初始连接以发现完整的集群成员资格(这可能会动态变化),所以这个列表不需要包含完整的服务器集(不过,如果服务器关闭了,您可能需要不止一个服务器)。
发布于 2020-02-17 10:03:07
在属性文件中添加所有引导服务器in。如果服务器中的任何人停机,Kafka消费者将尝试使用其他引导服务器连接到Kafka。在下面的行中添加服务器2 url:
编辑:
spring.kafka.bootstrap-servers={SERVER1_HOST},{SERVER2_HOST}https://stackoverflow.com/questions/60259857
复制相似问题