我已经试着让Kafka Docker 工作了几天了,我不知道我做错了什么。现在,我无法使用ruby kafka客户端访问任何主题,因为节点“不存在”。这是我的docker-compose.yml文件:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka:0.9.0.1
ports:
- "9092:9092"
links:
- zookeeper
environment:
KAFKA_BROKER_ID: 1
KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
KAFKA_ADVERTISED_PORT: 9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
kafka2:
image: wurstmeister/kafka:0.9.0.1
ports:
- "9093:9092"
links:
- zookeeper
environment:
KAFKA_BROKER_ID: 2
KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
KAFKA_ADVERTISED_PORT: 9093
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
kafka3:
image: wurstmeister/kafka:0.9.0.1
ports:
- "9094:9092"
links:
- zookeeper
environment:
KAFKA_BROKER_ID: 3
KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
KAFKA_ADVERTISED_PORT: 9094
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
我指定“kafka\u auto\u create\u topics\u enable:'false'”是因为我想手动创建主题,所以我在第一个代理容器中输入以下内容:
./kafka-topics.sh--create--zookeeper 172.19.0.2:2181--topic test1--partitions 4--复制因子3
一切似乎都很好:
./kafka-topics.sh--list--zookeeper 172.19.0.2:2181->test1
但是,当我尝试这样做时:
./kafka-console-producer.sh—代理列表localhost:9092 --topic 测试1
上面写着:
获取相关id为24的元数据时出现警告错误:{test1=unknown\u topic\u or\u partition}(org.apache.kafka.clients.networkclient)
如果我再创建一次主题,它会说它已经存在了,所以我不知道发生了什么。
2条答案
按热度按时间fcwjkofz1#
您需要正确地进行网络配置,因为kafka可以跨主机工作,并且需要能够访问所有主机。
这篇文章对此进行了详细的解释。
您可能还想引用https://github.com/confluentinc/cp-docker-images/blob/5.0.0-post/examples/cp-all-in-one/docker-compose.yml 例如一个正在工作的docker compose。
xt0899hw2#
所以我们在与Kafka连线合作时遇到了这个问题。有多种解决办法。删除所有docker映像,或者在connect映像的connect配置中更改组id,如下所示below:-