環境說明
- Centos 7.9
- Docker 1.13.1
- Docker API 1.26
- Docker-Compose 1.26.2
使用wurstmeister/kafka-docker
到這個網站https://github.com/wurstmeister/kafka-docker下載整個repo
下載完成上傳到虛擬機后解壓
單節點啟動
修改文件
單機使用的是docker-compose-single-broker.yml
,從名字就可以看出
修改這個文件
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
build: .
ports:
- "9092:9092"
environment:
KAFKA_CREATE_TOPICS: "test:1:1"
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://:9092
KAFKA_LISTENERS: PLAINTEXT://:9092
volumes:
- /var/run/docker.sock:/var/run/docker.sock
保存一下,我們就可以開始了
構建
使用如下命令docker-compose -f docker-compose-single-broker.yml up -d
其中這一步可能會卡出,多試幾次就行
出現這個說明完成
使用docker ps
或者 docker-compose ps
查看我們的zookeeper和kafka都啟動了
通過docker exec -it 5daa518c1bc3 ./bin/zkCli.sh ls /brokers/ids
我們可以看到一個Kafka節點綁定到了Zookeeper上
集群
使用文件夾中的docker-compose.yml
文件,修改為:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
build: .
ports:
- "9092"
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://:9092
KAFKA_LISTENERS: PLAINTEXT://:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
構建
使用命令docker-compose up -d zookeeper
再使用docker-compose scale kafka=3
產生三個Kafka節點
使用docker ps
或者 docker-compose ps
查看
通過docker exec -it 756cfa814e99 ./bin/zkCli.sh ls /brokers/ids
我們可以看到三個Kafka節點綁定到了Zookeeper上
創建Topic
使用命令docker exec b5adf98e7235 kafka-topics.sh --create --topic testtopic --partitions 4 --zookeeper zookeeper:2181 --replication-factor 2
查看Topic
使用命令docker exec b5adf98e7235 kafka-topics.sh --list --zookeeper zookeeper:2181
其他的節點上也有了
生產者發送消息
使用命令 docker exec -it kafka-docker-master_kafka_1 kafka-console-producer.sh --topic testtopic --broker-list kafka-docker-master_kafka_1:9092,kafka-docker-master_kafka_2:9092,kafka-docker-master_kafka_3:9092
消費者消費消息
使用命令 docker exec kafka-docker-master_kafka_2 kafka-console-consumer.sh --topic testtopic --bootstrap-server kafka-docker-master_kafka_1:9092,kafka-docker-master_kafka_2:9092,kafka-docker-master_kafka_3:9092
生產者:
消費者: