使kafka代理关闭时,ctrl-c和kill -9有什么不同
What's the different between ctrl-c and kill -9 when making kafka broker down
我正在看kafka官方教程,在multibroker部分遇到了一个奇怪的问题。
我简单列出一下我做过的事情:
- 运行 端口 2181 上的本地动物园管理员
- 运行 端口 9092、9093、9094 上的三个 kafka 代理
- 创建了一个包含一个分区和三个副本的主题:my-replicated-topic
- 针对该主题生成了多条消息
那我想测试一下kafka的容错能力。我使用 ctrl-c
来终止主题的领导者,而不是按预期正常工作的 kill -9
。问题是:
我无法使用来自 kafka 的任何消息。
怎么了?
p.s。我使用的命令和上面的教程完全一样
卡夫卡 1.00
--已更新
以下是部分关键输出:
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 0 Replicas: 0,1,2 Isr: 1,0,2
然后我 ctrl-c 杀死代理 0:
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 0,1,2 Isr: 1,2
此时我无法从其他经纪商消费
bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9093 --from-beginning --topic my-replicated-topic
这是broker 0的配置,除了broker id、端口和日志目录外,其他配置与此相同。
broker.id=0
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=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
你的 offsets.topic.replication.factor=1 因此,如果你用消费者的偏移量杀死代理,则没有其他副本,因此你没有偏移量。
在您的 __consumer_offsets 主题上设置复制因子 = 1 不是容错配置
您不仅需要更改此配置,而且还必须将现有的消费者偏移主题修改为复制因子 = 3
通过 Ctrl+C
退出进程与通过 kill -9
终止进程是有区别的。 kill -9
会发送SIGKILL
信号杀死进程,进程无法避免,因此Ctrl+C
,相当于kill -3
会发送信号SIGQUIT
],可以由进程处理或忽略。
我正在看kafka官方教程,在multibroker部分遇到了一个奇怪的问题。
我简单列出一下我做过的事情:
- 运行 端口 2181 上的本地动物园管理员
- 运行 端口 9092、9093、9094 上的三个 kafka 代理
- 创建了一个包含一个分区和三个副本的主题:my-replicated-topic
- 针对该主题生成了多条消息
那我想测试一下kafka的容错能力。我使用 ctrl-c
来终止主题的领导者,而不是按预期正常工作的 kill -9
。问题是:
我无法使用来自 kafka 的任何消息。
怎么了?
p.s。我使用的命令和上面的教程完全一样
卡夫卡 1.00
--已更新 以下是部分关键输出:
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 0 Replicas: 0,1,2 Isr: 1,0,2
然后我 ctrl-c 杀死代理 0:
bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic
Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs:
Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 0,1,2 Isr: 1,2
此时我无法从其他经纪商消费
bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9093 --from-beginning --topic my-replicated-topic
这是broker 0的配置,除了broker id、端口和日志目录外,其他配置与此相同。
broker.id=0
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=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
你的 offsets.topic.replication.factor=1 因此,如果你用消费者的偏移量杀死代理,则没有其他副本,因此你没有偏移量。
在您的 __consumer_offsets 主题上设置复制因子 = 1 不是容错配置
您不仅需要更改此配置,而且还必须将现有的消费者偏移主题修改为复制因子 = 3
通过 Ctrl+C
退出进程与通过 kill -9
终止进程是有区别的。 kill -9
会发送SIGKILL
信号杀死进程,进程无法避免,因此Ctrl+C
,相当于kill -3
会发送信号SIGQUIT
],可以由进程处理或忽略。