docker-compose搭建kafka集群

本文详细介绍了如何使用Docker和docker-compose构建ZooKeeper与Kafka集群,包括集群规划、创建目录、配置文件设置、网络创建、docker-compose.yml文件编写及集群启动过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.集群规划

zk1192.168.88.3:2181
zk2192.168.88.3:2182
zk3192.168.88.3:2183
kafka1192.168.88.3:9092
kafka2192.168.88.3:9093
kafka3192.168.88.3:9094

2.创建目录

mkdir -p /home/wangyan/zookeeper/zk1/conf &&

mkdir -p /home/wangyan/zookeeper/zk1/data &&

mkdir -p /home/wangyan/zookeeper/zk1/log &&

mkdir -p /home/wangyan/zookeeper/zk2/conf &&

mkdir -p /home/wangyan/zookeeper/zk2/data &&

mkdir -p /home/wangyan/zookeeper/zk2/log &&

mkdir -p /home/wangyan/zookeeper/zk3/conf &&

mkdir -p /home/wangyan/zookeeper/zk3/data &&

mkdir -p /home/wangyan/zookeeper/zk3/log &&

mkdir -p /home/wangyan/kafka/kafka1/conf &&

mkdir -p /home/wangyan/kafka/kafka1/log &&

mkdir -p /home/wangyan/kafka/kafka2/conf &&

mkdir -p /home/wangyan/kafka/kafka2/log &&

mkdir -p /home/wangyan/kafka/kafka3/conf &&

mkdir -p /home/wangyan/kafka/kafka3/log;

配置文件:

zk1 zoo.cfg

#心跳时间 单位毫秒
tickTime=2000
#leader和follower初始连接能容忍的最大心跳数
initLimit=10
#leader和follower请求应答能容忍的最大心跳数
syncLimit=5
#zookeeper数据目录
dataDir=/data
#zookeeper日志目录
dataLogDir=/datalog
#客户端连接端口
clientPort=2181
#需要保留的文件个数
autopurge.snapRetainCount=3
#定时清理时间间隔 单位小时 设为0表示不清理
autopure.purgeInterval=1
#zookeeper集群信息 服务器地址:LF通信端口:选举端口
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888

zk2 zoo.cfg

#心跳时间 单位毫秒
tickTime=2000
#leader和follower初始连接能容忍的最大心跳数
initLimit=10
#leader和follower请求应答能容忍的最大心跳数
syncLimit=5
#zookeeper数据目录
dataDir=/data
#zookeeper日志目录
dataLogDir=/datalog
#客户端连接端口
clientPort=2181
#需要保留的文件个数
autopurge.snapRetainCount=3
#定时清理时间间隔 单位小时 设为0表示不清理
autopure.purgeInterval=1
#zookeeper集群信息 服务器地址:LF通信端口:选举端口
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888

zk3 zoo.cfg

#心跳时间 单位毫秒
tickTime=2000
#leader和follower初始连接能容忍的最大心跳数
initLimit=10
#leader和follower请求应答能容忍的最大心跳数
syncLimit=5
#zookeeper数据目录
dataDir=/data
#zookeeper日志目录
dataLogDir=/datalog
#客户端连接端口
clientPort=2181
#需要保留的文件个数
autopurge.snapRetainCount=3
#定时清理时间间隔 单位小时 设为0表示不清理
autopure.purgeInterval=1
#zookeeper集群信息 服务器地址:LF通信端口:选举端口
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888

 

3.创建网络

docker network create --driver bridge --subnet 172.16.0.0/25 --gateway 172.16.0.1 zookeeper_kafka

4.创建docker.compose.yml

version: '3'

services:

  zk1:
    image: wurstmeister/zookeeper
    restart: always
    container_name: zk1
    hostname: zk1
    ports:
    - "2181:2181"
    volumes:
    - /home/wangyan/zookeeper/zk1/conf/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg
    - /home/wangyan/zookeeper/zk1/data:/data
    - /home/wangyan/zookeeper/zk1/log:/datalog
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888
    networks:
      default:
        ipv4_address: 172.16.0.2

  zk2:
    image: wurstmeister/zookeeper
    restart: always
    container_name: zk2
    hostname: zk2
    ports:
    - "2182:2181"
    volumes:
    - /home/wangyan/zookeeper/zk2/conf/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg
    - /home/wangyan/zookeeper/zk2/data:/data
    - /home/wangyan/zookeeper/zk2/log:/datalog
    environment:
      ZOO_MY_ID: 2
      ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888
    networks:
      default:
        ipv4_address: 172.16.0.3

  zk3:
    image: wurstmeister/zookeeper
    restart: always
    container_name: zk3
    hostname: zk3
    ports:
    - "2183:2181"
    volumes:
    - /home/wangyan/zookeeper/zk3/conf/zoo.cfg:/opt/zookeeper-3.4.13/conf/zoo.cfg
    - /home/wangyan/zookeeper/zk3/data:/data
    - /home/wangyan/zookeeper/zk3/log:/datalog
    environment:
      ZOO_MY_ID: 3
      ZOO_SERVERS: server.1=zk1:2888:3888 server.2=zk2:2888:3888 server.3=zk3:2888:3888
    networks:
      default:
        ipv4_address: 172.16.0.4

  kafka1:
    image: wurstmeister/kafka
    restart: always
    container_name: kafka1
    hostname: kafka1
    ports:
    - 9092:9092
    environment:
      KAFKA_HOST_NAME: kafka1
      KAFKA_ADVERTISED_HOST_NAME: kafka1
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.88.5:9092
      KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2181,zk3:2181
      KAFKA_BROKER_ID: 0
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
    volumes:
    - /etc/localtime:/etc/localtime
    - /home/wangyan/kafka/kafka1/log:/kafka
    links:
    - zk1
    - zk2
    - zk3
    networks:
      default:
        ipv4_address: 172.16.0.5

  kafka2:
    image: wurstmeister/kafka
    restart: always
    container_name: kafka2
    hostname: kafka2
    ports:
    - 9093:9092
    environment:
      KAFKA_HOST_NAME: kafka2
      KAFKA_ADVERTISED_HOST_NAME: kafka2
      KAFKA_ADVERTISED_PORT: 9093
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.88.5:9093
      KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2181,zk3:2181
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
    volumes:
    - /etc/localtime:/etc/localtime
    - "/home/wangyan/kafka/kafka2/log:/kafka"
    links:
    - zk1
    - zk2
    - zk3
    networks:
      default:
        ipv4_address: 172.16.0.6

  kafka3:
    image: wurstmeister/kafka
    restart: always
    container_name: kafka3
    hostname: kafka3
    ports:
    - 9094:9092
    environment:
      KAFKA_HOST_NAME: kafka3
      KAFKA_ADVERTISED_HOST_NAME: kafka3
      KAFKA_ADVERTISED_PORT: 9094
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.88.5:9094
      KAFKA_ZOOKEEPER_CONNECT: zk1:2181,zk2:2181,zk3:2181
      KAFKA_BROKER_ID: 2
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
    volumes:
    - /etc/localtime:/etc/localtime
    - "/home/wangyan/kafka/kafka3/log:/kafka"
    links:
    - zk1
    - zk2
    - zk3
    networks:
      default:
        ipv4_address: 172.16.0.7

  kafka-manager:
    image: sheepkiller/kafka-manager
    restart: always
    container_name: kafka-manager
    hostname: kafka-manager
    ports:
    - 9000:9000
    links:
    - kafka1
    - kafka2
    - kafka3
    - zk1
    - zk2
    - zk3
    environment:
      ZK_HOSTS: 192.168.88.5
    networks:
      default:
        ipv4_address: 172.16.0.8

networks:
  default:
    external:
      name: zookeeper_kafka

 

5.使用docker-compose构建镜像启动容器集群

docker-compose -f docker-compose.yml up -d

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值