废话不多说,直接上干货
这篇文章的前提是默认你已经下载好了docker desktop
1.搭建kafka集群之前的准备
下完docker desktop后你直接打开是一直在转圈圈加载的,这是没有配置镜像的原因
我们进入设置,点击Docker Engine
将内容替换为:
{
"builder": {
"gc": {
"defaultKeepStorage": "20GB",
"enabled": true
}
},
"experimental": false,
"features": {
"buildkit": true
},
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://cr.console.aliyun.com",
"https://mirror.ccs.tencentyun.com"
]
}
然后应该就能刷新出界面来了
2.镜像的拉取
我们知道kafka集群是要依赖zookeeper进行节点之间的通信的,因此我们要拉取zookeeper和kafka两个镜像,下面是拉取的步骤
首先打开powershell(功能更强大,当然cmd也行),右键以管理员身份运行
镜像的拉取很简单
docker pull zookeeper:latest
docker pull kafka:latest
这样就拉取成功了,kafka的同理
3.然后是编写zookeeper和Kafka的配置文件
写配置文件之前还要做一件事就是新建文件夹
首先新建一个总文件夹放你的所有的docker文件,这里我的结构是这样的
你按着我的来建也行,下面的yml文件就是等会要编写的配置文件,先把它新建好备用,当然图片里的storm不用管,我们用不上,然后zookeeper里面还要新建文件夹,如下
zoo1,zoo2,zoo3对应三个节点,然后再分别在zoo1,zoo2,zoo3里面新建如下
接着是kafaka的
同理kafka1,kafka2,kafka3对应三个节点,当然zookeeper与kafka的节点数要对上,(没对上咱也没试过啊,建议还是对上吧)
这是里面的
三个都要建!别忘了!
然后就是配置文件的编写了
先用记事本打开zookeeper的配置文件,从名字很容易看出来吧,有zookeeper的那个,对了如果你不知道怎么新建一个yml文件,你可以先新建一个txt文件,然后把后缀改成yml就可以了
打开之后把以下配置内容复制进去,要注意改里面的路径,还有镜像名
version: '2'
networks:
zk-net:
external:
name: zk-net
services:
zoo1:
image: 'zookeeper:3.7.0'
container_name: zoo1
hostname: zoo1
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- zk-net
ports:
- 2181:2181
- 8081:8080
volumes:
- /E/soft/docker/zookeeper/zoo1/data:/data
- /E/soft/docker/zookeeper/zoo1/datalog:/datalog
zoo2:
image: 'zookeeper:3.7.0'
container_name: zoo2
hostname: zoo2
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- zk-net
ports:
- 2182:2181
- 8082:8080
volumes:
- /E/soft/docker/zookeeper/zoo2/data:/data
- /E/soft/docker/zookeeper/zoo2/datalog:/datalog
zoo3:
image: 'zookeeper:3.7.0'
container_name: zoo3
hostname: zoo3
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
ALLOW_ANONYMOUS_LOGIN: "yes"
networks:
- zk-net
ports:
- 2183:2181
- 8083:8080
volumes:
- /E/soft/docker/zookeeper/zoo3/data:/data
- /E/soft/docker/zookeeper/zoo3/datalog:/datalog
然后是kafka的配置文件
version: "3"
networks:
zk-net:
external:
name: zk-net
services:
kafka01:
image: 'bitnami/kafka:2.7.0'
restart: always
container_name: kafka01
hostname: kafka01
ports:
- '9092:9092'
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka01:9092
- KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
- ALLOW_PLAINTEXT_LISTENER=yes
volumes:
- /E/soft/docker/kafka/kafka1:/bitnami/kafka
networks:
- zk-net
kafka02:
image: 'bitnami/kafka:2.7.0'
restart: always
container_name: kafka02
hostname: kafka02
ports:
- '9093:9093'
environment:
- KAFKA_BROKER_ID=2
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka02:9093
- KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
- ALLOW_PLAINTEXT_LISTENER=yes
volumes:
- /E/soft/docker/kafka/kafka2:/bitnami/kafka
networks:
- zk-net
kafka03:
image: 'bitnami/kafka:2.7.0'
restart: always
container_name: kafka03
hostname: kafka03
ports:
- '9094:9094'
environment:
- KAFKA_BROKER_ID=3
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9094
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka03:9094
- KAFKA_CFG_ZOOKEEPER_CONNECT=zoo1:2181,zoo2:2181,zoo3:2181
- ALLOW_PLAINTEXT_LISTENER=yes
volumes:
- /E/soft/docker/kafka/kafka3:/bitnami/kafka
networks:
- zk-net
4.运行配置文件
打开power shell
运行zookeeper
docker-compose -f E:\soft\docker\docker-compose-zookeeper-cluster.yml up -d
注意改配置文件的路径
这就成功启动了
然后是kafka的
docker-compose -f E:\soft\docker\docker-compose-kafka-cluster.yml up -d
启动
启动之后总要关闭吧!下面是关闭的代码
docker-compose -f E:\soft\docker\docker-compose-zookeeper-cluster.yml stop
docker-compose -f E:\soft\docker\docker-compose-kafka-cluster.yml stop
欧克,配置到这就结束了,接下来我们可以在docker desktop里面看到我们的节点的状态
可以看到我们的zookeeper跟kafka的节点都正在running,如果启动失败的话,状态就是exit
5.kafka集群的简单测试
首先我们进入kafka01的控制台
然后新建一个topic,如果你不知道topic是什么的话,建议你先去补一下kafka的知识,这里我就默认你晓得哈
kafka-topics.sh --create --bootstrap-server kafka01:9092 --replication-factor 3 --partitions 5 --topic TestTopic0
查看已创建的topic
kafka-topics.sh --list --bootstrap-server kafka01:9092
可以看到创建成功了
然后就可以创建一个生产者了
kafka-console-producer.sh --broker-list kafka01:9092 --topic TestTopic0
然后随便输入一些消息
然后切换到另一个节点的控制台,创建一个消费者,
kafka-console-consumer.sh --bootstrap-server kafka02:9093 --topic TestTopic0 --from-beginning
可以看到消费者成功消费到了刚刚生产者生产的消息
所以kafka集群搭建成功,你可以去做一些更复杂的应用了
6.声明
这篇教程我能写出来,肯定是借鉴了很多前辈的文章,但是这些文章我都找不到了,这里就无法引用出来了,十分抱歉,如果有所冒犯,请务必联系我!!!
感谢观看!!!