帮助我了解 kafka 是如何工作的。我有 3 个具有此配置的 kafka 经纪人:
broker.id=1
listeners=PLAINTEXT://1.2.3.4:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=105906176
message.max.bytes=105906176
replica.fetch.max.bytes=105906176
log.dirs=/opt/kafka_2.12-2.1.0/logs
num.partitions=10
num.recovery.threads.per.data.dir=10
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=600000
zookeeper.connect=1.2.3.4:2181,5.6.7.8:2181,3.1.2.1:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=3
auto.create.topics.enable=false
delete.topic.enable=true
replica.fetch.wait.max.ms=500
replica.lag.time.max.ms=10000
request.timeout.ms=305000
在我重新启动所有代理后,同时在 3 个代理中的 2 个中,我不断看到此错误:
kafka-server-start.sh [2448]:[2020-02-10 06:01:33,969] 错误 [KafkaApi-2] 活动代理的数量“0”不满足事务状态所需的复制因子“2”主题(通过“transaction.state.log.replication.factor”配置)。如果集群正在启动并且并非所有代理都已启动,则可以忽略此错误。(kafka.server.KafkaApis)
但是所有服务器都运行,所有 kafka 服务启动,所有 zookeeper 启动(echo stat | nc zookeeper_ip 2181- 显示一切正常)。为什么卡夫卡说 - 活着的经纪人人数“0”?
在一位经纪人那里,我没有看到任何错误。当我重新启动没有此错误的 kafka 代理(只是重新启动服务 kafka,而不是所有服务器)时 - kafka 集群开始工作。所有 kafka 代理相互连接,启动复制分区,一切正常。为什么会发生这种情况?为什么重启后kafka经纪人看不到对方?可能是当我们使用 3 个 kafka 代理时,我们不能同时重启所有这些代理?