利用docker可以很方便的在一台機子上搭建kafka集群並進行測試。為了簡化配置流程,我們采用docker-compose進行進行搭建。
docker環境的部署參考:https://www.cnblogs.com/Rostov/p/13494838.html
docker-compose的部署參考:https://www.cnblogs.com/Rostov/p/13528918.html
kafka搭建過程如下:
- 編寫docker-compose.yml文件,內容如下:
version: '3.3'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- 2181:2181
container_name: zookeeper
networks:
default:
ipv4_address: 172.19.0.11
kafka0:
image: wurstmeister/kafka
depends_on:
- zookeeper
container_name:kafka0
ports:
- 9092:9092
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka0:9092
KAFKA_LISTENERS: PLAINTEXT://kafka0:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_BROKER_ID: 0
volumes:
- /home/icefalcon/kafka0/data:/data
- /home/icefalcon/kafka0/log:/datalog
networks:
default:
ipv4_address: 172.19.0.12
kafka1:
image: wurstmeister/kafka
depends_on:
- zookeeper
container_name:kafka1
ports:
- 9093:9093
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9093
KAFKA_LISTENERS: PLAINTEXT://kafka1:9093
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_BROKER_ID: 1
volumes:
- /home/icefalcon/kafka1/data:/data
- /home/icefalcon/kafka1/log:/datalog
networks:
default:
ipv4_address: 172.19.0.13
kafka2:
image: wurstmeister/kafka
depends_on:
- zookeeper
container_name:kafka2
ports:
- 9094:9094
environment:
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9094
KAFKA_LISTENERS: PLAINTEXT://kafka2:9094
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_BROKER_ID: 2
volumes:
- /home/icefalcon/kafka2/data:/data
- /home/icefalcon/kafka2/log:/datalog
networks:
default:
ipv4_address: 172.19.0.14
networks:
default:
external:
name: zookeeper_kafka
- 創建子網
docker network create --subnet 172.19.0.0/16 --gateway 172.19.0.1 zookeeper_kafka
- 執行docker-compose命令進行搭建
docker-compose -f docker-compose.yml up -d
輸入docker ps -a
命令如能查看到我們啟動的三個服務且處於運行狀態說明部署成功
- 測試kafka
輸入docker exec -it kafka0 bash
進入kafka0容器,並執行如下命令創建topic
/opt/kafka_2.13-2.6.0/bin/kafka-topics.sh --create --topic chat --partitions 5 --zookeeper 192.168.199.163:2181 --replication-factor 3 Created topic chat.
輸入如下命令開啟生產者
/opt/kafka_2.13-2.6.0/bin/kafka-console-producer.sh --broker-list kafka0:9092 --topic chat
開啟另一個shell界面進入kafka2容器並執行下列命令開啟消費者
/opt/kafka_2.13-2.6.0/bin/kafka-console-consumer.sh --bootstrap-server kafka2:9094 --topic chat --from-beginning
回到生產者shell輸入消息,看消費者shell是否會出現同樣的消息,如果能夠出現說明kafka集群搭建正常。