【Kafka】docker部署Kafka集群

这篇具有很好参考价值的文章主要介绍了【Kafka】docker部署Kafka集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Kafka概述

Kafka集群docker部署流程

简述

环境准备

部署流程

 参考文献


 文章来源地址https://www.toymoban.com/news/detail-661035.html

Kafka概述

        以下概述Kafka内的几个核心概念,可参考官方文档,有兴趣可读:kafka.apache.org

Topic与日志

        Topic 就是数据主题,是数据记录发布的地方,可以用来区分业务系统。Kafka 中的 Topics 总是多订阅者模式,一个topic可以拥有一个或者多个消费者来订阅它的数据。对于每一个topic, Kafka 集群都会维持一个分区日志,如下所示:

docker kafka 集群,kafka,Docker,kafka,docker,分布式

        每个分区都是有序且顺序不可变的记录集,并且不断地追加到结构化的commit log文件。分区中的每一个记录都会分配一个id号来表示顺序,我们称之为offset,offset用来唯一的标识分区中每一条记录。

        Kafka 集群保留所有发布的记录—无论他们是否已被消费—并通过一个可配置的参数——保留期限来控制。Kafka的性能和数据大小无关,因此能够长时间存储数据。

        在每一个消费者中唯一保存的元数据是offset(偏移量)即消费在log中的位置。偏移量由消费者所控制:通常在读取记录后,消费者会以线性的方式增加偏移量,但实际上,由于这个位置由消费者控制,所以消费者可以采用任何顺序来消费记录。例如,一个消费者可以重置到一个旧的偏移量,从而重新处理过去的数据;也可以跳过最近的记录,从"现在"开始消费。

生产者

        生产者可以将数据发布到所选择的topic(主题)中。生产者负责将记录分配到topic的哪一个 partition(分区)中。可以使用循环的方式来简单地实现负载均衡,也可以根据某些语义分区函数(例如:记录中的key)来完成。

消费者

        消费者使用一个 消费组 名称来进行标识,发布到topic中的每条记录被分配给订阅消费组中的一个消费者实例.消费者实例可以分布在多个进程中或者多个机器上。如果所有的消费者实例在同一消费组中,消息记录会负载平衡到每一个消费者实例。如果所有的消费者实例在不同的消费组中,每条消息记录会广播到所有的消费者进程。

docker kafka 集群,kafka,Docker,kafka,docker,分布式

        如图,这个 Kafka 集群有两台 server 的,四个分区(p0-p3)和两个消费者组。消费组A有两个消费者,消费组B有四个消费者。通常情况下,每个 topic 都会有一些消费组,一个消费组对应一个"逻辑订阅者"。一个消费组由许多消费者实例组成,便于扩展和容错。这就是发布和订阅的概念,只不过订阅者是一组消费者而不是单个的进程。

        在Kafka中实现消费的方式是将日志中的分区划分到每一个消费者实例上,以便在任何时间,每个实例都是分区唯一的消费者。维护消费组中的消费关系由Kafka协议动态处理。如果新的实例加入组,他们将从组中其他成员处接管一些 partition 分区;如果一个实例消失,拥有的分区将被分发到剩余的实例。

        Kafka 只保证分区内的记录是有序的,而不保证主题中不同分区的顺序。每个 partition 分区按照key值排序足以满足大多数应用程序的需求。但如果你需要总记录在所有记录的上面,可使用仅有一个分区的主题来实现,这意味着每个消费者组只有一个消费者进程。

分布式

        日志的分区partition (分布)在Kafka集群的服务器上。每个服务器在处理数据和请求时,共享这些分区。每一个分区都会在已配置的服务器上进行备份,确保容错性。每个分区都有一台 server 作为 “leader”,零台或者多台server作为 follwers 。leader server 处理一切对 partition (分区)的读写请求,而follwers只需被动的同步leader上的数据。当leader宕机了,followers 中的一台服务器会自动成为新的 leader。每台 server 都会成为某些分区的 leader 和某些分区的 follower,因此集群的负载是平衡的。

以上内容摘自:www.wenjiangs.com/doc/kafka-intro

 

Kafka集群docker部署流程

简述

        本文部署kafka集群至3个服务器节点。

环境准备

  • 硬件环境
服务器(或虚拟机) 角色
192.168.**.131

zookeeper节点1、kafka节点1

192.168.**.132

zookeeper节点2、kafka节点2

192.168.**.133

zookeeper节点3、kafka节点3

  • 软件环境
软件 角色
docker

环境部署(提前Pull镜像)

sudo docker pull zookeeper

sudo docker pull wurstmeister/kafka

sudo docker pull sheepkiller/kafka-manager

部署流程


  • 创建Zookeeper部署环境目录(三台服务器相同)
sudo mkdir /data/kafka_cluster
cd /data/kafka_cluster
sudo mkdir -p zookeeper/config
sudo mkdir -p zookeeper/data

docker kafka 集群,kafka,Docker,kafka,docker,分布式


  •  创建Zookeeper配置文件(三台服务器相同)
sudo vim zookeeper/config/zoo.cfg
# 粘贴下方代码保存退出
clientPort=2181
dataDir=/data
dataLogDir=/data/log
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
4lw.commands.whitelist=*
server.1=192.168.**.131:2888:3888
server.2=192.168.**.132:2888:3888
server.3=192.168.**.133:2888:3888

  •  配置Zookeeper节点ID(三台服务器myid不同)
sudo vim zookeeper/data/myid
# 分别向131,132,133节点写入1,2,3保存退出

  •  启动Zookeeper服务(三台服务器容器命名可以相同)
# 节点1服务器:131
sudo docker run --network host -v /data/kafka_cluster/zookeeper/data:/data -v /data/kafka_cluster/zookeeper/conf/zoo.cfg:/conf/zoo.cfg --name zookeeper-1 -itd zookeeper
# 节点2服务器:132
sudo docker run --network host -v /data/kafka_cluster/zookeeper/data:/data -v /data/kafka_cluster/zookeeper/conf/zoo.cfg:/conf/zoo.cfg --name zookeeper-2 -itd zookeeper
# 节点3服务器:133
sudo docker run --network host -v /data/kafka_cluster/zookeeper/data:/data -v /data/kafka_cluster/zookeeper/conf/zoo.cfg:/conf/zoo.cfg --name zookeeper-3 -itd zookeeper

  • 创建kafka-server部署环境目录(三台服务器相同)
sudo mkdir -p kafka/log

  •  启动Kafka服务(三台服务器不同)
# 该处的启动方式加入了部分环境变量,等同于修改配置文件,更加方便
zookeepers_con="192.168.**.131:2181,192.168.**.132:2181,192.168.**.133:2181"
# 节点1服务器:131
sudo docker run -p 9092:9092 --name kafka-1 -itd \
-e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=${zookeepers_con} \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.**.131:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /data/kafka/log:/kafka wurstmeister/kafka
# 节点2服务器:132
sudo docker run -p 9092:9092 --name kafka-2 -itd \
-e KAFKA_BROKER_ID=2 -e KAFKA_ZOOKEEPER_CONNECT=${zookeepers_con} \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.**.132:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /data/kafka/log:/kafka wurstmeister/kafka
# 节点3服务器:133
sudo docker run -p 9092:9092 --name kafka-3 -itd \
-e KAFKA_BROKER_ID=3 -e KAFKA_ZOOKEEPER_CONNECT=${zookeepers_con} \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.**.133:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -v /data/kafka/log:/kafka wurstmeister/kafka

  •  启动Kafka-manager服务(为了便于可视化管理,可只在主节点)
sudo docker run -p 9000:9000 --name kafka-manager -itd \
-e ZK_HOSTS=${zookeepers_con} sheepkiller/kafka-manager

  • 环境验证

        网页端打开主节点的9000端口,如下图所示进行集群的添加,其他设置可暂时不设置; 

docker kafka 集群,kafka,Docker,kafka,docker,分布式

         选择创建的集群test-cluster,查看集群信息;

docker kafka 集群,kafka,Docker,kafka,docker,分布式

docker kafka 集群,kafka,Docker,kafka,docker,分布式

 


  • 消息测试

        在主节点创建消息主题test-topic:

docker kafka 集群,kafka,Docker,kafka,docker,分布式

         在网页管理端查看集群topic概况已能够查询到消息主题test-topic:

docker kafka 集群,kafka,Docker,kafka,docker,分布式

         创建生产者并发布消息: 

docker kafka 集群,kafka,Docker,kafka,docker,分布式

         创建消费者并订阅消息,消息消费显示正常:  

docker kafka 集群,kafka,Docker,kafka,docker,分布式

 参考文献

  • http://www.jianshu.com/p/1dc1d3d59500
  • http://www.jianshu.com/p/a297e8aefe7c

 

到了这里,关于【Kafka】docker部署Kafka集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【分布式云储存】高性能云存储MinIO简介与Docker部署集群

    分布式存储服务一直以来是中大型项目不可或缺的一部分,一般常用的商用文件服务有七牛云、阿里云等等,自建的开源文件服务有FastDFS、HDFS等等。但是对于这些方案有的需要付费有些却太过于笨重,今天我们就分享一款轻量级完全可替代生产的高性能分布式储存服务Mini

    2024年02月07日
    浏览(57)
  • 分布式应用之zookeeper集群+消息队列Kafka

           ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。为分布式框架提供协调服务的

    2024年02月06日
    浏览(60)
  • 分布式消息流处理平台kafka(一)-kafka单机、集群环境搭建流程及使用入门

    kafka最初是LinkedIn的一个内部基础设施系统。最初开发的起因是,LinkedIn虽然有了数据库和其他系统可以用来存储数据,但是缺乏一个可以帮助处理持续数据流的组件。 所以在设计理念上,开发者不想只是开发一个能够存储数据的系统,如关系数据库、Nosql数据库、搜索引擎等

    2024年02月16日
    浏览(50)
  • 【生产级实践】Docker部署配置Hadoop3.x + HBase2.x实现真正分布式集群环境

    网上找了很多资料,但能够实现Docker安装Hadoop3.X和Hbase2.X真正分布式集群的教程很零散,坑很多, 把经验做了整理, 避免趟坑。 1、机器环境 这里采用三台机器来部署分布式集群环境: 192.168.1.101 hadoop1 (docker管理节点) 192.168.1.102 hadoop2 192.168.1.103 hadoop3 2、下载Docker Hadoop的

    2024年02月02日
    浏览(48)
  • 分布式运用之Filebeat+Kafka+ELK 的服务部署

    Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic 的。 topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。Producer 生产的数据会被不断追加到该 log 文件末端,

    2024年02月06日
    浏览(44)
  • 【Docker】Docker安装Hadoop分布式集群

    1. 查看docker的hadoop镜像 2. 拉取stars最多的镜像 3. 拉取完成后查看镜像是否已到本地 docker images 4. 运行第一个容器hadoop102 5. 进入该容器 docker exec -it hadoop102 bash 6. 配置ssh生成秘钥,所有的节点都要配置 /etc/init.d/sshd start 7. 生成密钥 ssh-keygen -t rsa 8. 复制公钥到authorized_keys中 9. 运

    2024年01月24日
    浏览(46)
  • Docker安装Hadoop分布式集群

    hadoop目录安装在:/usr/local/hadoop-2.7.0/etc/hadoop

    2024年02月13日
    浏览(52)
  • docker 笔记5:redis 集群分布式存储案例

    尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili 目录 1.cluster(集群)模式-docker版哈希槽分区进行亿级数据存储  1.1面试题 1.1.1  方案1 哈希取余分区 1.1.2 方案2 一致性哈希算法分区  原理 优点 一致性哈希算法的容错性  一致性哈希算法的扩展性  缺点  一致性哈希算

    2024年02月09日
    浏览(42)
  • 【Kafka】docker部署Kafka集群

    目录 Kafka概述 Kafka集群docker部署流程 简述 环境准备 部署流程  参考文献           以下概述Kafka内的几个核心概念,可参考官方文档,有兴趣可读:kafka.apache.org Topic与日志         Topic 就是数据主题,是数据记录发布的地方,可以用来区分业务系统。Kafka 中的 Topics 总是

    2024年02月12日
    浏览(77)
  • Zookeeper+Hadoop+Spark+Flink+Kafka+Hbase+Hive 完全分布式高可用集群搭建(保姆级超详细含图文)

    说明: 本篇将详细介绍用二进制安装包部署hadoop等组件,注意事项,各组件的使用,常用的一些命令,以及在部署中遇到的问题解决思路等等,都将详细介绍。 ip hostname 192.168.1.11 node1 192.168.1.12 node2 192.168.1.13 node3 1.2.1系统版本 1.2.2内存建议最少4g、2cpu、50G以上的磁盘容量 本次

    2024年02月12日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包