docker-compose多服务器部署kafka集群
- 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集群的更多相关文章
- Docker swarm结合Openresty部署rabbitmq集群
Docker swarm结合Openresty部署rabbitmq集群 大家好,年底了,年味儿越来越浓了.2019年的寒冬被定义为未来10年中最好的一年,对于这一说法悲观的人和乐观的人的理解是不一样的 ...
- 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建
准备: 两台配置CentOS 7.3的阿里云ECS服务器: hadoop-2.7.3.tar.gz安装包: jdk-8u77-linux-x64.tar.gz安装包: hostname及IP的配置: ...
- 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper)
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...
- 阿里云ECS服务器部署HADOOP集群(三):ZooKeeper 完全分布式集群搭建
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建,多添加了一个 datanode 节点 . 1 节点环境介绍: 1.1 环境介绍: 服务器:三台阿里 ...
- 阿里云ECS服务器部署HADOOP集群(六):Flume 安装
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop ...
- 阿里云ECS服务器部署HADOOP集群(七):Sqoop 安装
本篇将在 阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建 阿里云ECS服务器部署HADOOP集群(二):HBase完全分布式集群搭建(使用外置ZooKeeper) 阿 ...
- 阿里云ECS服务器部署HADOOP集群(五):Pig 安装
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 1 环境介绍 一台阿里云ECS服务器:master 操作系统:CentOS 7.3 Hadoop ...
- 阿里云ECS服务器部署HADOOP集群(四):Hive本地模式的安装
本篇将在阿里云ECS服务器部署HADOOP集群(一):Hadoop完全分布式集群环境搭建的基础上搭建. 本地模式需要采用MySQL数据库存储数据. 1 环境介绍 一台阿里云ECS服务器:master ...
- Docker快速搭建Zookeeper和kafka集群
使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...
- 使用Docker快速搭建Zookeeper和kafka集群
使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...
随机推荐
- docker方式实现postgres数据持久化离线安装
保存镜像 root@hello:~# docker pull postgres Using default tag: latest latest: Pulling from library/postg ...
- abc285G
ABC 285 G - Tatami Solution 网络流 网格图是一个天然二分图, 可以按 横纵坐标之和 的奇偶性将相邻两格分属于左部和右部. 记'?' 或 '2' 的格子为待匹配点, 记横纵坐 ...
- postgresSQL Extended Query执行过程和sharding-proxy的处理
pg Extended Query PostgreSQL: Documentation: 15: 55.2. Message Flow 多个阶段,可复用 Parse → DESCRIBE statem ...
- day18:json模块&time模块&zipfile模块
json模块 1.关于json的定义 所有的编程语言都能够识别的数据格式叫做json,是字符串能够通过json序列化成字符串与如下类型: (int float bool str list tuple ...
- Indent----- IndentationError: unexpected indent
Unexpected indent 错误 注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现.但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个 ...
- rails的接口查询详解
Retrieving Objects from the Database find "find"是一种常用的数据库查询方法,在Rails中被用于从数据库中查找单个记录.它可以接收一 ...
- RocketMQ的简单使用
大家好,我是Leo!今天来和大家分享RocketMQ的一些用法. 领域模型介绍 Producer: 用于生产消息的运行实体. Topic: 主题,用于消息传输和存储的分组容器. MessageQueu ...
- Swagger之学习使用
前言 这个是为了介绍一下Swagger的使用,最近也在使用Swagger,就在下面这篇文章介绍下,我特地改了上次分享的外卖项目,添加了Swagger注解- 添加依赖 Maven项目添加依赖 <d ...
- C++ Primer 5th 阅读笔记:入门指南
学习方法 The way to learn a new programming language is to write programs. 学习一门新编程语言的方式是编写程序. 函数(Functio ...
- 终端命令行前出现(base)
原因 (base) 的出现是因为电脑安装了conda后,每次打开终端都会自动启动conda的base环境 解决 取消自动启动base环境:conda config --set auto_activat ...