下载zookeeper镜像:
docker pull wurstmeister/zookeeper
下载kafka镜像:
docker pull wurstmeister/kafka
在自己选的目录下创建一个docker-compose.yml文件
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
build: .
ports:
- "9092"
environment:
KAFKA_ADVERTISED_LISTENERS: 192.168.99.100
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
KAFKA_ADVERTISED_LISTENERS的ip地址使用宿主机上的 docker-machine ip 地址
启动docker-compose
docker-compose up -d
启动多个kafka 节点,比如3个
docker-compose scale kafka=3
可用性测试
自此,如果没有出现什么错误,通过docker ps 应该可以看到已经成功启动了一个zookeeper容器,三个Kafka容器。
通过指定容器名(假设容器名为 wurkafka_kafka_1)进入一个Kafka容器:
docker exec -it wurkafka_kafka_1 /bin/bash
创建一个topic(其中假设zookeeper容器名为 wurkafka_zookeeper_1,topic名为test),输入:
$KAFKA_HOME/bin/kafka-topics.sh --create --topic test \
--zookeeper wurkafka_zookeeper_1:2181 --replication-factor 1
--partitions 1
查看新创建的topic:
$KAFKA_HOME/bin/kafka-topics.sh --zookeeper wurkafka_zookeeper_1:2181 \
--describe --topic test
发布消息: (输入若干条消息后 按^C 退出发布)
$KAFKA_HOME/bin/kafka-console-producer.sh --topic=test \
--broker-list wurkafka_kafka_1:9092
接收消息:
$KAFKA_HOME/bin/kafka-console-consumer.sh \
--bootstrap-server wurkafka_kafka_1:9092 \
--from-beginning --topic test
如果接收到了发布的消息,证明整个部署正常,就可以正式开始开发工作了。