【发布时间】:2020-01-26 10:56:24
【问题描述】:
我想在 3 台不同的机器上拥有 3 个 kafka 副本。
在我的第一台机器上,我使用以下配置文件启动 zookeeper:
dataDir=/root/kafka/zookeeper
clientPort=2181
clientPortAddress=172.16.1.1
maxClientCnxns=0
tickTime=2000
initLimit=10
syncLimit=5
server.1=0.0.0.0:2888:3888
server.2=172.16.1.2:2888:3888
server.3=172.16.1.3:2888:3888
其中dataDir 包含值为1 的myid 文件。
在第一台机器上,我还使用以下配置文件启动了一个 kafka 服务器:
broker.id=1
port=9001
log.dirs=/root/logs/kafka-logs
zookeeper.connect=172.16.1.1:2181,172.16.1.2:2181,
172.16.1.3:2181
zookeeper.connection.timeout.ms=6000
advertised.host.name=172.16.1.1
在第二台和第三台机器上,我使用类似的配置文件启动 zookeeper 和 kafka 服务器。
然后我在第一台机器上运行一个生产者来产生 1000000 条消息。
现在我想在 3 台机器上分别使用一个消费者来消费这 1000000 条消息。
问题是:
- 如果我在第一台机器上杀死一个 kafka 服务器,则没有消费者在第二台或第三台机器上消费消息。其他副本似乎在复制生成的消息方面没有发挥作用。
我的问题是:如何在不同的机器上正确设置 kafka 服务器和 2 个副本,以便消费者可以读取来自 kafka 的消息,包括 kafka 服务器故障的情况?
【问题讨论】:
标签: apache-kafka apache-zookeeper kafka-consumer-api