本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示。本例搭建的示例包含Zookeeper + Kafka + Kafka-manger
mark
获取镜像
zookeeper镜像:zookeeper:3.4.9
kafka镜像:wurstmeister/kafka:0.10.2.0
kafka-manager镜像:kafka-manager:latest
建立Zookeeper容器
这里我们用最简单的方式创建一个独立的Zookeeper节点,如果要考虑zookeeper的高可用,可以将其做成一个集群,最好是能有多台机器。
docker run --name some-zookeeper \--restart always \-p 2181:2181 \-d zookeeper
默认的,容器内配置文件在,/conf/zoo.cfg,数据和日志目录默认在/data 和 /datalog,需要的话可以将上述目录映射到宿主机的可靠文件目录下。详情参考Zookeeper官方镜像
建立kafka节点
这里同样只做一个简单的单点kafka
docker run --name kafka \ -p 9092:9092 \ -e KAFKA_ADVERTISED_HOST_NAME=kafka01 \ -e KAFKA_CREATE_TOPICS="test:1:1" \ -e KAFKA_ZOOKEEPER_CONNECT=100.100.16.231:2181 \ -d wurstmeister/kafka
详情参考Kafka官方镜像
创建Kafka管理节点
kafka-manager有图形化UI,可以方便的监控集群状态,调整队列配置
docker run -itd \ --restart=always \ --name=kafka-manager \ -p 9000:9000 \ -e ZK_HOSTS="100.100.16.231:2181" \ sheepkiller/kafka-manager
容器启动以后访问主机的9000端口,http://xxx:9000
mark
首次进入需要添加一个集群标识,如下图所示
mark
配置好以后,通过Zookeeper该管理节点可以读取到整个Kafka集群的信息,并且我们可以通过JMX直接看到集群的健康状态
mark
也可以看到主题的读写速度,偏移量等信息,如下图所示:
mark
读写验证
读写验证的方法有很多,这里我们用kafka容器自带的工具来验证,首先进入到kafka容器的交互模式:
docker exec -it kafka /bin/bash
创建一个主题:
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 100.100.16.231:2181 --replication-factor 1 --partitions 1 --topic my-test
查看刚创建的主题:
/opt/kafka/bin/kafka-topics.sh --list --zookeeper 100.100.16.231:2181
mark
发送消息:
/opt/kafka/bin/kafka-console-producer.sh --broker-list 100.100.16.231:9092 --topic my-test
This is a message
This is another message
读取消息:
/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 100.100.16.231:9092 --topic my-test --from-beginning
作者:半夜菊花茶
链接:https://www.jianshu.com/p/37d0d22cb6cc
共同学习,写下你的评论
评论加载中...
作者其他优质文章