我想在docker上创建可扩展的Kafka集群。我正在使用docker映像https://hub.docker.com/r/wurstmeister/kafka/创建kafka服务器。为了创建单节点kafka和zookeeper,我使用了以下docker-compose:
version: '3.1'
services:
kafka:
image: "wurstmeister/kafka"
ports:
- "9095:9092"
hostname: kafka
depends_on:
- zookeeper
environment:
- KAFKA_ADVERTISED_HOST_NAME=kafka
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- KAFKA_ADVERTISED_PORT=9092
- KAFKA_CREATE_TOPICS=check:3:1
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2185:2181"
有了这些设置,我可以在我的应用程序代码中分别以kafka:9092
和zookeeper:2181
的身份在kafka使用者设置下访问kafka代理和zookeeper。
但是现在我想要可扩展的集群,所以我将docker-compose修改为:
version: '3.1'
services:
kafka:
image: "wurstmeister/kafka"
ports:
- "9095:9092"
hostname: kafka
depends_on:
- zookeeper
environment:
- KAFKA_ADVERTISED_HOST_NAME=kafka
- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
- KAFKA_ADVERTISED_PORT=9092
- KAFKA_CREATE_TOPICS=check:3:1
deploy:
replicas: 3
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2185:2181"
在这种情况下,将创建3个kafka经纪人。但是,在这种情况下,如果无法在应用程序代码的kafka使用者设置中使用kafka代理作为kafka:9092
和kafka zookeeper作为zookeepr:2181
来访问主题“检查”。我应该如何修改我的docker-compose.yml
或我的应用程序代码kafka使用者设置,以便可以从这些多个代理中读取信息?