如何用码头作曲来衡量Kafka和Zookeeper?

qjp7pelc  于 2022-12-09  发布在  Apache
关注(0)|答案(1)|浏览(126)

我对Kafka和zookeeper都是新手。我正在尝试运行3个zookeeper节点和3个Kafka代理程序,它们具有docker-compose的--scale功能。但不知何故,zookeeper示例无法同步(我猜)和经纪人最终会在不同的集群中。有时2-1,有时候是1-1-1无论采用哪种方式,它们都不会相互感知,因为当我尝试创建一个具有3个分区和3个复制的主题时,会给予错误消息可用代理的数量小于复制因子。当我不缩放zookeeper而只缩放Kafka和docker-compose up --scale kafka=3时,情况就不是这样了。然后我可以看到kafka-cluster.sh的所有代理都在同一个集群中。
这里是我的docker-compose.yml

version: '3'
services:
  zookeeper:
    image: bitnami/zookeeper:latest
    environment:
      ALLOW_ANONYMOUS_LOGIN: "yes"
    
  kafka:
    image: bitnami/kafka:latest
    depends_on:
      - zookeeper
    environment:
      KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://:9092
      ALLOW_PLAINTEXT_LISTENER: "yes"

在一天结束的时候,我试图实现的是运行3个zookeeper,3个broker和一个nifi示例来发布和使用来自Kafka的消息。我知道在同一台机器上有3个Kafka和zookeeper的示例是没有意义的,但是我试图理解这一切是如何工作的。
谢谢你,谢谢你

nvbavucw

nvbavucw1#

无法使用scale CLI,因为所有代理最终都将具有相同的broker.id值,并且在Zookeeper中彼此冲突。
您需要在YAML中定义三个单独的代理(您不需要每个代理一个Zookeeper
例如:

或者使用Minikube和Strimzi Kafka操作符这样的东西,它们可以适当地定义容器副本。

相关问题