首页 > 其他分享 >利用docker-compose快速搭建kafka集群

利用docker-compose快速搭建kafka集群

时间:2022-09-07 12:25:24浏览次数:82  
标签:compose zookeeper kafka 2181 docker data

一、安装docker-compose工具

安装docker-compose事先需要安装docker,这里需要自行安装

# 升级 pip
pip3 install --upgrade pip

# 指定 docker-compose 版本安装
pip install docker-compose==1.22

# 验证是否安装成功,有返回值,说明安装成功
docker-compose -v

二、搭建zookeeper集群

1.拉取zookeeper镜像

docker pull zookeeper

这里为了方便使用,把拉下的镜像名称进行修改,修改为zookeeper,如果相同则无需修改

docker tag 拉下来镜像的名称name zookeeper

2.创建相关文件夹

mkdir -p /data/docker-compose/zookeeper
mkdir -p /data/docker-data/zookeeper

3.进入文件夹,并且创建docker-compose.yml

cd /data/docker-compose/zookeeper
vi docker-compose.yml

docker-compose.yml文件内容

version: '3.6'
services:
  zoo1:
    image: zookeeper
    restart: always
    hostname: zoo1
    container_name: zoo1
    ports:
      - 2181:2181
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    volumes:
      - /data/docker-data/zookeeper/zoo1/data:/data
      - /data/docker-data/zookeeper/zoo1/datalog:/datalog

  zoo2:
    image: zookeeper
    restart: always
    hostname: zoo2
    container_name: zoo2
    ports:
      - 2182:2181
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    volumes:
      - /data/docker-data/zookeeper/zoo2/data:/data
      - /data/docker-data/zookeeper/zoo2/datalog:/datalog

  zoo3:
    image: zookeeper
    restart: always
    hostname: zoo3
    container_name: zoo3
    ports:
      - 2183:2181
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
    volumes:
      - /data/docker-data/zookeeper/zoo3/data:/data
      - /data/docker-data/zookeeper/zoo3/datalog:/datalog

4.执行docker-compose.yml

cd /data/docker-compose/zookeeper
docker-compose up -d

5.验证

docker exec -it zoo1 bash
zkServer.sh status

返回如下信息,则证明部署成功

 Mode分follower和leader

三、搭建Kafka集群

1.拉取Kafka镜像

docker pull wurstmeister/kafka
docker tag docker.io/wurstmeister/kafka kafka
docker rmi docker.io/wurstmeister/kafka

2.拉取kafka可视化管理工具镜像

docker pull sheepkiller/kafka-manager
docker tag docker.io/sheepkiller/kafka-manager kafka-manager
docker rmi docker.io/sheepkiller/kafka-manager

2.创建相关文件夹

mkdir -p /data/docker-compose/kafka
mkdir -p /data/docker-data/kafka

2.创建网络,用于kafka和zookeeper共享一个网络段

docker network create --driver bridge zookeeper_kafka_net

3.进入文件夹,并且创建docker-compose.yml

cd /data/docker-compose/kafka
vi docker-compose.yml

4.docker-compose.yml文件内容

version: '3'
 
services:
  kafka1:
    image: kafka
    restart: always
    container_name: kafka1
    hostname: kafka1
    ports:
      - 9091:9092
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ADVERTISED_HOST_NAME: kafka1
      KAFKA_ADVERTISED_PORT: 9091
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT:宿主机IP:9091
      KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
    volumes:
      - /data/docker-data/kafka1/docker.sock:/var/run/docker.sock
      - /data/docker-data/kafka1/data:/kafka
    external_links:
      - zoo1
      - zoo2
      - zoo3
 
  kafka2:
    image: kafka
    restart: always
    container_name: kafka2
    hostname: kafka2
    ports:
      - 9092:9092
    environment:
      KAFKA_BROKER_ID: 2
      KAFKA_ADVERTISED_HOST_NAME: kafka2
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT:宿主机IP:9092
      KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
    volumes:
      - /data/docker-data/kafka2/docker.sock:/var/run/docker.sock
      - /data/docker-data/kafka2/data:/kafka
    external_links:
      - zoo1
      - zoo2
      - zoo3
 
  kafka3:
    image: kafka
    restart: always
    container_name: kafka3
    hostname: kafka3
    ports:
      - 9093:9092
    environment:
      KAFKA_BROKER_ID: 3
      KAFKA_ADVERTISED_HOST_NAME: kafka3
      KAFKA_ADVERTISED_PORT: 9093
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT:宿主机IP:9093
      KAFKA_ZOOKEEPER_CONNECT: zoo1:2181,zoo2:2181,zoo3:2181
    volumes:
      - /data/docker-data/kafka3/docker.sock:/var/run/docker.sock
      - /data/docker-data/kafka3/data:/kafka
    external_links:
      - zoo1
      - zoo2
      - zoo3
 
  kafka-manager:
    image: kafka-manager
    restart: always
    container_name: kafka-manager
    hostname: kafka-manager
    ports:
      - 9010:9000
    links:
      - kafka1
      - kafka2
      - kafka3
    external_links:
      - zoo1
      - zoo2
      - zoo3
    environment:
      ZK_HOSTS: zoo1:2181,zoo2:2181,zoo3:2181

注:links是引入当前docker-compose内部的service,external_links 引入的是当前docker-compose外部的service

5.执行docker-compose.yml

cd /data/docker-compose/kafka
docker-compose up -d

6.将所有kafka和zookeeper加入一个网络

docker network connect zookeeper_kafka_net zoo1
docker network connect zookeeper_kafka_net zoo2
docker network connect zookeeper_kafka_net zoo3
docker network connect zookeeper_kafka_net kafka1
docker network connect zookeeper_kafka_net kafka2
docker network connect zookeeper_kafka_net kafka3
docker network connect zookeeper_kafka_net kafka-manager

7.重启这组服务

docker-compose restart

因为为每台容器都新增了一个网络,如果不重启,容器用的还是之前的网络,就会导致kafka和kafka-manager是ping不通zookeeper的三个容器的

8.验证结果

访问http://宿主机IP:9010/

 

 点击Add Cluster

这里是我已经配置好的集群,新建需要的参数如下,集群名称随便取,hosts是启动脚本里面配置好的,如果采用的是此脚本,那么hosts如下

zoo1:2181,zoo2:2181,zoo3:2181

 

最后点击进入集群如下,则怎么成功

 

标签:compose,zookeeper,kafka,2181,docker,data
From: https://www.cnblogs.com/mihutao/p/16664588.html

相关文章

  • 云图说丨初识分布式消息服务Kafka版
    摘要:分布式消息服务Kafka版是一款基于开源社区版Kafka提供的消息队列服务,向用户提供计算、存储和带宽资源独占式的Kafka实例。本文分享自华为云社区《【云图说】第254期......
  • docker 安装启动jenkins 以及问题剖析
    docker安装启动jenkins以及问题剖析高考时有句“神话”,只要累不死,就往死里干。这句话依然适合现在的工作中的我们。开篇喜欢讲些小语句;  今天docker安装je......
  • docker 启动失败 exec /start.sh: no such file or directory
    docker启动之后报错exec/start.sh:nosuchfileordirectory解决步骤:1、看看start.sh的权限。是否是可执行。2、看看start.sh的字符集......
  • Docker镜像扫描器的实现
    Docker镜像简介这篇文章算抛砖引玉,给大家提供一些简单的思路。首先要做Docker镜像扫描,我们必须要懂Docker镜像是怎么回事。Docker镜像是由文件系统叠加而成。最底层......
  • Docker 入门指南
    Docker入门指南目录基础概念安装教程基本操作常用安装构建操作容器编排壹.基础概念什么是Docker?Docker是基于Go开发的应用容器引擎,属于Linux容器的一种封......
  • docker安装过程报错
    前面四个步骤为:(1)yum-yinstallgcc(安装GNU编译器套件) (2)yum-yinstallgcc-c++(安装GNU编译器套件) (3)yuminstall-yyum-utils(安装工具包) (4)yum-config-manage......
  • 如何优雅的对 Docker 容器进行健康检查
    公众号关注 「奇妙的Linux世界」设为「星标」,每天带你玩转Linux! 自1.12版本之后,Docker引入了原生的健康检查实现。对于容器而言,最简单的健康检查是进程级的健康......
  • 如何用 React 烹饪 ‍ Docker。第 1 部分 - 基本理论和命令。
    怎么做饭‍码头工人与反应。第1部分-基本理论和命令。如果你可以创建一个容器——那就去做吧!Photoby伊恩·泰勒on不飞溅基础码头工人。为了什么?Docker......
  • docker-compose 模板文件
    docker-compose模板文件模板文件是使用Compose的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟dockerrun相关参数的含义都是类似的。默认的......
  • docker常用镜像命令
    由于想把自己写的Python代码和所需的环境放到docker,所以最近又去学了下docker相关知识,这篇先整理一下docker镜像命令1、列出本地镜像dockerimages用法 dockerimages......