docker kafka集群搭建

准备两台虚拟机

192.168.155.44   安装zookeeper、kafka

192.168.155.46  安装kafka

1:在192.168.155.44 虚拟机上kafka需要zookeeper管理,所以需要先安装zookeeper。 下载docker pull wurstmeister/zookeeper:latest版本

docker pull wurstmeister/zookeeper

2:启动镜像生成容器

docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper

3:下载kafka镜像

docker pull wurstmeister/kafka

4:启动kafka镜像生成容器

docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.155.44:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.44:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /etc/localtime:/etc/localtime wurstmeister/kafka

-e KAFKA_BROKER_ID=0  在kafka集群中,每个kafka都有一个BROKER_ID来区分自己

-e KAFKA_ZOOKEEPER_CONNECT=192.168.155.44:2181/kafka 配置zookeeper管理kafka的路径192.168.155.44:2181/kafka

-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.44:9092  把kafka的地址端口注册给zookeeper

-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 配置kafka的监听端口

-v /etc/localtime:/etc/localtime 容器时间同步虚拟机的时间

5:创建一个topic测试下看kafka是否正常运行

进入容器:

docker exec -it kafka /bin/sh

cd opt/bin

运行语句:

kafka-topics.sh --create --topic test --zookeeper 192.168.155.44:2181/kafka --replication-factor 2 --partitions 2

报错,因为我只建立了一个kafka容器,建立不出来两个replication-factor 2

运行语句:

kafka-topics.sh --create --topic test --zookeeper 192.168.155.44:2181/kafka --replication-factor 1 --partitions 2

查看topic的详细信息:

kafka-topics.sh --describe --zookeeper 192.168.155.44:2181/kafka --topic test

可以看到建立的两个分区都在BROKER_ID=0这个节点上

6:在192.168.155.46虚拟机上再安装一个kafka容器。

运行容器:

docker run -d --name kafka -p 9093:9093 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.155.44:2181/kafka -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.155.44:9093 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9093 -v /etc/localtime:/etc/localtime wurstmeister/kafka

其中需要注意:

1)端口我修改成了9093:9093

2)KAFKA_BROKER_ID从0修改成了1  KAFKA_BROKER_ID=1

3)后面的链接端口都是9093

启动成功后,kafka集群就已经搭建完成了

7:测试集群功能

进入kafka容器,进入44或46的kafka容器都可以,我进入的是44的kafka容器

运行语句

kafka-topics.sh --create --topic test1 --zookeeper 192.168.155.44:2181/kafka --replication-factor 2 --partitions 2

这时用--replication-factor 2已经不报错了。

查询topic=test1的详细信息:

kafka-topics.sh --describe --zookeeper 192.168.155.44:2181/kafka --topic test1

可以看到1个分区在BROKER_ID=0上,一个分区在BROKER_ID=1上。说明kafka集群已经搭建成功。

我们把46的kafka容器关闭掉

docker stop kafka

再在44的kafka容器中查看topic=test1的详细信息:

kafka-topics.sh --describe --zookeeper 192.168.155.44:2181/kafka --topic test1

我们可以发现,两个分区对应的节点都指向了BROKER_ID=0,实现了高可用。

8:介绍下docker-compose的安装,kafka集群也可以用docker-compose启动

docker-compose可以管理docker的容器启动,感兴趣的小伙伴可以自行上网学习下

1:先安装docker-compose

pip -V

yum -y install epel-release

yum -y install python-pip

pip install --upgrade pip

pip -V

pip install docker-compose

docker-compose -version

安装docker-compose完成,版本是1.23.2

-----------------------以后补充docker-compose启动kafka集群文档

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容