docker-compose搭建kafka集群

下载镜像

1.wurstmeister/zookeeper
2.wurstmeister/kafka
3.sheepkiller/kafka-manager

安装docker-compose(如果没有)

https://docs.docker.com/compose/install/

在每台机器创建文件夹(节点)

mkdir -p /database/kafka_log/zookeeper/zk1/conf
mkdir -p /database/kafka_log/zookeeper/zk1/data
mkdir -p /database/kafka_log/zookeeper/zk1/log
mkdir -p /database/kafka_log/zookeeper/zk2/conf
mkdir -p /database/kafka_log/zookeeper/zk2/data
mkdir -p /database/kafka_log/zookeeper/zk2/log
mkdir -p /database/kafka_log/zookeeper/zk3/conf
mkdir -p /database/kafka_log/zookeeper/zk3/data
mkdir -p /database/kafka_log/zookeeper/zk3/log
mkdir -p /database/kafka_log/kafka/kafka1/conf
mkdir -p /database/kafka_log/kafka/kafka1/log
mkdir -p /database/kafka_log/kafka/kafka2/conf
mkdir -p /database/kafka_log/kafka/kafka2/log
mkdir -p /database/kafka_log/kafka/kafka3/conf

创建docker网桥

1.docker network list 查看已生成的网桥
2.docker network inspect ***** (*****:网桥的名称)
3.docker network create --driver bridge --subnet 172.16.0.0/25 --gateway 172.16.0.1 zookeeper_kafka 生成新的网桥(ip根据自己的docker网桥号的规律创建)
4.(可通信跳过)如果多机器网桥无法通信 ufw allow from 172.19.0.0/16 (172.19.0.0/16:容器的IP 和使用的端口) ufw 若果没有安装即可

创建docker-compose文件(节点一)

version: '3.7'
networks:
zookeeper_kafka:
external: true
services:
zookeeper1:
image: wurstmeister/zookeeper
restart: unless-stopped
hostname: zookeeper1
container_name: zookeeper1
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 10 ## 唯一标识 不可重复 (同一个节点server和kafka保持一致)
ZOO_SERVERS: server.10=192.168.1.181:2888:3888;2181 server.20=192.168.1.169:2888:3888;2181 server.30=192.168.1.129:2888:3888;2181 ##zookeeper节点信息
volumes:
# - /database/kafka_log/zookeeper/zk1/conf/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg
- /database/kafka_log/zookeeper/zk1/data:/opt/zookeeper-3.4.13/data
- /database/kafka_log/zookeeper/zk1/log:/opt/zookeeper-3.4.13/datalog
networks:
- zookeeper_kafka kafka1:
image: wurstmeister/kafka
restart: unless-stopped
container_name: kafka1
hostname: kafka1
ports:
- "9092:9092"
external_links: # 连接本compose文件以外的container 节点ip 或者hostname
- 192.168.1.181
- 192.168.1.169
- 192.168.1.129
environment:
KAFKA_BROKER_ID: 10
KAFKA_ADVERTISED_HOST_NAME: 192.168.1.181 ## 修改:宿主机IP
KAFKA_ADVERTISED_PORT: 9092 ## 修改:宿主机映射port
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.181:9092 ## 绑定发布订阅的端口。修改:宿主机IP
KAFKA_ZOOKEEPER_CONNECT: "192.168.1.181:2181,192.168.1.169:2181,192.168.1.129:2181"
volumes: 挂载本地文件
- "/var/run/docker.sock:/var/run/docker.sock"
- "/database/kafka_log/kafka/kafka1/log:/kafka"
networks:
- zookeeper_kafka kafka-manager:
image: sheepkiller/kafka-manager:latest
restart: unless-stopped
container_name: kafka-manager
hostname: kafka-manager
ports:
- "9000:9000"
# links: # 连接本compose文件创建的container
# - kafka1
# - kafka2
# - kafka3
external_links: # 连接本compose文件以外的container 节点ip 或者hostname
- 192.168.1.181
- 192.168.1.169
- 192.168.1.129
environment:
ZK_HOSTS: 192.168.1.181:2181,192.168.1.169:2181,192.168.1.129:2181 ## 修改:宿主机IP
TZ: CST-8
networks:
- zookeeper_kafka

创建docker-compose文件(节点二)

version: '3.7'
networks:
zookeeper_kafka:
external: true
services:
zookeeper2:
image: wurstmeister/zookeeper
restart: unless-stopped
hostname: zookeeper2
container_name: zookeeper2
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 20
ZOO_SERVERS: server.10=192.168.1.181:2888:3888;2181 server.20=192.168.1.169:2888:3888;2181 server.30=192.168.1.129:2888:3888;2181
volumes:
# - /database/kafka_log/zookeeper/zk2/conf/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg
- /database/kafka_log/zookeeper/zk2/data:/opt/zookeeper-3.4.13/data
- /database/kafka_log/zookeeper/zk2/log:/opt/zookeeper-3.4.13/datalog
networks:
- zookeeper_kafka kafka2:
image: wurstmeister/kafka
restart: unless-stopped
container_name: kafka2
hostname: kafka2
ports:
- "9092:9092"
external_links:
- 192.168.1.181
- 192.168.1.169
- 192.168.1.129
environment:
KAFKA_BROKER_ID: 20
KAFKA_ADVERTISED_HOST_NAME: 192.168.1.169 ## 修改:宿主机IP
KAFKA_ADVERTISED_PORT: 9092 ## 修改:宿主机映射port
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.169:9092 ## 修改:宿主机IP
KAFKA_ZOOKEEPER_CONNECT: "192.168.1.181:2181,192.168.1.169:2181,192.168.1.129:2181"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/database/kafka_log/kafka/kafka2/log:/kafka"
networks:
- zookeeper_kafka

创建docker-compose文件(节点…)

version: '3.7'

networks:
zookeeper_kafka:
external: true services:
zookeeper3:
image: wurstmeister/zookeeper
restart: unless-stopped
hostname: zookeeper3
container_name: zookeeper3
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 30
ZOO_SERVERS: server.10=192.168.1.181:2888:3888;2181 server.20=192.168.1.169:2888:3888;2181 server.30=192.168.1.129:2888:3888;2181
volumes:
# - /database/kafka_log/zookeeper/zk3/conf/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg
- /database/kafka_log/zookeeper/zk3/data:/opt/zookeeper-3.4.13/data
- /database/kafka_log/zookeeper/zk3/log:/opt/zookeeper-3.4.13/datalog
networks:
- zookeeper_kafka kafka3:
image: wurstmeister/kafka
restart: unless-stopped
container_name: kafka3
hostname: kafka3
ports:
- "9092:9092"
external_links:
- 192.168.1.181
- 192.168.1.169
- 192.168.1.129
environment:
KAFKA_BROKER_ID: 30
KAFKA_ADVERTISED_HOST_NAME: 192.168.1.129 ## 修改:宿主机IP
KAFKA_ADVERTISED_PORT: 9092 ## 修改:宿主机映射port
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.129:9092 ## 修改:宿主机IP
KAFKA_ZOOKEEPER_CONNECT: "192.168.1.181:2181,192.168.1.169:2181,192.168.1.129:2181"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "/database/kafka_log/kafka/kafka3/log:/kafka"
networks:
- zookeeper_kafka

注意

1. docker挂载的目录修改为自己机器创建的目录
2. 查看镜像中zookeeper 的版本
3. 安装时docker指令 进行了rm 或者 down 删除容器 重新启动 要删除日志目录下的meta.properties文件

docker-compose 搭建kafka集群的更多相关文章

  1. 用 Docker 快速搭建 Kafka 集群

    开源Linux 一个执着于技术的公众号 版本 •JDK 14•Zookeeper•Kafka 安装 Zookeeper 和 Kafka Kafka 依赖 Zookeeper,所以我们需要在安装 Kaf ...

  2. Docker实战之Kafka集群

    1. 概述 Apache Kafka 是一个快速.可扩展的.高吞吐.可容错的分布式发布订阅消息系统.其具有高吞吐量.内置分区.支持数据副本和容错的特性,适合在大规模消息处理场景中使用. 笔者之前在物联 ...

  3. 大数据平台搭建-kafka集群的搭建

    本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...

  4. centos7搭建kafka集群-第二篇

    好了,本篇开始部署kafka集群 Zookeeper集群搭建 注:Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群(也可以用kafka自带的ZK,但不推荐) 1.软 ...

  5. Kafka学习之(六)搭建kafka集群

    想要搭建kafka集群,必须具备zookeeper集群,关于zookeeper集群的搭建,在Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建博客有说明.需要具备两台以上装有zook ...

  6. 什么是kafka以及如何搭建kafka集群?

    一.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. Kafka场景比喻 接下来我大概比喻下Kafka的使用场景 消息中间件:生产者和消费者 妈妈:生产 ...

  7. 利用新版本自带的Zookeeper搭建kafka集群

    安装简要说明新版本的kafka自带有zookeeper,其实自带的zookeeper完全够用,本篇文章以记录使用自带zookeeper搭建kafka集群.1.关于kafka下载kafka下载页面:ht ...

  8. docker容器中搭建kafka集群环境

    Kafka集群管理.状态保存是通过zookeeper实现,所以先要搭建zookeeper集群 zookeeper集群搭建 一.软件环境: zookeeper集群需要超过半数的的node存活才能对外服务 ...

  9. docker搭建kafka集群(高级版)

    1. 环境docker, docker-compose 2.zookeeper集群 /data/zookeeper/zoo1/config/zoo.cfg # The number of millis ...

随机推荐

  1. Verilog实例数组

    编写 Verilog 代码多年,至今才无意中发现了一种奇怪的语法,估计见过的这种的写法的人,在 FPGA 开发者中不会超过 20% 吧. 直接来看代码吧.先定义了一个简单的模块,名为 mod. mod ...

  2. Go测试--性能测试分析

    目录 前言 认识数据 benchstat 分析一组样本 分析两组样本 小结 前言 benchmark测试是实际项目中经常使用的性能测试方法,我们可以针对某个函数或者某个功能点增加benchmark测试 ...

  3. HTML5存储 ——Web Storage(localStorage 和 sessionStorage)

    一.localStorage对象临时储存API 方法: 1.localStorage.setItem(key,value)---设置存储内容 2.localStorage.getItem(key)-- ...

  4. JavaSE-Java基础面试题

    重载与重写的区别 重载:本类中,方法名相同,参数列表不同,(参数类型.参数顺序.参数个数),返回值类型可以不同,访问修饰符可不同 重写:子类中,方法名相同,参数不能改,返回值类型一致或其子类,访问权限 ...

  5. 分数化循环小数C++实现

    引言 前一阵做了一个有理数四则混合运算的程序(详见:用C++实现的有理数(分数)四则混合运算计算器),以分数形式呈现运算结果.这次添加以循环小数形式呈现运算结果的功能.例如: Please input ...

  6. 发布 mbtiles 存储的矢量瓦片

    之前我们分享过如何 在本地发布OSM矢量瓦片地图,里面介绍了生成的矢量瓦片会存放在 .mbtiles 文件中,然后用 tileserver-gl 软件发布. mbtiles 是基于sqllite数据库 ...

  7. [编译] 10、kconfig 入门指导教程

    目录 前言 1. 安装 kconfig 2. 克隆一个 demo 3. 运行 kconfig 4. 源码解析 4.1 选择题目设计模板 4.2 填空题目设计模板 4.3 判断题目设计模板 5. 产物解 ...

  8. [考试总结]noip模拟39

    不写那么多没用的了 开题就发现 \(T4\) 原题, \(T1\) 大水题. 然后发现 \(T4\) 忘了.... 不扯了 打地鼠 大水题,我代码都不想放... 算了,还是放一下吧.. #includ ...

  9. Python - 3.8 新特性之仅位置参数 & 仅关键字参数

    前置知识 Python 函数:https://www.cnblogs.com/poloyy/p/15092393.html 什么是仅限位置形参 仅限位置形参是 Python 3.8 才有的新特性 新增 ...

  10. Mybatis源码解析5—— 接口代理

    本篇文章,可乐将为大家介绍通过接口代理的方式去执行SQL操作.话不多说,直接上图: 其实无论哪种方式,我们最终是需要找到对应的 SQL 语句,接口代理的方式就是通过 [包名.方法名] 的方式,去找到 ...