【发布时间】:2017-11-01 01:15:10
【问题描述】:
拥有 kafka 代理和 zookeeper 的 docker 图像 - 暂时将其称为 z1, b1, b2。
它们部署在两个物理服务器 s1 和 s2 上,如下所示:s1 包含 z1 和 b1s2 包含 b2
zookeeper在自己的docker-compose.yml文件中设置了如下端口:
- 2181:2181
- 2888:2888
- 3888:3888
和经纪人如下:
- 9092:9092
可以创建带有--replication-factor 2 和--partitions 4 的主题。
一直没有数据推送到主题,但仍然出现以下问题。
如果kafka-topics --describe --topic <name_of_topic> --zookeeper <zookeeperIP:port> 在主题创建后不久运行,那么一切都是insync 并且看起来不错。
在第二次运行(有短暂延迟)时,b1 会从insync 中删除b2 分区副本,但@987654339 @ 不会从 insync 中删除 b1 分区副本。
在来自b1 的 server.log 中,显示了许多这样的异常:
WARN [ReplicaFetcherThread-0-1], Error in fetch kafka.server.ReplicaFetcherThread$FetchRequest@42746de3 (kafka.server.ReplicaFetcherThread)
java.io.IOException: Connection to ef447651b07a:9092 (id: 1 rack: null) failed
at kafka.utils.NetworkClientBlockingOps$.awaitReady$1(NetworkClientBlockingOps.scala:83)
at kafka.utils.NetworkClientBlockingOps$.blockingReady$extension(NetworkClientBlockingOps.scala:93)
at kafka.server.ReplicaFetcherThread.sendRequest(ReplicaFetcherThread.scala:248)
at kafka.server.ReplicaFetcherThread.fetch(ReplicaFetcherThread.scala:238)
at kafka.server.ReplicaFetcherThread.fetch(ReplicaFetcherThread.scala:42)
at kafka.server.AbstractFetcherThread.processFetchRequest(AbstractFetcherThread.scala:118)
at kafka.server.AbstractFetcherThread.doWork(AbstractFetcherThread.scala:103)
at kafka.utils.ShutdownableThread.run(ShutdownableThread.scala:63)
在代理 b1 和 b2 之间交换领导工作,因为它们被关闭并重新启动,但只有最后一个在线完全控制主题 - 是所有分区的领导,只有一个 insync ,即使其他代理重新联机。
尝试清理所有数据,重置代理和动物园管理员,但问题仍然存在。
为什么没有正确复制分区?
【问题讨论】:
标签: docker apache-kafka