当前位置:   article > 正文

从现在开始学 Kafka:Docker 部署 Kafka 单机版_docker 启动单机的kafka

docker 启动单机的kafka

前言

刚开始学习 Kafka,在什么都不会一脸懵逼的情况下,我选择通过部署单机版的方式,对 Kafka 有个初步认识,同时也会整理相关知识点信息,单独开个文章。

本文服务器目录统一放在 /data/kafka 目录下

官方文档

Kafka 中文文档

关于镜像

镜像选择的是 wurstmeister/kafka-docker 算是最火的 Kafka 镜像了
Github 地址
Dockerhub 地址

安装 docker-componse

由于安装方式使用的是 docker-componse,所以要先安装
CentOS 之 docker-compose 安装

官方安装教程

使用 docker-componse 安装一个是因为 wurstmeister/kafka-docker 给出的教程是这种方式,另一个原因确实是这种方式能减少不少命令,最后配置写好后统一启动就行了

部署

编写启动脚本

docker-compose-single-broker.yml

  • image: 使用的启动镜像
  • port: 服务器与容器映射端口,zookeeper 默认端口 2181kafka 默认端口 9092
  • environment: 设置参数

官方参数参考

PS:kafka 需要依赖 zookeeper 环境,因此需要配置 zookeeper 镜像,没镜像会自动拉取

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      # client 要访问的 broker 地址
      KAFKA_ADVERTISED_HOST_NAME: 118.25.215.105
      # 通过端口连接 zookeeper
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      # 每个容器就是一个 broker,设置其对应的 ID
      KAFKA_BROKER_ID: 0
      # 外部网络只能获取到容器名称,在内外网络隔离情况下
      # 通过名称是无法成功访问 kafka 的
      # 因此需要通过绑定这个监听器能够让外部获取到的是 IP 
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://118.25.215.105:9092
      # kafka 监听器,告诉外部连接者要通过什么协议访问指定主机名和端口开放的 Kafka 服务。
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      # Kafka默认使用-Xmx1G -Xms1G的JVM内存配置,由于服务器小,调整下启动配置
      # 这个看自己的现状做调整,如果资源充足,可以不用配置这个
      KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"
      # 设置 kafka 日志位置
      KAFKA_LOG_DIRS: "/kafka/logs"
      # kafka 自动创建 topic,对于生成者与消费者连接的 TOPIC 不存在自动创建
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: true
      # kafka 开启删除 topic,开了自动创建,删除的也要开,否则删除后还会自动创建
      KAFKA_DELETE_TOPIC_ENABLE: true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      # 挂载 kafka 日志
      - /data/kafka/logs:/kafka/logs
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

启动 Kafka

  • -f: 使用指定的配置文件
  • up: 创建
docker-compose -f /data/kafka/docker-compose-single-broker.yml up
  • 1

启动成功的话,单机版就已经部署完成
在这里插入图片描述
在这里插入图片描述

命令

查看脚本

先来看下 Kafka 下面有哪些脚本,因为我们需要依赖脚本来执行命令

直接根据容器名对容器内执行命令

PS:以后我们也可以根据脚本,去百度对应的命令

docker exec -it kafka_kafka_1 /bin/bash -c 'cd /opt/kafka/bin && ls'
  • 1

在这里插入图片描述

创建 Topic

Topic 就是类别,分组,但我更喜欢叫主题。

生产者向某个 Topic 生产数据,消费者去对应消费 Topic 的数据

  • –partitions 1: 分区数量 1
  • –replication-factor 1: 副本因子数量 1

分区的数量一般不多于服务器,副本因子也一样

分区: 分区的作用能起到一个负载均衡提高吞吐量的作用。假如有3个台服务器,一共3个分区,那么每个服务器就对应 1 个分区,每台服务器吞吐量 100,那么一共就能处理 300 吞吐量。但是分区过多也不好,因为越多的分区需要打开更多地文件句柄,更多的内存,更高的延迟,运维与排错方面的成本也会增加。
参考:如何为Kafka集群选择合适的Partitions数量

副本因子: 由于如果服务器宕机,就会导致分区数量缺少,导致集群的不可用,因此会用副本因子来保证分区数量。
参考:Kafka动态调整topic副本因子replication-factor

docker exec -it kafka_kafka_1 /bin/bash -c \
'/opt/kafka/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 \
--replication-factor 1 --partitions 1 --topic test'
  • 1
  • 2
  • 3

在这里插入图片描述

查看 Topic

docker exec -it kafka_kafka_1 /bin/bash -c \
'/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092'
  • 1
  • 2

可以看到刚创建的 test 主题
在这里插入图片描述

生产者生产数据

现在模拟生产者向主题中设置数据

docker exec -it kafka_kafka_1 /bin/bash -c \
'/opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test'
  • 1
  • 2

PS:Ctrl + D 退出
在这里插入图片描述

消费者消费数据

模拟消费者从开始位置消费数据

docker exec -it kafka_kafka_1 /bin/bash -c \
'/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 \
--from-beginning --topic test'
  • 1
  • 2
  • 3

在这里插入图片描述

结语

说实话,上述的命令行虽然使用上都很正常,但是还是有点懵,只能说具体的搭建完成了,下面要想正确学习还是需要结合代码。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/142393
推荐阅读
相关标签
  

闽ICP备14008679号