【问题标题】:How to set up 3 kafka nodes (1 main and 2 replicas) on 3 different machines?如何在 3 台不同的机器上设置 3 个 kafka 节点(1 个主节点和 2 个副本)?
【发布时间】: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


    【解决方案1】:

    您需要将消费者偏移量复制因子设置为 3。否则,当主题不可用时,消费者将在尝试查找应从何处读取时挂起

    offsets.topic.replication.factor=3
    

    同样,如果您打算使用完全一次功能,事务主题也有一个设置

    另外,如果对您很重要,请不要将数据存储在 /tmp 下

    【讨论】:

    • 任何想法为什么以下问题仍然存在:当所有 3 台 kafka 服务器都在运行时,我在机器 1 上成功消费,但是当我在机器 3 上杀死服务器时,机器 1 上的消费者抛出以下错误:FAIL|rdkafka#consumer-1| ]: 172.16.1.3:9003/3: Disconnected (after 6553ms in state UP)。我已将所有 3 个 kafka 服务器配置文件中的 offsets.topic.replication.factor 值设置为 3。如果我在机器 3 上重启服务器,机器 1 上的消费者会恢复消费过程。
    • 主题创建后是否设置为3?如果您描述了 _consumer_offsets 主题,那么有多少同步副本?而且您的错误似乎是一般的断开连接消息
    • 我在这些机器上启动了zookeeper,然后是kafka服务器,然后创建了一个主题:bin/kafka-topics.sh --create --replication-factor 3 --partitions 1 --topic read-topic --zookeeper 172.16.1.1:2181,然后开始为该主题生成消息,然后开始消费,问题仍然存在:如果一个kafka服务器被杀死,消费者停止消费。
    • 我认为您误解了我的评论。还有另一个主题叫做_consumer_offsets。请告诉我它目前有多少个副本
    • topic "__consumer_offsets" with 50 partitions: partition 0, leader 3, replicas: 3,1,2, isrs: 2,1,3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多