一.docker 内部配置单机kafka (我这里用的是乌班图 linux 也一样)
1.下载zookeeper
(1)搜索命令:
sudo docker search zookeeper
(2)内容:
******************************************************************************************************************
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
zookeeper Apache ZooKeeper is an open-source server wh… 1005 [OK]
jplock/zookeeper Builds a docker image for Zookeeper version … 166 [OK]
wurstmeister/zookeeper 136 [OK]
mesoscloud/zookeeper ZooKeeper 73 [OK]
bitnami/zookeeper ZooKeeper is a centralized service for distr… 49 [OK]
mbabineau/zookeeper-exhibitor 24 [OK]
digitalwonderland/zookeeper Latest Zookeeper - clusterable 23 [OK]
tobilg/zookeeper-webui Docker image for using `zk-web` as ZooKeeper… 15 [OK]
debezium/zookeeper Zookeeper image required when running the De… 14 [OK]
confluent/zookeeper [deprecated - please use confluentinc/cp-zoo… 13 [OK]
31z4/zookeeper Dockerized Apache Zookeeper. 9 [OK]
thefactory/zookeeper-exhibitor Exhibitor-managed ZooKeeper with S3 backups … 6 [OK]
engapa/zookeeper Zookeeper image optimised for being used int… 2
emccorp/zookeeper Zookeeper 2
openshift/zookeeper-346-fedora20 ZooKeeper 3.4.6 with replication support 1
perrykim/zookeeper k8s - zookeeper ( forked k8s contrib ) 1 [OK]
paulbrown/zookeeper Zookeeper on Kubernetes (PetSet) 1 [OK]
duffqiu/zookeeper-cli 1 [OK]
josdotso/zookeeper-exporter ref: https://github.com/carlpett/zookeeper_e… 1 [OK]
strimzi/zookeeper 1
midonet/zookeeper Dockerfile for a Zookeeper server. 0 [OK]
pravega/zookeeper-operator Kubernetes operator for Zookeeper 0
humio/zookeeper-dev zookeeper build with zulu jvm. 0
phenompeople/zookeeper Apache ZooKeeper is an open-source server wh… 0 [OK]
dabealu/zookeeper-exporter zookeeper exporter for prometheus 0 [OK]
******************************************************************************************************************
(3)下载第一个zookeeper,命令如下:
sudo docker pull zookeeper
2.下载kafka
(1)搜索命令:
sudo docker search kafka
(2)内容:
******************************************************************************************************************
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
wurstmeister/kafka Multi-Broker Apache Kafka Image 1318 [OK]
spotify/kafka A simple docker image with both Kafka and Zo… 408 [OK]
bitnami/kafka Apache Kafka is a distributed streaming plat… 204 [OK]
sheepkiller/kafka-manager kafka-manager 201 [OK]
ches/kafka Apache Kafka. Tagged versions. JMX. Cluster-… 117 [OK]
kafkamanager/kafka-manager Docker image for Kafka manager 108
hlebalbau/kafka-manager CMAK (previous known as Kafka Manager) As Do… 78 [OK]
landoop/kafka-topics-ui UI for viewing Kafka Topics config and data … 36 [OK]
johnnypark/kafka-zookeeper Kafka and Zookeeper combined image 22
solsson/kafka http://kafka.apache.org/documentation.html#q… 21 [OK]
landoop/kafka-lenses-dev Lenses with Kafka. +Connect +Generators +Con… 20 [OK]
debezium/kafka Kafka image required when running the Debezi… 19 [OK]
landoop/kafka-connect-ui Web based UI for Kafka Connect. 17 [OK]
danielqsj/kafka-exporter Kafka exporter for Prometheus 17 [OK]
digitalwonderland/kafka Latest Kafka - clusterable 15 [OK]
tchiotludo/kafkahq Kafka GUI to view topics, topics data, consu… 6 [OK]
solsson/kafka-manager Deprecated in favor of solsson/kafka:cmak 5 [OK]
solsson/kafkacat https://github.com/edenhill/kafkacat/pull/110 4 [OK]
solsson/kafka-consumers-prometheus https://github.com/cloudworkz/kafka-minion 4
solsson/kafka-prometheus-jmx-exporter For monitoring of Kubernetes Kafka clusters … 4 [OK]
mesosphere/kafka-client Kafka client 3 [OK]
zenko/kafka-manager Kafka Manger https://github.com/yahoo/kafka-… 2 [OK]
zenreach/kafka-connect Zenreach's Kafka Connect Docker Image 2
anchorfree/kafka Kafka broker and Zookeeper image 2
solsson/kafka-monitor https://github.com/linkedin/kafka-monitor fo… 2 [OK]
******************************************************************************************************************
(3)下载第一个wurstmeister/kafka ,命令如下:
sudo docker pull wurstmeister/kafka
3.启动Zookeeper
命令:
sudo docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper
查看zookeeper端口:
sudo docker inspect zookeeper | grep IPAddress
*********************************************
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.4",
"IPAddress": "172.17.0.4",
*********************************************
4.启动Kafka
命令:ip可以填宿主主机ip(192.168.x.x) 也可以填写docker容器ip(172.17.0.4) 最好宿主主机ip
sudo docker run -d --name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.x.x:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.x.x:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
-t wurstmeister/kafka
5-1.容器内部创建topic 进入如容器 找到相应位置执行(/opt/kafka/bin)
./kafka-topics.sh --replication-factor 1 --partitions 1 --create --topic test --zookeeper 172.17.0.4:2181
5-2.容器外部创建topic 下面的topic 是结合代码的topic
sudo docker exec kafka ./opt/kafka/bin/kafka-topics.sh --replication-factor 1 --partitions 1 --create --topic test --zookeeper 172.17.0.4:2181
sudo docker exec kafka ./opt/kafka/bin/kafka-topics.sh --replication-factor 1 --partitions 1 --create --topic group1 --zookeeper 172.17.0.4:2181
sudo docker exec kafka ./opt/kafka/bin/kafka-topics.sh --replication-factor 1 --partitions 1 --create --topic group2 --zookeeper 172.17.0.4:2181
6-1.容器内部 显示使用情况信息 进入如容器 找到相应位置执行(/opt/kafka/bin)
./kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092
6-2.容器外部 显示使用情况信息
sudo docker exec kafka ./opt/kafka/bin/kafka-topics.sh --describe --topic test --bootstrap-server localhost:9092
7-1.容器内部 向topic里写入事件 进入如容器 找到相应位执行
./kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
This is Mr.cs first event
This is Mr.cs second event
可以随时停止消费者客户Ctrl-C。
7-2.容器外部 向topic里写入事件 进入如容器 找到相应位执行(没成功-待研究)
sudo docker exec kafka ./opt/kafka/bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9092
This is Mr.cs third event
This is Mr.cs fourth event
8-1.容器内部 阅读事件 找到相应位执行
./kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
8-2.容器内部 阅读事件 找到相应位执行
sudo docker exec kafka ./opt/kafka/bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092
二.docker 内部配置集群kafka搭建 (我这里用的是乌班图 linux 也一样)
1.文件目录
-根目录
-dockerData 目录
-kafka-jiqun 目录
-docker-compose.yaml 集群启动配置文件
-start.sh 启动器
-stop.sh 停止删除器
2.编辑文件docker-compose.yaml 根据你的情况进行修改 主要是-目录-ip-端口
针对一个zookeeper情况:
*********************************************************************************
version: "3"
services:
zookeeper:
image: zookeeper
build:
context: ./
container_name: zookeeper-jiqun
ports:
- 2182:2181
volumes:
- /dockerData/kafka-jiqun/zookeeper/data:/data
- /dockerData/kafka-jiqun/zookeeper/datalog:/datalog
- /dockerData/kafka-jiqun/zookeeper/logs:/logs
restart: always
kafka_node_0:
depends_on:
- zookeeper
build:
context: ./
container_name: kafka-node-0
image: wurstmeister/kafka
environment:
KAFKA_BROKER_ID: 0
KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9093
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
KAFKA_NUM_PARTITIONS: 3
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
ports:
- 9093:9093
volumes:
- /dockerData/kafka-jiqun/kafka/node_0:/kafka
restart: unless-stopped
kafka_node_1:
depends_on:
- kafka_node_0
build:
context: ./
container_name: kafka-node-1
image: wurstmeister/kafka
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9094
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
KAFKA_NUM_PARTITIONS: 3
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
ports:
- 9094:9094
volumes:
- /dockerData/kafka-jiqun/kafka/node_1:/kafka
restart: unless-stopped
kafka_node_2:
depends_on:
- kafka_node_1
build:
context: ./
container_name: kafka-node-2
image: wurstmeister/kafka
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9095
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9095
KAFKA_NUM_PARTITIONS: 3
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
ports:
- 9095:9095
volumes:
- /dockerData/kafka-jiqun/kafka/node_2:/kafka
restart: unless-stopped
*********************************************************************************
针对多个zookeeper:
*********************************************************************************
version: "3"
services:
zookeeper-node-0:
image: zookeeper
build:
context: ./
container_name: zookeeper-node-0
ports:
- 2182:2181
volumes:
- /dockerData/kafka-jiqun/zookeeper/zookeeper-node-0/data:/data
- /dockerData/kafka-jiqun/zookeeper/zookeeper-node-0/datalog:/datalog
- /dockerData/kafka-jiqun/zookeeper/zookeeper-node-0/logs:/logs
restart: always
zookeeper-node-1:
image: zookeeper
build:
context: ./
container_name: zookeeper-node-1
ports:
- 2183:2181
volumes:
- /dockerData/kafka-jiqun/zookeeper/zookeeper-node-1/data:/data
- /dockerData/kafka-jiqun/zookeeper/zookeeper-node-1/datalog:/datalog
- /dockerData/kafka-jiqun/zookeeper/zookeeper-node-1/logs:/logs
restart: always
zookeeper-node-2:
image: zookeeper
build:
context: ./
container_name: zookeeper-node-2
ports:
- 2184:2181
volumes:
- /dockerData/kafka-jiqun/zookeeper/zookeeper-node-2/data:/data
- /dockerData/kafka-jiqun/zookeeper/zookeeper-node-2/datalog:/datalog
- /dockerData/kafka-jiqun/zookeeper/zookeeper-node-2/logs:/logs
restart: always
kafka_node_0:
depends_on:
- zookeeper-node-0
- zookeeper-node-1
- zookeeper-node-2
build:
context: ./
container_name: kafka-node-0
image: wurstmeister/kafka
environment:
KAFKA_BROKER_ID: 0
KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182,192.168.19.132:2183,192.168.19.132:2184
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9093
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
KAFKA_NUM_PARTITIONS: 3
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
ports:
- 9093:9093
volumes:
- /dockerData/kafka-jiqun/kafka/node_0:/kafka
restart: unless-stopped
kafka_node_1:
depends_on:
- kafka_node_0
build:
context: ./
container_name: kafka-node-1
image: wurstmeister/kafka
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182,192.168.19.132:2183,192.168.19.132:2184
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9094
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
KAFKA_NUM_PARTITIONS: 3
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
ports:
- 9094:9094
volumes:
- /dockerData/kafka-jiqun/kafka/node_1:/kafka
restart: unless-stopped
kafka_node_2:
depends_on:
- kafka_node_1
build:
context: ./
container_name: kafka-node-2
image: wurstmeister/kafka
environment:
KAFKA_BROKER_ID: 2
KAFKA_ZOOKEEPER_CONNECT: 192.168.19.132:2182,192.168.19.132:2183,192.168.19.132:2184
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.19.132:9095
KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9095
KAFKA_NUM_PARTITIONS: 3
KAFKA_DEFAULT_REPLICATION_FACTOR: 2
ports:
- 9095:9095
volumes:
- /dockerData/kafka-jiqun/kafka/node_2:/kafka
restart: unless-stopped
*********************************************************************************
3.编辑start.sh启动器 这个不谢也没事就是不断的得写里面的命令
#! /bin/bash
sudo docker-compose up -d
4.编辑stop.sh停止-移除器 这个不谢也没事就是不断的得写里面的命令
针对一个zookeeper的情况:
***************************************************
#!/bin/bash
sudo docker stop kafka-node-0
sudo docker stop kafka-node-1
sudo docker stop kafka-node-2
sudo docker stop zookeeper-jiqun
sudo docker rm -f kafka-node-0
sudo docker rm -f kafka-node-1
sudo docker rm -f kafka-node-2
sudo docker rm -f zookeeper-jiqun
***************************************************
针对多个zookeeper的情况:
***************************************************
#!/bin/bash
sudo docker stop kafka-node-0
sudo docker stop kafka-node-1
sudo docker stop kafka-node-2
sudo docker stop zookeeper-node-0
sudo docker stop zookeeper-node-1
sudo docker stop zookeeper-node-2
sudo docker rm -f kafka-node-0
sudo docker rm -f kafka-node-1
sudo docker rm -f kafka-node-2
sudo docker rm -f zookeeper-node-0
sudo docker rm -f zookeeper-node-1
sudo docker rm -f zookeeper-node-2
***************************************************
5.检查docker-componse 是否存在
命令:
sudo docker-compose --version
如果没有进行以下操作
安装docker-componse:
sudo wget https://github.com/docker/compose/releases/download/1.23.0-rc3/docker-compose-Linux-x86_64
移动:
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
授权:
sudo chmod +x /usr/local/bin/docker-compose
执行:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
验证:
sudo docker-compose --version
6.上述没有问题 启动集群
命令:
sudo bash start.sh
7.上述没有问题 停止集群
命令:
sudo bash stop.sh