docker 快速搭建 kafka 服务集群

182 阅读2分钟

前提

docker network create hadoop-network

1. 创建 zookeeper 容器

docker run -d --restart=always  \
--network hadoop-network \
--network-alias zookeeper \
--name zookeeper \
-p 2181:2181 \
-v /data/zookeeper/data:/data \
-v /data/zookeeper/datalog:/datalog \
-v /data/zookeeper/logs:/logs \
-v /etc/localtime:/etc/localtime \
zookeeper:3.7.0

2. 创建3个kafka 容器

docker run -d --restart=always \
--network hadoop-network \
--network-alias kafka \
--name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-e KAFKA_LOG_DIRS=/kafka/kafka-logs \
-v /data/kafka/logs:/opt/kafka/logs \
-v /data/kafka/kafka-logs:/kafka/kafka-logs \
-v /etc/localtime:/etc/localtime:ro \
 wurstmeister/kafka:2.12-2.3.1
docker run -d --restart=always \
--network hadoop-network \
--network-alias kafka-1 \
--name kafka-1 \
-p 9091:9092 \
-e KAFKA_BROKER_ID=1 \
-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka-1:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-e KAFKA_LOG_DIRS=/kafka/kafka-logs \
-v /data/kafka-1/logs:/opt/kafka/logs \
-v /data/kafka-1/kafka-logs:/kafka/kafka-logs \
-v /etc/localtime:/etc/localtime:ro \
 wurstmeister/kafka:2.12-2.3.1
docker run -d --restart=always \
--network hadoop-network \
--network-alias kafka-2 \
--name kafka-2 \
-p 9093:9092 \
-e KAFKA_BROKER_ID=2 \
-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka-2:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-e KAFKA_LOG_DIRS=/kafka/kafka-logs \
-v /data/kafka-2/logs:/opt/kafka/logs \
-v /data/kafka-2/kafka-logs:/kafka/kafka-logs \
-v /etc/localtime:/etc/localtime:ro \
wurstmeister/kafka:2.12-2.3.1

生成的3个容器:

image.png

3. 进入kafka 容器, 利用生产者客户端创建 topic: test_topic, 输入消息进行测试

docker exec -it kafka bash 
cd /opt/kafka/bin
./kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic

>test msg

4. 新开会话,进入kafka 容器,打开消费者客户端

docker exec -it kafka bash 
cd /opt/kafka/bin
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning

5. 验证 zookeeper 和 kafka 集群都在一个网络 hadoop-network 内:

docker network inspect {network-name}

docker network inspect hadoop-network

注意点:

  • 192.168.88.151 是宿主机IP