我对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的示例是没有意义的,但是我试图理解这一切是如何工作的。
谢谢你,谢谢你
1条答案
按热度按时间nvbavucw1#
无法使用scale CLI,因为所有代理最终都将具有相同的
broker.id
值,并且在Zookeeper中彼此冲突。您需要在YAML中定义三个单独的代理(您不需要每个代理一个Zookeeper
例如:
或者使用Minikube和Strimzi Kafka操作符这样的东西,它们可以适当地定义容器副本。