我在一个kafka集群中创建了两个kafka brokers。当一个经纪人宕机时,我无法将任何数据提供给kafka消费者。我使用这个命令来读取来自消费者的消息:
bin/kafka-console-consumer.sh --topic test_kafka_cluster \
--bootstrap-server 127.0.0.1:9092,127.0.0.2:9092 --from-beginning发布于 2021-01-22 15:42:41
有两个参数会影响消费者的主题可用性:
min.insync.replicas (minISR):同步分区副本的最小数量(RF):分区副本的总数。如果您希望您的客户在broker宕机中幸存下来,那么您必须使用RF > minISR。使用RF=2 and minISR=2,您不能容忍任何代理倒下,使用RF=3 and minISR=2,您可以容忍一个代理倒下,使用RF=5 and minISR=2,您可以容忍3个代理倒下,以此类推。
请注意,内部__consumer_offsets主题用于存储消费者偏移量,其默认RF值为3,这在包含2个节点的集群中是无法实现的。因此,您还需要在集群级别设置offsets.topic.replication.factor=1。
发布于 2021-01-24 04:00:33
根据您的控制台消费者配置,此处使用的IP地址为127.0.0.1和127.0.0.2,两个引导服务器配置为9092。
验证两个ip是否均可访问
bin/kafka-console-consumer.sh --topic test_kafka_cluster \
--bootstrap-server 127.0.0.1:9092,127.0.0.2:9092 --from-beginning理想情况下,当我们运行两个kafka代理实例时,它将在两个不同的端口上运行。
假设Kafka在本地运行例如: localhost:9092 localhost:9093
运行在两个不同主机上的Kafka实例:例如: 127.0.0.3:9092,127.0.0.2:9092
如果Kafka在docker/docker工具箱上运行,则为:
Docker工具箱上的控制台使用者:
docker exec <container-name> kafka-console-consumer --bootstrap-server 192.168.99.100:9093 --topic <topic-name> --from-beginningDocker上的控制台消费者:
docker exec <container-name> kafka-console-consumer --bootstrap-server localhost:9093 localhost 9092 --topic <topic-name> --from-beginninghttps://stackoverflow.com/questions/65839586
复制相似问题