文档章节

docker启动kafka

被IT耽误的歌手
 被IT耽误的歌手
发布于 2017/07/06 10:31
字数 788
阅读 954
收藏 0

此文介绍如何创建kafka实例。
源码:https://github.com/wurstmeister/kafka-docker.git
此镜像在run起之前,我们要根据自己的实际情况build对应的镜像。通过Docker-compose.yaml文件可以看出:

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    build: .
    ports:
      - "9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

首先我们需要安装docker-compose工具,安装简单介绍下:

#将docker-compose源码进行下载安装
#curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
#给予权限
#chmod +x /usr/bin/docker-compose

然后将KAFKA_ADVERTISED_HOST_NAME对应的ip改为自己所想提供kafka服务的宿主机ip。
KAFKA_ZOOKEEPER_CONNECT可以选择不变,当然也可以修改为提供zookeeper服务的宿主机ip。

运行kafka集群
在包含kafka源码的目录下执行

#docker-compose run up -d

此时稍作等待,会根据咱们之前定义的变量去pull以及build相对应的镜像并最终run起来。

细心的朋友可以发现,kafka每次run起来之后映射到宿主机的端口经常变,不是我们所希望的怎么办?

我个人建议就用docker-compose build出镜像后,仍然是写个docker的启动脚本去启动为佳,当然如果用到了kubernetes或者mesos管理工具,可以写成yaml文件进行启动。

下面简单说一下如何通过docker run 的命令来指定kafka容器的运行:
通过docker-compose,我们可以看到共build了2个镜像,分别为wurstmeister/zookeeper与kafkadocker_kafka
所以基本初级以上的朋友看到这里都可以自己想到run起来的命令了。
需要注意的是,zookeeper内挂工作目录为/opt/zookeeper-3.4.9/data
kafka内挂工作目录为/kafka

#启动zookeeper
#docker run --name zookeeper -p 2181:2181 -v /docker/kafka/zoo_log:/opt/zookeeper-3.4.9/data -tid wurstmeister/zookeeper

#启动kafka
docker run --name kafka -p 9092:9092 -e KAFKA_ZOOKEEPER_CONNECT="10.45.151.4:2181" -e KAFKA_ADVERTISED_HOST_NAME="10.45.151.4" -e LANG="en_US.UTF-8" -v /docker/kafka/kfk_log:/kafka -v /var/run/docker.sock:/var/run/docker.sock -tid kafkadocker_kafka

到这里基本已经完成了kafka、zookeeper的集群容器创建。(单个broker)如果想建立多个broker的话。跟上面类似,只是我们需要修改的是docker-compose-single-broker.yml文件:

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
  kafka:
    build: .
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
      KAFKA_CREATE_TOPICS: "test:1:1"
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
#创建3个broker
#docker-compose scale kafka=3(3个broker)
#停止之前的容器
#docker-compose stop
#启动集群
#docker-compose -f docker-compose-single-broker.yml up

以上对kafka的集群已经全部介绍完毕。如何验证服务正常与否:

#进入容器
#docker exec -it kafka /bin/bash
#创建topic test2
bash-4.3# kafka-topics.sh --create --zookeeper 10.45.151.4:2181 --replication-factor 1 --partitions 1 --topic test2
Created topic "test2".
#查询topic
bash-4.3# kafka-topics.sh --list --zookeeper 10.45.151.4:2181
__consumer_offsets
hlht_specialprocessdata
kfk_callback_log
test
test1
test2
#发送消息,发送后ctrl+c退出即可
bash-4.3# kafka-console-producer.sh --broker-list 10.45.151.4:9092 --topic test2
nihao woshi test2
#读取消息
^Cbash-4.3# kafka-console-consumer.sh --zookeeper 10.45.151.4:2181 --topic test2 --from-beginning
Using the ConsoleConsumer with old consumer is deprecated and will be removed in a future major release. Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
nihao woshi test2

以上博文应该是能够达到运行需求。如果有哪里说的不到位的或者不清楚的朋友,可以在下方留言。

© 著作权归作者所有

被IT耽误的歌手
粉丝 0
博文 2
码字总数 1794
作品 0
房山
运维
私信 提问
docker入门到实战(6)在docker中安装和使用kafka

下载镜像 这里使用了wurstmeister/kafka和wurstmeister/zookeeper这两个版本的镜像,在hub.docker.com中可以搜索到。 1、docker pull wurstmeister/zookeeper 2、docker pull wurstmeister/...

编程老司机
2018/05/14
0
0
HyperLedger Fabric 1.2 kafka生产环境部署(11.1)

11.1 Kafka模式简介 上一章介绍的Solo模式只存在一个排序(orderer)服务,是一种中心化结构,一旦排序(orderer)服务出现了问题,整个区块链网络将会崩溃,为了能在正式环境中稳定运行,需要...

灵·龙
2018/09/08
0
0
基于docker部署的微服务架构(七): 部署ELK日志统计分析系统

前言 上一篇 基于docker部署的微服务架构(六): 日志统一输出到kafka中间件 中,已经把分散在各个项目中的日志集中输出到了 kafka 中间件,可以在 kafka 中查看所有项目的日志。这种在控制...

月冷X心寒
2016/11/23
2.2K
1
Docker初体验

最近的项目中用到了Docker,感觉超级好用。写下这篇文章作为自己学习的一个小结,也作为一篇Docker的入门介绍。 本文由以下内容组成: 什么是Docker Docker基本概念 容器和传统VM的区别 安装...

强哥
2017/11/27
0
0
基于docker部署的微服务架构(六): 日志统一输出到kafka中间件

前言 上一篇 基于docker部署的微服务架构(五): docker环境下的zookeeper和kafka部署 中,已经成功部署了 kafka 环境,现在我们要改造之前的项目,使用 log4j2 的 kafka appender 把日志统...

月冷X心寒
2016/11/22
2.1K
4

没有更多内容

加载失败,请刷新页面

加载更多

zk中leader和follower启动时信息交互

QuorumPeer中读取节点状态信息,不同状态下设置不同角色 1 Leader启动Follower接收器LearnerCnxAcceptor LearnerCnxAcceptor负责接收非leader连接请求,线程中创建LearnerHandler处理器 2 Le...

writeademo
26分钟前
4
0
完美的Linux之【navi】使用笔记

今天要说的是才上线才两天,就已经获得超过1000星。开发者是一位来自巴西的小哥Denis Isidoro。 开发的工具navi Linux用户的日常困惑 > 新命令 用完就忘 ? > 一时想不起来命令的单词怎么拼?...

我们都很努力着
28分钟前
3
0
iptables删除命令中的相关问题

最近在做一个V**N中间件的配置工作,在配置iptables的时候,当用户想删除EIP(即释放当前连接),发现使用iptables的相关命令会提示错误。iptables: Bad rule (does a matching rule exist ...

Linux就该这么学
40分钟前
3
0
ExtJS 4.2 评分组件

本文转载于:专业的前端网站➸ExtJS 4.2 评分组件 上一文章是扩展ExtJS自带的Date组件。在这里将创建一个评分组件。 目录 1. 介绍 2. 示例 3. 资源下载 1. 介绍 代码参考的是 Sencha Touch 2...

前端老手
48分钟前
4
0
springboot2.0.6启动解析(四)观察器、启动的错报告、Headless模式相关分析

解析SpringApplication的run方法观察器、启动的错报告、Headless模式、监听器相关分析 public ConfigurableApplicationContext run(String... args) { // 构造一个任务执行观察器(Jav...

小亮89
55分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部