首页 > 其他分享 >Docker 部署 Kafka 集群详解教程

Docker 部署 Kafka 集群详解教程

时间:2024-10-09 09:46:39浏览次数:10  
标签:-- zookeeper KAFKA 2181 详解 kafka Docker Kafka

Kafka 是一个分布式流处理平台,广泛用于构建实时数据管道和流应用。它能够处理高吞吐量的数据,并支持实时数据的发布和订阅。在本文中,我们将详细介绍如何使用 Docker 来部署 Kafka 集群,包括 Kafka 的选举原理。

前提条件

  • 安装 Docker 和 Docker Compose。
  • 理解 Kafka 和 Zookeeper 的基本概念。

步骤 1: 部署 Zookeeper

Kafka 使用 Zookeeper 来管理集群的元数据和 Leader 选举。首先,我们需要部署 Zookeeper。

  1. 拉取 Zookeeper 镜像:

    docker pull zookeeper
    
  2. 运行 Zookeeper 容器:

    docker run -d --name zookeeper -p 2181:2181 zookeeper
    

步骤 2: 部署 Kafka 集群

我们将使用 Docker Compose 来部署 Kafka 集群。

  1. 创建 docker-compose.yml 文件,内容如下:

    version: '3'
    services:
      zookeeper:
        image: zookeeper
        container_name: zookeeper
        ports:
          - "2181:2181"
      kafka1:
        image: wurstmeister/kafka
        ports:
          - "9092:9092"
        environment:
          KAFKA_ADVERTISED_HOST_NAME: 192.168.1.202
          KAFKA_CREATE_TOPICS: TestComposeTopic:4:3
          KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
          KAFKA_BROKER_ID: 1
          KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.202:9092
          KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
        container_name: kafka01
      kafka2:
        image: wurstmeister/kafka
        ports:
          - "9093:9092"
        environment:
          KAFKA_ADVERTISED_HOST_NAME: 192.168.1.202
          KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
          KAFKA_BROKER_ID: 2
          KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.202:9093
          KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9093
        container_name: kafka02
      kafka3:
        image: wurstmeister/kafka
        ports:
          - "9094:9092"
        environment:
          KAFKA_ADVERTISED_HOST_NAME: 192.168.1.202
          KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
          KAFKA_BROKER_ID: 3
          KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.202:9094
          KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9094
        container_name: kafka03
    
  2. 启动 Kafka 集群:

    docker-compose up -d
    

步骤 3: 验证 Kafka 集群

  1. 查看 Kafka 集群状态:

    docker exec -it kafka01 /opt/kafka/bin/kafka-topics.sh --list --zookeeper zookeeper:2181
    
  2. 创建测试主题:

    docker exec -it kafka01 /opt/kafka/bin/kafka-topics.sh --create --zookeeper zookeeper:2181 --replication-factor 3 --partitions 5 --topic TestTopic
    
  3. 查看主题详情:

    docker exec -it kafka01 /opt/kafka/bin/kafka-topics.sh --describe --zookeeper zookeeper:2181 --topic TestTopic
    

Kafka 选举原理

在这里插入图片描述

控制器选举

Kafka 集群中的控制器负责管理分区和副本的领导者选举。当 Kafka 启动时,第一个启动的 Broker 会成为控制器。如果当前控制器失败,其他 Broker 会通过 Zookeeper 进行新的控制器选举 。

分区副本选举

每个 Kafka 分区都有多个副本,其中一个是领导者,其他是追随者。如果领导者失败,控制器会从 in-sync replicas (ISR) 中选举新的领导者 。

消费组选举

Kafka 消费者通过消费组协调器进行消费,消费组内会选举出一个领导者来协调消费过程 。

通过以上步骤,你可以成功地使用 Docker 部署一个 Kafka 集群,并理解其背后的选举原理。这为构建可靠的实时数据流应用程序提供了坚实的基础。

标签:--,zookeeper,KAFKA,2181,详解,kafka,Docker,Kafka
From: https://blog.csdn.net/qq_40797754/article/details/142773795

相关文章

  • 在 X86_64(amd64) 平台上的docker支持打包跨平台的镜像(如arm64)
    在信创,ARM开始崛起的现在,Docker也从一开始的只支持x86_64架构变为支持各种架构了,虽然Docker的目的是保证只要Docker安装好,在任意机器上运行都能达到一样的效果,但是这个的前提是Docker镜像的架构和当前服务器的架构一致,以前都是x84_64架构自然可以,但现在也有别的架构,因此......
  • 大数据-158 Apache Kylin 安装配置详解 集群模式启动
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(已更完)Druid(已更完)Kylin(正在更新…)章节内容上节......
  • ThreeJS入门(099):THREE.ArcCurve 知识详解,示例代码
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,webgl,ThreeJS,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第100篇入门文章......
  • Kafka系列---【kafka设置开机自动启动】
    注意:先停止kafka,再操作。1.新增kafka.servicevi/etc/systemd/system/kafka.service#kafka.service内容[Unit]Description=ApacheKafkaServiceAfter=network.target[Service]Type=forkingExecStart=/opt/app/middles/kafka_2.12-2.4.1/bin/kafka-server-start.sh......
  • CentOS 8 停止维护后通过 rpm 包手动安装 docker
    根据Docker官方文档的指引,进入Dockerrpm包下载的地址,根据自己系统的架构和具体版本选择对应的路径这里我使用https://download.docker.com/linux/centos/7/x86_64/stable版本,根据docker官方的给出的安装命令选择性的下载对应的rpm包最终使用yum命令安装下载好的......
  • 生成对抗网络(GANs)详解:原理、架构与应用潜力
    生成对抗网络(GANs)详解:原理、架构与应用潜力目录......
  • 【C++】map详解
    ......
  • docker加速镜像配置及使用阿里云镜像安装docker
    1、阿里云个人镜像加速器sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":["https://snltq7d6.mirror.aliyuncs.com"]}EOFsudosystemctldaemon-reloadsudosystemctlrestartdocker2、阿里云镜像......
  • MT1301-MT1310 码题集 (c 语言详解)
    MT1301·1的补码c语言代码实现#include<stdio.h>intmain(){longn=0;longb=0;scanf("%ld",&n);inti=0;//while(b<n){b=b*16+0xf;}printf("%ld",b-n);return......
  • 查询优化器选错索引:问题分析与解决方案详解
    引言在现代数据库系统中,查询优化器是负责决定如何执行SQL查询的核心组件。它会根据查询语句、数据分布、索引情况等,选择最优的执行计划。然而,查询优化器并不总是能够做出最佳选择,某些情况下可能会选择一个不理想的索引,从而导致查询性能下降。当查询优化器选错索引时,如何......