• Kafka 是一个开源的分布式事件流平台,依赖Zookeeper或者KRaft,本文基于Zookeeper。

服务器IP配置

本文使用三个服务器来做集群搭建,IP如下:

nodeName IP
node1 10.10.210.96
node2 10.10.210.97
node3 10.10.210.98

部署zookeeper

  • 工作目录为/home/zookeeper

node1配置

目录结构

- zookeeper
- config
- zoo.cfg
- docker-compose.yml

zoo.cfg

dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
clientPort:2181
server.1=127.0.0.1:2888:3888
server.2=10.10.210.97:2888:3888
server.3=10.10.210.98:2888:3888

docker-compose.yml

version: '3'
services:
zookeeper:
image: zookeeper:3.7.0
restart: always
hostname: zookeeper-node-1
container_name: zookeeper
ports:
- 2181:2181
- 2888:2888
- 3888:3888
- 8080:8080
volumes:
- ./data:/data
- ./datalog:/datalog
- ./config/zoo.cfg:/conf/zoo.cfg
environment:
ZOO_MY_ID: 1

node2配置

目录结构

- zookeeper
- config
- zoo.cfg
- docker-compose.yml

zoo.cfg

dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
clientPort:2181
server.1=10.10.210.96:2888:3888
server.2=127.0.0.1:2888:3888
server.3=10.10.210.98:2888:3888

docker-compose.yml

version: '3'
services:
zookeeper:
image: zookeeper:3.7.0
restart: always
hostname: zookeeper-node-2
container_name: zookeeper
ports:
- 2181:2181
- 2888:2888
- 3888:3888
- 8080:8080
volumes:
- ./data:/data
- ./datalog:/datalog
- ./config/zoo.cfg:/conf/zoo.cfg
environment:
ZOO_MY_ID: 2

node3配置

目录结构

- zookeeper
- config
- zoo.cfg
- docker-compose.yml

zoo.cfg

dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
clientPort:2181
server.1=10.10.210.96:2888:3888
server.2=10.10.210.97:2888:3888
server.3=127.0.0.1:2888:3888

docker-compose.yml

version: '3'
services:
zookeeper:
image: zookeeper:3.7.0
restart: always
hostname: zookeeper-node-3
container_name: zookeeper
ports:
- 2181:2181
- 2888:2888
- 3888:3888
- 8080:8080
volumes:
- ./data:/data
- ./datalog:/datalog
- ./config/zoo.cfg:/conf/zoo.cfg
environment:
ZOO_MY_ID: 3
  • 在对应服务器的/home/zookeeper执行 docker-compose up -d 启动三个Zookeeper服务,通过docker-compose logs -f观察启动日志
  • ZOO_MY_ID 对应zookeeper的id,多台服务器需设置不同,对应zoo.cfg的server.1,其中.1 就是对应的ZOO_MY_ID
  • zoo.cfg配置信息具体可参考 Zookeeper部署和管理指南

部署kafka

  • 工作目录为/home/kafka

node1配置

目录结构

- kafka
- docker-compose.yml
- config/server.properties

docker-compose.yml

version: '3'
services:
kafka:
image: bitnami/kafka:3.0.0
restart: always
hostname: kafka-node-1
container_name: kafka
ports:
- 9092:9092
- 9999:9999
volumes:
- ./logs:/opt/bitnami/kafka/logs
- ./data:/bitnami/kafka/data
- ./config/server.properties:/opt/bitnami/kafka/config/server.properties

server.properties

broker.id=1
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://10.10.210.96:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/bitnami/kafka/data
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=10.10.210.96:2181,10.10.210.97:2181,10.10.210.98:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
auto.create.topics.enable=true
max.partition.fetch.bytes=1048576
max.request.size=1048576
sasl.enabled.mechanisms=PLAIN,SCRAM-SHA-256,SCRAM-SHA-512
sasl.mechanism.inter.broker.protocol=

node2配置

目录结构

- kafka
- docker-compose.yml
- config/server.properties

docker-compose.yml

version: '3'
services:
kafka:
image: bitnami/kafka:3.0.0
restart: always
hostname: kafka-node-2
container_name: kafka
ports:
- 9092:9092
- 9999:9999
volumes:
- ./logs:/opt/bitnami/kafka/logs
- ./data:/bitnami/kafka/data
- ./config/server.properties:/opt/bitnami/kafka/config/server.properties

server.properties

broker.id=2
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://10.10.210.97:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/bitnami/kafka/data
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=10.10.210.96:2181,10.10.210.97:2181,10.10.210.98:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
auto.create.topics.enable=true
max.partition.fetch.bytes=1048576
max.request.size=1048576
sasl.enabled.mechanisms=PLAIN,SCRAM-SHA-256,SCRAM-SHA-512
sasl.mechanism.inter.broker.protocol=

node3配置

目录结构

- kafka
- docker-compose.yml
- config/server.properties

docker-compose.yml

version: '3'
services:
kafka:
image: bitnami/kafka:3.0.0
restart: always
hostname: kafka-node-3
container_name: kafka
ports:
- 9092:9092
- 9999:9999
volumes:
- ./logs:/opt/bitnami/kafka/logs
- ./data:/bitnami/kafka/data
- ./config/server.properties:/opt/bitnami/kafka/config/server.properties

server.properties

broker.id=3
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://10.10.210.98:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/bitnami/kafka/data
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=10.10.210.96:2181,10.10.210.97:2181,10.10.210.98:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=0
auto.create.topics.enable=true
max.partition.fetch.bytes=1048576
max.request.size=1048576
sasl.enabled.mechanisms=PLAIN,SCRAM-SHA-256,SCRAM-SHA-512
sasl.mechanism.inter.broker.protocol=
  • 在对应服务器的/home/kafka执行 docker-compose up -d 启动三个Kafka服务,通过docker-compose logs -f观察启动日志
  • server.properties配置信息具体可参考 Kafka Broker Configs

kafka测试使用

  • 通过offset explorer测试连接kafka是否可用。

后记

  • 如果想要简单配置的情况下,可以通过environment的方式启动kafka,参考如下:

docker-compose.yml

version: '3'
services:
kafka:
image: bitnami/kafka:3.0.0
restart: always
hostname: kafka-node
container_name: kafka
ports:
- 9092:9092
- 9999:9999
environment:
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://10.10.210.96:9092
- KAFKA_ADVERTISED_HOST_NAME=10.10.210.96
- KAFKA_ADVERTISED_PORT=9092
- KAFKA_ZOOKEEPER_CONNECT=10.10.210.96:2181,10.10.210.97:2181,10.10.210.98:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- JMX_PORT=9999
volumes:
- ./logs:/opt/bitnami/kafka/logs
- ./data:/bitnami/kafka/data

docker-compose多服务器部署kafka集群的更多相关文章

  1. Docker swarm结合Openresty部署rabbitmq集群

    Docker swarm结合Openresty部署rabbitmq集群 大家好,年底了,年味儿越来越浓了.2019年的寒冬被定义为未来10年中最好的一年,对于这一说法悲观的人和乐观的人的理解是不一样的 ...

  2. 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建

    准备: 两台配置CentOS 7.3的阿里云ECS服务器: hadoop-2.7.3.tar.gz安装包: jdk-8u77-linux-x64.tar.gz安装包: hostname及IP的配置: ...

  3. 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper)

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...

  4. 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...

  5. 阿里云ECS服务器部署HADOOP集群(六):Flume 安装

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop ...

  6. 阿里云ECS服务器部署HADOOP集群(七):Sqoop 安装

    本篇将在 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper) 阿 ...

  7. 阿里云ECS服务器部署HADOOP集群(五):Pig 安装

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop ...

  8. 阿里云ECS服务器部署HADOOP集群(四):Hive本地模式的安装

    本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 本地模式需要采用MySQL数据库存储数据. 1 环境介绍 一台阿里云ECS服务器:master ...

  9. Docker快速搭建Zookeeper和kafka集群

    使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...

  10. 使用Docker快速搭建Zookeeper和kafka集群

    使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...

随机推荐

  1. Lombok首字母小写,第二个字母大写,jackson反序列化失败

    记一次接口调用字段映射失败问题排查 在写接口的时候遇到一个很神奇的问题,编写一个post接口,在使用包装类接收body的时候发现有个字段映射不上.代码如下 @RestController public ...

  2. 深入理解 python 虚拟机:字节码灵魂——Code obejct

    深入理解 python 虚拟机:字节码灵魂--Code obejct 在本篇文章当中主要给大家深入介绍在 cpython 当中非常重要的一个数据结构 code object! 在上一篇文章 深入理解 ...

  3. 学习httprunner遇到的问题记录

    今天研究httprunner遇到了几个问题 1.问题1: 最新的版本4.3.0已经舍弃了locusts,har2case这两个东西 导致运行的时候,出现har2case不是内部命令 一开始以为是没有配 ...

  4. 高尔顿钉板的统计意义—R实现

    提到高尔顿,人们总是把他和钉板实验联系在一起,偶尔也会有人提及他是达尔文的表弟.实际上,作为维多利亚时代的人类学家.统计学家.心理学家和遗传学家,同时又是热带探险家.地理学家.发明家.气象学家,高尔顿 ...

  5. 如何做到API文档规范化

    定义一个好的 API 文档是优秀研发人员的标准配置,在执行接口测试之前,测试人员一定会先拿到开发给予的接口文档. 测试人员可以根据这个文档编写接口测试用例,优秀的文档可以区分好的用户体验和坏的用户体验 ...

  6. it必给装机小软件附源码

    需要的包 启动之后是这个样子的 远吗如下: #authon fengimport zipfile as zfimport osimport win32apiimport win32conimport ...

  7. [Excel/Word]常用函数与技巧

    1 Excel case1 同时多列筛选 同时筛选多列: 选中首行(属性行)>筛选>(筛选目标的N列) case2 IF/OR/AND/COUNTIF语句 =IF(condition,co ...

  8. python中的类继承

    """ """ class Animal(object): def __init__(self,name,food): self.name ...

  9. 利用Nextcloud搭建私有同步云盘

    1. 简介 Nextcloud是一款开源免费的私有云存储网盘项目,可以让你快速便捷地搭建一套属于自己或团队的云同步网盘,从而实现跨平台跨设备文件同步.共享.版本控制.团队协作等功能.它的客户端覆盖了W ...

  10. Yii2批量插入数据

    方法一 yii2一次插入多行数据  /** * @inheritdoc 批量添加 * @params $add array 添加数据 */ public function add_all($add) ...