美文网首页Awesome Docker我的Docker之路Docker学习
基于Docker搭建分布式消息队列Kafka

基于Docker搭建分布式消息队列Kafka

作者: 半夜菊花茶 | 来源:发表于2017-11-23 22:55 被阅读406次

本文基于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://kafka.apache.org/quickstart

原文链接:《基于Docker搭建分布式消息队列Kafka》

相关文章

  • 基于Docker搭建分布式消息队列Kafka

    本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例...

  • Kafka下游数据出错

    Kafka简单介绍 1.定义 Kafka是个分布式的基于发布/订阅模式的消息队列 消息队列的好处:解耦、可恢复性、...

  • Kafka

    Kafka 一、什么是Kafka Kafka是一个分布式的基于发布/订阅模式的消息队列,强悍的消息处理能力,主要应...

  • 六问 Kafka 为啥那么牛

    1 Kafka 简介 1.1 Kafka 概述 Kafka 是一个分布式的基于发布/订阅模式的消息队列,依靠其强悍...

  • Kafka学习笔记01(概述)

    1、kafka概述 1.1 定义: kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Que...

  • 老吴的学习笔记-kafka

    听说kafka是个神器。好想学! kafka是啥? 分布式消息队列 排队用的。 在分布式系统中,消息队列(mess...

  • kafka知识整理总结

    1. Kafka是什么? kafka是一个分布式的,基于发布订阅的消息队列系统.虽然它也可以作为分布式缓存使用,但...

  • Kafka集群搭建

    Kafka之分布式消息队列 一、简介 Kafka官网 二、生产集群搭建 准备 安装JDK的linux服务器三台(J...

  • kafka学习笔记

    Kafka概述是一个分布式的基于发布订阅模式的消息队列2.Kafka几个角色Broker: 每一个kafka进程实...

  • Kafka学习笔记

    1.Kafka简介 Kafka是一个分布式的基于发布订阅模式的消息队列,主要针对大规模数据处理场景。 1.1 消息...

网友评论

    本文标题:基于Docker搭建分布式消息队列Kafka

    本文链接:https://www.haomeiwen.com/subject/mpwtbxtx.html