docker-compose 搭建kafka集群
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集群的更多相关文章
- 用 Docker 快速搭建 Kafka 集群
		开源Linux 一个执着于技术的公众号 版本 •JDK 14•Zookeeper•Kafka 安装 Zookeeper 和 Kafka Kafka 依赖 Zookeeper,所以我们需要在安装 Kaf ... 
- Docker实战之Kafka集群
		1. 概述 Apache Kafka 是一个快速.可扩展的.高吞吐.可容错的分布式发布订阅消息系统.其具有高吞吐量.内置分区.支持数据副本和容错的特性,适合在大规模消息处理场景中使用. 笔者之前在物联 ... 
- 大数据平台搭建-kafka集群的搭建
		本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ... 
- centos7搭建kafka集群-第二篇
		好了,本篇开始部署kafka集群 Zookeeper集群搭建 注:Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群(也可以用kafka自带的ZK,但不推荐) 1.软 ... 
- Kafka学习之(六)搭建kafka集群
		想要搭建kafka集群,必须具备zookeeper集群,关于zookeeper集群的搭建,在Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建博客有说明.需要具备两台以上装有zook ... 
- 什么是kafka以及如何搭建kafka集群?
		一.Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据. Kafka场景比喻 接下来我大概比喻下Kafka的使用场景 消息中间件:生产者和消费者 妈妈:生产 ... 
- 利用新版本自带的Zookeeper搭建kafka集群
		安装简要说明新版本的kafka自带有zookeeper,其实自带的zookeeper完全够用,本篇文章以记录使用自带zookeeper搭建kafka集群.1.关于kafka下载kafka下载页面:ht ... 
- docker容器中搭建kafka集群环境
		Kafka集群管理.状态保存是通过zookeeper实现,所以先要搭建zookeeper集群 zookeeper集群搭建 一.软件环境: zookeeper集群需要超过半数的的node存活才能对外服务 ... 
- docker搭建kafka集群(高级版)
		1. 环境docker, docker-compose 2.zookeeper集群 /data/zookeeper/zoo1/config/zoo.cfg # The number of millis ... 
随机推荐
- Mac Ideal 常用快捷键
			智能提示 ⌘ -> command ⇧ -> shift ⌥ -> option -> 上箭头 -> 下箭头 ⌃ -> Control mac的option键 = ... 
- 使用dom4j工具:读取xml(一)
			package dom4j_read; import java.io.File; import org.dom4j.Document; import org.dom4j.io.SAXReader; / ... 
- VS code快速创建vue模板
			忘记了.vue文件的格式或者不想手动敲那段模板代码怎么办?VS code快速创建vue模板帮你偷个小懒 第一步:新建模板并保存 打开 VS code,依次点击 file > Preference ... 
- MongoDB - 文档之间的关系 +  _sort和投影
			1. 文档对象之间的关系 一对一 (one TO one) - 例如: 夫妻 (一个丈夫 对应 一个妻子) - 在MongoDB中, 可以通过内嵌文档的形式来体现出一对一的关系 演示: 首先在 my_ ... 
- 源码解析.Net中DependencyInjection的实现
			前言 笔者的这篇文章和上篇文章思路一样,不注重依赖注入的使用方法,更加注重源码的实现,我尽量的表达清楚内容,让读者能够真正的学到东西.如果有不太清楚依赖注入是什么或怎么在.Net项目中使用的话,请点击 ... 
- 2020最精细的Java学习路线图
			在吾爱破解发布的Java学习路线图自我感觉良好,之后看到动力节点Java学院的这份学习路线图感觉专业的东西还得专业的人来做,这份专业的学路线图把我上次的Java学习路线图秒成渣,虽然内容差不多,上份是 ... 
- linux上安装Docker (非常简单的安装方法) 2019
			Docker的三大核心概念:镜像.容器.仓库 镜像:类似虚拟机的镜像.用俗话说就是安装文件. 容器:类似一个轻量级的沙箱,容器是从镜像创建应用运行实例, 可以将其启动.开始.停止.删除.而这些容器都是 ... 
- php常用的函数
			addslashes: 字符串加入斜线.bin2hex: 二进位转成十六进位.chop: 去除连续空白.chr: 返回序数值的字符.chunk_split: 将字符串分成小段.convert_cyr_ ... 
- 快速使用 Docker 上手 Sentry-CLI - 玩转 Source Maps 使用 (create-react-app)
			系列 快速使用 Docker 上手 Sentry-CLI - 创建版本 入门 使用 sentry-cli 上传 source maps 时,您需要设置构建系统以创建版本(release)并上传与该版本 ... 
- JDK1.8源码阅读笔记(2) AtomicInteger  AtomicLong    AtomicBoolean原子类
			JDK1.8源码阅读笔记(2) AtomicInteger AtomicLong AtomicBoolean原子类 Unsafe Java中无法直接操作一块内存区域,不能像C++中那样可以自己申请内存 ... 
