docker-compose安装kafka集群

Docker-compose Kafka Cluster

Zookeeper容器的虚拟化集群,使用Docker-compose构建,通过主机网络进行沟通

目录结构

├── docker-kafka-cluster-down.sh
├── docker-kafka-cluster-up.sh
├── kafka-01
│   ├── docker-compose.yml
│   └── .env
├── kafka-02
│   ├── docker-compose.yml
│   └── .env
├── kafka-03
│   ├── docker-compose.yml
│   └── .env
└── kafka-manager
    ├── docker-compose.yml
    └── .env

各节点说明

节点目录名 容器名 占用端口
kafka-01 kafka-1 9092
kafka-02 kafka-2 9093
kafka-03 kafka-3 9094
kafka-manager kafka-manager 19000

文件说明

kafka-01目录举例

其下的.env只需要填写ZOO_SERVERS,即zookeeper单体/集群的ip:端口,以,分隔

# default env for kafka docker-compose.yml
# set zookeeper cluster, pattern is "zk1-host:port,zk2-host:port,zk3-host:port", use a comma as multiple servers separator.
ZOO_SERVERS=10.2.114.110:2181,10.2.114.111:2182,10.2.114.112:2183

其下的docker-compose.yml,为docker-compse的配置文件

version: "3"
services:
    kafka-1:
        image: wurstmeister/kafka:2.12-2.1.1
        restart: always
        container_name: kafka-1
        environment:
            - KAFKA_BROKER_ID=1 #kafka的broker.id,区分不同broker
            - KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 #绑定监听9092端口
            - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka1:9092 #绑定发布订阅的端口
            - KAFKA_ZOOKEEPER_CONNECT=${ZOO_SERVERS} #连接zookeeper的服务地址
            - KAFKA_MESSAGE_MAX_BYTES=2000000 #单条消息最大字节数
            #- KAFKA_CREATE_TOPICS=Topic1:1:3,Topic2:1:1:compact #创建broker时创建的topic:partition-num:replica-num[:clean.policy]
        network_mode: "host"

KAFKA_CREATE_TOPICS使用官方说明:Topic 1 will have 1 partition and 3 replicas, Topic 2 will have 1 partition, 1 replica and a cleanup.policy set to compact. 文档地址:https://hub.docker.com/r/wurstmeister/kafka

使用说明

  1. 使用前确保各主机可以互相ping通

  2. 确保zookeeper的服务列表与各对应的zookeeper的ip与客户端口相同,如不同注意修改.env,集群中.env文件相同,可scp复制

  3. 确保zookeeper集群启动

  4. 复制kafka-01到第一台主机、复制kafka-02到第二台主机、复制kafka-03到第三台主机

    1. 确保这几台主机对应的占用端口号不被占用 kafka-01对应9092kafka-02对应9093kafka-03对应9094kafka-manager对应19000
  5. 分别对每一台kafka-0x所在的主机修改/etc/hosts,例

    10.2.114.110    kafka1
    10.2.114.111    kafka2
    10.2.114.112    kafka3

    其中每个主机只需要设置自己的主机上的host,比如我复制了kafka-01我就写本机ip kafka1 ,依次类推.

  6. 单台主机部署kafka集群请为docker-kafka-cluster-up.shdocker-kafka-cluster-down.sh授执行权,不要移动目录,通过这两个shell脚本来启动项目;多台主机请手动进入kafka-0x目录下,执行docker-compose up -d以后台启动,执行docker-compose down以移除容器

  7. 启动脚本中没有启动kafka-manager,有需要请自行启动。


文章作者: Ciwei
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Ciwei !
 上一篇
redisson分布式锁 redisson分布式锁
快速入门介绍 lock-spring-boot-starter是一个基于Spring Boot的starter机制编写的分布式锁工具。 与其他分布式锁不同的是,使用起来更方便快捷,只需要通过注解@Lock的方式即可实现对方法进行加锁。
2019-07-18
下一篇 
docker-compose安装zookeeper集群 docker-compose安装zookeeper集群
Docker-compose Zookeeper ClusterZookeeper容器的虚拟化集群,使用Docker-compose构建,通过主机网络进行沟通 目录结构├── docker-zk-cluster-down.sh ├──
2019-07-17
  目录