首页 文章

启动多个Kafka经纪人失败

提问于
浏览
8

在尝试使用不同的brokerId启动多个Kafka代理时 . 一个是默认的 server.properties ,另一个是 serverTest.properties ,其中2行被更改,那些是 broker.id=1listeners=PLAINTEXT://localhost:6000 . 其余的是默认设置 . 我首先启动zookeeper,然后默认kafka server.properties 然后启动 serverTest.properties 我得到以下异常: kafka.common.InconsistentBrokerIdException: Configured brokerId 1 doesn't match stored brokerId 0 in meta.properties . 我的理解是,上面的实际应该实际启动多个节点,就像我使用Kafka 9.0一样 .

5 回答

  • 10

    编辑config / serverTest.properties并替换现有的配置值,如下所示:

    broker.id=2
    port=9093
    log.dir=/tmp/kafka-logs-2
    

    如果你想要第三个经纪人:

    cp config/server.properties config/server3.properties
    

    编辑config / server3.properties并替换现有的配置值,如下所示:

    broker.id=3
    port=9094
    log.dir=/tmp/kafka-logs-3
    

    如果你在不同的机器上运行,你必须改变

    advertised.host.name=192.168.x.x
    

    否则,如果您在同一台vmware机器上运行,例如,您应该只更改端口和log.dir,如上所述

  • 5

    并且,根据经验,不要忘记编辑kafka-logs - * / meta.properties文件中的broker.id条目以匹配您的更改(或删除文件并让kafka重新生成它们) .

  • 7

    这是一个老问题,这个答案仍然可以帮助别人 . 问题是当您从现有的server.properties创建新的server.properties时,下面的行将被复制:

    # A comma separated list of directories under which to store log files
    log.dirs=/tmp/kafka-logs
    

    因此,即使是新的代理也尝试使用相同的日志目录,因此它使用kafka-logs的meta.properties,它由代理0创建并且代理ID为0 .

    所以,转到/ tmp并删除所有kafka-logs *文件,然后注释 log.dirs=/tmp/kafka-logs ,然后添加你添加的行:)

  • 0

    确保你的 server.propertiesserverTest.properties 你有不同的 log.dirs

    如果您必须进行任何 log.dirs 更改,请不要忘记删除存储在PC上的先前文件夹

  • 2

    答案是完美的,但我花了一段时间来弄清楚它是否有效 . 我想分享我的错误,并希望其他人可以避免它 .

    我在这里跟随kafka的官方教程:

    https://kafka.apache.org/quickstart#quickstart_multibroker .

    并按照指南中的建议制作文件副本:

    cp config/server.properties config/server-1.properties
    

    我用vim打开文件 . 我搜索 broker.id 并替换为以下(错误,假设没有 listenerslog.dirs ),如下所示

    # config/server-1.properties:
    broker.id=1
    listeners=PLAINTEXT://:9093
    log.dirs=/tmp/kafka-logs-1
    

    我开始了一个新的经纪人

    >  bin/kafka-server-start.sh config/server-1.properties
    

    崩溃! . 这是我调试的方式:

    我去了 /tmp 并检查了dir kafka-logs-1 没有出现 . 我意识到我的配置中的log.dir应该有问题 . 我在config / server-1.propeties中仔细检查了它 . 我发现有两行log.dirs .

    #copy from the tutorial
    log.dirs=/tmp/kafka-logs-1
    
    
    # default one
    log.dirs=/tmp/kafka-logs
    

    当然最后一个覆盖了第一个,从而使新代理指向id = 0的第一个代理 .

    删除最后一个log.dirs后只保留一个log.dirs( log.dirs=/tmp/kafka-logs-1 )就像一个魅力 .

相关问题