kafka docker-composer.yml
使用Docker快速搭建Kafka开发环境
Docker在很多时候都可以帮助我们快速搭建想要的开发环境,免去了很多安装配置上的麻烦。在涉及到Apache Kafka的快速demo时,使用Docker Hub上提供的镜像也是一个很好的选择。
Kafka & ZooKeeper Docker镜像
spotify/kafka
在demo时,很多情况下我们并不追求Kafka与ZooKeeper的区隔,来自spotify的kafka镜像同时包含了kafka与zookeeper,因此基本上可以“随装随用”。
但已经较长时间没有维护,Kafka版本仍然停留在0.10。对需要使用1.0版本的同仁已经不适合了。
landoop/fast-data-dev
提供了一整套包括Kafka,ZooKeeper,Schema Registry,,Kafka-Connect等在内的多种开发工具和Web UI监视系统。基本上是我见过的最强大的开发环境。尤其是对于Kafka Connect的支持,包含了MongoDB,ElasticSearch,Twitter等超过20种Connector,并且提供了通过REST API提交Connector配置的Web UI。
基本是我测试Kafka Connect的首选。
wurstmeister/kafka
维护较为频繁的一个Kafka镜像。只包含了Kafka,因此需要另行提供ZooKeeper,推荐使用同一作者提交的wurstmeister/zookeeper。
现在已经提供较新的1.1.0版本。
搭建开发环境
1 ZooKeeper 1 Kafka
这里以我自己最常用的wurstmeister/kafka为例,使用docker-compose运行一个只有一个ZooKeeper node和一个Kafka broker的开发环境:
version: '2'
services:
zoo1:
image: wurstmeister/zookeeper
restart: unless-stopped
hostname: zoo1
ports:
- "2181:2181"
container_name: zookeeper
# kafka version: 1.1.0
# scala version: 2.12
kafka1:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CREATE_TOPICS: "stream-in:1:1,stream-out:1:1"
depends_on:
- zoo1
container_name: kafka
这里利用了wurstmeister/kafka提供的环境参数KAFKA_CREATE_TOPICS
使Kafka运行后自动创建topics。
1 ZooKeeper 2 Kafka
ZooKeeper的部分与上个例子一样,需要调整的是Kafka部分。
这里将第一个Kafka broker命名为kafka1,KAFKA_ADVERTISED_HOST_NAME
参数设为kafka1,KAFKA_ADVERTISED_PORT
设为9092。
对于第二个broker,相较第一个broker所有kakfka1的部分改为kafka2,包括service name和coontainer name。同时KAFKA_BROKER_ID
设为2,KAFKA_ADVERTISED_PORT
设为9093。
需要注意的是,当有不止一个kafka broker时,这里的hostname不能再设为localhost。建议设为本机IP地址。以Mac为例,使用ipconfig getifaddr en0
指令来获取。
具体的docker-compose.yml文件内容如下:
# ZooKeeper部分不变
kafka1:
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: 192.168.1.2
KAFKA_ADVERTISED_PORT: 9092
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_CREATE_TOPICS: "stream-in:2:1,stream-out:2:1"
depends_on:
- zoo1
container_name: kafka1
kafka2:
image: wurstmeister/kafka
ports:
- "9093:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: {ipconfig getifaddr en0指令的结果}
KAFKA_ADVERTISED_PORT: 9093
KAFKA_ZOOKEEPER_CONNECT: "zoo1:2181"
KAFKA_BROKER_ID: 2
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
depends_on:
- zoo1
container_name: kafka2
与容器内的开发环境交互
可以使用docker exec
命令直接调用kafka容器内的脚本来进行创建/删除topic,启动console producer等等操作。
如果本地存有与容器内相同的Kafka版本文件,也可以直接使用本地脚本文件。如上述docker-compose.yml文件所示,kafka1的hostname即是kafka1,端口为9092,通过kafka1:9092就可以连接到容器内的Kafka服务。
列出所有topics (在本地kafka路径下)$ bin/kafka-topics.sh --zookeeper localhost:2181 --list
列出所有Kafka brokers$ docker exec zookeeper bin/zkCli.sh ls /brokers/ids
kafka docker-composer.yml的更多相关文章
- Kafka Docker集群搭建
1. Zookeeper下载 http://apache.org/dist/zookeeper/ http://mirrors.hust.edu.cn/apache/zookeeper/zookeep ...
- ELK+kafka docker快速搭建+.NetCore中使用
ELK开源实时日志分析平台.ELK是Elasticsearch,Logstash,Kibana 的缩写. Elasticsearch:是个开源分布式搜索引擎,简称ESLogstash:是一个完全开源的 ...
- Docker Compose YML文件配置
Docker Compose YML 默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来 ...
- kafka+docker+python
昨天晚上刚刚才花3小时看完<日志:每个软件工程师都应该知道的有关实时数据的统一概念>. 今天就把kafka在docker容器里运行起来,github上有几个,但都太复杂了. 我自己写个最简 ...
- 转 Kafka docker
Kafka 教程 http://haofly.net/kafka/ Posted on 2016-12-23 | In tools | | Views: 224 重要概念 生产者(Produc ...
- docker compose yml 文件常用字段简介
常用参数: version # 指定 compose 文件的版本 services # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称 ...
- Docker composer搭建Spring Cloud Alibaba 运行环境(二)
" Spring Cloud Alibaba要用到的组件很多,注册中心nacos, 限流sentinel, 数据库,网关等等.由于用到的组件相对较多,部署会很繁琐,最关键的是没有资源服务器, ...
- Docker常用yml
GitLib version: '3.1' services: web: image: 'twang2218/gitlab-ce-zh:11.0.5' restart: always hostname ...
- Docker Compose yml
Wordpress + Mysql version: '3' services: db: image: mysql:latest volumes: - db_data:/var/lib/mysql e ...
- Vagrant Docker Composer Yarn 国外资源下载慢或失败的问题
1 问题 有时,我们请求国外资源时,下载巨慢,甚至失败.如: cd vue-devtools/ $ yarn install 进行到 cypress.... 时,可能失败. 2 解决 次日凌晨(7-8 ...
随机推荐
- 任何国家都无法限制数字货币。为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技术 e.拜占庭算法 f.权益证明POW,POS,DPOS 原因一: 点对点网络设计 其中点对点的P2P网络是bittorent ,由于是点对点的网络,没有中心化,因此在全球分布式的网
任何国家都无法限制数字货币.为什么呢? 要想明白这个问题需要具备一点区块链的基础知识: 区块链使用的大致技术包括以下几种: a.点对点网络设计 b.加密技术应用 c.分布式算法的实现 d.数据存储技 ...
- python 定时器,轮询定时器
首先想要实现的效果是:每隔1段时间,就去调用1个接口确认结果,直到接口返回的结果为true,停止调用 所以这里会用到python的定时器 先来了解最简单的定时器: python 定时器默认定时器只执行 ...
- Codeforces Round #573
http://codeforces.com/contest/1191 A 给一个数,可以加0,1或2然后取模,再映射到字母,字母有排名,求最大排名. 总共只有4种情况,讨论即可 #include< ...
- Linux_ISCSI服务器
目录 目录 网络存储 ISCSI How to setup ISCSI server SCSI Commands Server Side Client Side Edit the ISCSI conf ...
- Java 基础-基本数据类型与表达式
基本数据类型 基本概念 标识符 标识符与内存中的某个位置对应,Java 中标识符的规范如下: 必须由大小写字母.下划线.美元符号.数字组成 首字母只能是大小写字母.下划线.美元符号 变量 变量的值可以 ...
- C语言I作业12——学习总结
1.我学到的内容 二.我的收获 作业 链接 第一次作业 https://www.cnblogs.com/liuxiangjiang/p/11579877.html 第二次作业 https://www. ...
- BP神经网络反向传播之计算过程分解(详细版)
摘要:本文先从梯度下降法的理论推导开始,说明梯度下降法为什么能够求得函数的局部极小值.通过两个小例子,说明梯度下降法求解极限值实现过程.在通过分解BP神经网络,详细说明梯度下降法在神经网络的运算过程, ...
- (4.31)quotename函数
操作sql server尤其是写存储过程时,要用到各种各样的函数,今天就总结一个quotename()的用法. 1.语法: quotename(‘character_string’[,‘quote_c ...
- JAVA总结--jvm
VM,Virtual Machine 即虚拟机,指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统. JVM,Java Virtual Machine 即Java虚拟机, ...
- spring-第十五篇之AOP面向切面编程之AspectJ框架简单应用
1.去官方网站下载aspectj-1.8.0.jar 2.在jar包目录启动cmd,执行java -jar aspectj-1.8.0.jar,Next 3.检查JAVA_HOME路径是否正确,如果不 ...