• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

kafka | 1.docker部署kafka

武飞扬头像
独酌先生QAQ
帮助1

07.Kafka环境搭建 | 对线面试官

本系列文章借鉴于上述链接,但是修改了其中存在的问题,并记录了在此次部署过程中遇到的坑。

一.使用docker-compose部署kafka

这是原作者部署的方式

步骤1-4  :是下载安装Docker compose环境

        5     :是创建docker-compose.yml

        6-13:启动kafka

        14   :kafka-manager kafka可视化页面

1.运行以下命令以下载 Docker Compose 的当前稳定版本

wget https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m) -O /usr/local/bin/docker-compose

(此处没有采用原作者的执行脚本

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

,因为存在网络原因会使得下载的不完整,最终出现:安装失败 Cannot open self /usr/local/bin/docker-compose的情况,详情可见

2.将可执行权限应用于二进制文件:

sudo chmod  x /usr/local/bin/docker-compose

3.创建软链:

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4.测试是否安装成功:

docker-compose --version

学新通

 5.新建搭建kafka环境的docker-compose.yml文件,随便找个合适的目录下,创建一个yml文件

vim docker-compose.yml
  1.  
    version: '3'
  2.  
    services:
  3.  
    zookepper:
  4.  
    image: wurstmeister/zookeeper
  5.  
    container_name: zookeeper
  6.  
    volumes:
  7.  
    - "/etc/localtime:/etc/localtime"
  8.  
    ports:
  9.  
    - "2181:2181"
  10.  
     
  11.  
    kafka:
  12.  
    image: wurstmeister/kafka
  13.  
    container_name: kafka
  14.  
    volumes:
  15.  
    - "/etc/localtime:/etc/localtime"
  16.  
    environment:
  17.  
    KAFKA_BROKER_ID: 0
  18.  
    KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092
  19.  
    KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
  20.  
    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
  21.  
    KAFKA_CREATE_TOPICS: "hello_world"
  22.  
    ports:
  23.  
    - "9092:9092"
  24.  
    depends_on:
  25.  
    - zookepper
  26.  
     
  27.  
    kafka-manager:
  28.  
    image: sheepkiller/kafka-manager
  29.  
    container_name: kafka-manager
  30.  
    environment:
  31.  
    ZK_HOSTS: zookeeper:2181
  32.  
    APPLICATION_SECRET: xxxxx
  33.  
    KAFKA_MANAGER_AUTH_ENABLED: "true"
  34.  
    KAFKA_MANAGER_USERNAME: admin
  35.  
    KAFKA_MANAGER_PASSWORD: 123456
  36.  
    ports:
  37.  
    - "9000:9000"
  38.  
    depends_on:
  39.  
    - kafka
学新通

注意点:1.注意yml格式问题,可以在YAML、YML在线编辑器(格式化校验)-BeJSON.com

这个工具网站进行校验

                2.对配置文件中的127.0.0.1地址进行替换,换成自己的服务器地址

                3.如果你用的是云服务器,那需要把端口给打开,2181,9000和9092

学新通

6.在存放docker-compose.yml的目录下执行启动命令:

docker-compose up -d

(执行之后,docker会pull最新版本的zoopkeer,kafka,kafka-manager,然后创建对应的服务) 

7.可以查看下docker镜像运行的情况:

docker ps 

学新通 8.进入kafka 的容器:

docker exec -it kafka sh

9. 创建一个topic(topicName就叫原作者的austin,可以修改)

$KAFKA_HOME/bin/kafka-topics.sh --create --topic austin --partitions 4 --zookeeper zookeeper:2181 --replication-factor 1 

10.查看刚创建的topic信息:

$KAFKA_HOME/bin/kafka-topics.sh --zookeeper zookeeper:2181 --describe --topic austin

学新通

11.启动一个消费者:

$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server kafka:9092 --from-beginning --topic austin

 12.新增一个窗口,启动一个生产者:

  1.  
    docker exec -it kafka sh
  2.  
    $KAFKA_HOME/bin/kafka-console-producer.sh --topic=austin --broker-list kafka:9092

 13.在生产者里打印字符串,看消费者是否接收到

学新通

学新通

 14.kafka可视化界面也可以打通过端口9000打开,其中topics页面可以观察对应的配置情况

学新通

二.手动配置kafka和zookeeper

(此方法在创建topic时出现问题,暂时未解决,仅提供一种思路)

1.拉取kafka和zookeeper镜像

  1.  
    docker pull wurstmeister/zookeeper:latest
  2.  
     
  3.  
    docker pull wurstmeister/kafka:latest

2.创建kafka和zookeeper容器

docker run -d --name zookeeper1 -p 2181:2181 -t wurstmeister/zookeeper
docker run  -d --name kafka1 -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=127.0.0.1:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://:9092 -e KAFKA_LISTENERS=PLAINTEXT://:9092 -t wurstmeister/kafka:latest

(注意修改127.0.0.1换成自己的服务器IP地址)

3.查看日志

docker logs kafka1

出现异常error=‘Not enough space‘

4.启用swap交换空间

(注:可根据实际需要更改count值的大小,这里设置6000000,大概就是5G多)

具体根据内存而定(

  1. 内存 <= 4g:Swap 至少 4G
  2. 内存 4~16G:Swap 至少 8G
  3. 内存 16G~64G:Swap 至少 16G
  4. 内存 64G~256G:Swap 至少 32G)可以参考文章Linux 中 Swap 交换分区设置教程,以及 Swap 大小与内存的关系 - 知乎
dd if=/dev/zero of=swapfile bs=1024 count=6000000

 将swapfile设置为swap空间

 mkswap swapfile

启用交换空间

swapon swapfile 

学新通

5.重启kafka

docker restart kafka1

剩余步骤参考方法一中的8-13步骤

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhghfacc
系列文章
更多 icon
同类精品
更多 icon
继续加载