docker搭建kafka集群实践
前言
本文主要介绍了如何通过docker搭建一个可以用于生产环境的kafka集群。
kafka集群使用了3个节点,依赖zookeeper进行协调,所以会同时搭建一套3节点的zookeeper集群。
准备工作
本次实践准备了三台CentOS8服务器,ip地址如下:
192.168.1.34
192.168.1.36
192.168.1.73
实践目标
在每台机器上安装一个zookeeper和一个kafka组成整体的集群。
前提条件
三台机器上已经安装了docker和docker-compose。
docker的安装本文不会介绍,docker-compose的安装如下:
curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
说明:不一定非要安装docker-compose,此处安装docker-compose是因为在本文的实践中使用了docker-compose,你完全可以把yml文件翻译成docker run命令,来完成整个集群的搭建工作。
开启防火墙端口
正常使用kafka集群需要开放一些端口,如果你的机器没有开启防火墙,可以忽略。
开启端口命令如下:
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
搭建zookeeper集群
进入三台服务器,创建目录/home/zk,并创建zk.yml文件
mkdir /home/zk
cd /home/zk
touch zk.yml
zk.yml是docker-compose的编排文件,三台服务器的zk.yml文件内容分别如下:
192.168.1.34中的zk.yml
version: '3.1' services:
zk1:
image: 'zookeeper:3.7'
restart: always
hostname: zoo1
container_name: zk1
network_mode: host
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=192.168.1.34:2888:3888;2181 server.2=192.168.1.36:2888:3888;2181 server.3=192.168.1.73:2888:3888;2181
192.168.1.36中的zk.yml
version: '3.1' services:
zk2:
image: 'zookeeper:3.7'
restart: always
hostname: zoo2
container_name: zk2
network_mode: host
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=192.168.1.34:2888:3888;2181 server.2=192.168.1.36:2888:3888;2181 server.3=192.168.1.73:2888:3888;2181
192.168.1.73中的zk.yml
version: '3.1' services:
zk3:
image: 'zookeeper:3.7'
restart: always
hostname: zoo3
container_name: zk3
network_mode: host
ports:
- 2181:2181
- 2888:2888
- 3888:3888
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=192.168.1.34:2888:3888;2181 server.2=192.168.1.36:2888:3888;2181 server.3=192.168.1.73:2888:3888;2181
分别在三台机器的/home/zk目录下执行以下命令,开启zk集群
docker-compose -f zk.yml up -d
进入容器内部查看是否启动成功:
docker exec -it zk1 bash
zkServer.sh status docker exec -it zk2 bash
zkServer.sh status docker exec -it zk3 bash
zkServer.sh status
如果启动成功,可以看到如下内容:
至此,一个部署在三台服务器上的3节点zookeeper集群就搭建成功了。
搭建kafka集群
进入三台服务器,创建目录/home/kafka,并创建zk.yml文件
mkdir /home/kafka
cd /home/kafka
touch kafka.yml
kafka.yml是docker-compose的编排文件,三台服务器的kafka.yml文件内容分别如下:
192.168.1.34中的kafka.yml
version: '2' services:
k1:
image: 'bitnami/kafka:3.2.0'
restart: always
container_name: k1
network_mode: host
ports:
- 9092:9092
environment:
- KAFKA_CFG_ZOOKEEPER_CONNECT=192.168.1.34:2181,192.168.1.36:2181,192.168.1.73:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_BROKER_ID=1
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.34:9092
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
- KAFKA_CFG_NUM_PARTITIONS=3
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
192.168.1.36中的kafka.yml
version: '2' services:
k2:
image: 'bitnami/kafka:3.2.0'
restart: always
container_name: k2
network_mode: host
ports:
- 9092:9092
environment:
- KAFKA_CFG_ZOOKEEPER_CONNECT=192.168.1.34:2181,192.168.1.36:2181,192.168.1.73:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_BROKER_ID=2
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.36:9092
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
- KAFKA_CFG_NUM_PARTITIONS=3
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
192.168.1.73中的kafka.yml
version: '2' services:
k3:
image: 'bitnami/kafka:3.2.0'
restart: always
container_name: k3
network_mode: host
ports:
- 9092:9092
environment:
- KAFKA_CFG_ZOOKEEPER_CONNECT=192.168.1.34:2181,192.168.1.36:2181,192.168.1.73:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_BROKER_ID=3
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.73:9092
- KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092
- KAFKA_CFG_NUM_PARTITIONS=3
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
分别在三台机器的/home/kafka目录下执行以下命令,开启kafka集群
docker-compose -f kafka.yml up -d
创建topic并验证消费者和生产者
进入192.168.1.34的kafka容器内部
docker exec -it k1 bash
cd /opt/bitnami/kafka/bin
./kafka-topics.sh --create --bootstrap-server 192.168.1.34:9092 --replication-factor 1 --partitions 3 --topic chattest
进入其他机器的kafka容器内部,查看是否存在刚创建的topic,如果存在则说明Kafka集群搭建成功。
docker exec -it k2 bash
kafka-topics.sh --list --bootstrap-server 192.168.1.36:9092
docker exec -it k3 bash
kafka-topics.sh --list --bootstrap-server 192.168.1.73:9092
搭建kafka-manager
kafka-manager是一个kafka集群的可视化监控工具,在一台机器上安装即可,我们选择在192.168.1.36这台服务器上安装
进入目录/home/kafka,并创建manager.yml文件
cd /home/kafka
touch manager.yml
manager.yml是docker-compose的编排文件,内容如下:
version: '3.0' services:
kafka-manager:
image: hlebalbau/kafka-manager
restart: always
container_name: kafka-manager
hostname: kafka-manager
network_mode: host
ports:
- 9000:9000
environment:
ZK_HOSTS: 192.168.1.34:2181,192.168.1.36:2181,192.168.1.73:2181
KAFKA_BROKERS: 192.168.1.34:9092,192.168.1.36:9092,192.168.1.73:9092
APPLICATION_SECRET: letmein
KAFKA_MANAGER_AUTH_ENABLED: "true" # 开启验证
KAFKA_MANAGER_USERNAME: "admin" # 用户名
KAFKA_MANAGER_PASSWORD: "admin" # 密码
KM_ARGS: -Djava.net.preferIPv4Stack=true
在/home/kafka目录下执行以下命令,开启监控工具
docker-compose -f manager.yml up -d
浏览器访问192.168.1.36:9000,输入用户名密码即可进入监控页面。
按照下图操作增加对kafka集群的监控。
大功告成了!
docker搭建kafka集群实践的更多相关文章
- docker搭建kafka集群(高级版)
1. 环境docker, docker-compose 2.zookeeper集群 /data/zookeeper/zoo1/config/zoo.cfg # The number of millis ...
- docker 搭建kafka集群(入门版)
1.环境 docker, docker-compose 2.zk-kafka.yml version: '3' services: zoo1: image: zookeeper:3.4.14 rest ...
- docker 搭建zookeeper集群和kafka集群
docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之 ...
- 使用Docker搭建Spark集群(用于实现网站流量实时分析模块)
上一篇使用Docker搭建了Hadoop的完全分布式:使用Docker搭建Hadoop集群(伪分布式与完全分布式),本次记录搭建spark集群,使用两者同时来实现之前一直未完成的项目:网站日志流量分析 ...
- docker部署kafka集群
利用docker可以很方便的在一台机子上搭建kafka集群并进行测试.为了简化配置流程,采用docker-compose进行进行搭建. kafka搭建过程如下: 编写docker-compose.ym ...
- docker-compose 搭建kafka集群
docker-compose搭建kafka集群 下载镜像 1.wurstmeister/zookeeper 2.wurstmeister/kafka 3.sheepkiller/kafka-manag ...
- 大数据平台搭建-kafka集群的搭建
本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...
- Docker 搭建 etcd 集群
阅读目录: 主机安装 集群搭建 API 操作 API 说明和 etcdctl 命令说明 etcd 是 CoreOS 团队发起的一个开源项目(Go 语言,其实很多这类项目都是 Go 语言实现的,只能说很 ...
- Docker搭建PXC集群
如何创建MySQL的PXC集群 下载PXC集群镜像文件 下载 docker pull percona/percona-xtradb-cluster 重命名 [root@hongshaorou ~]# ...
- centos7搭建kafka集群-第二篇
好了,本篇开始部署kafka集群 Zookeeper集群搭建 注:Kafka集群是把状态保存在Zookeeper中的,首先要搭建Zookeeper集群(也可以用kafka自带的ZK,但不推荐) 1.软 ...
随机推荐
- stm32 文件系统数据读写源码解析
一 概念 fatfs文件系统在文件读写中不可或却.熟悉和深入理解是一个不可或缺的前提. 这里面需要先明确几个概念:文件open的属性,这个非常重要.可以并列使用. 二 源码解析 A 写入数据: i ...
- FFmpeg命令行之ffmpeg
一.简述 ffmpeg是一个非常强大的工具,它可以转换任何格式的媒体文件,并且还可以用自己的AudioFilter以及VideoFilter进行处理和编辑.有了它,我们就可以对媒体文件做很多我们想做的 ...
- Ubuntu 的源相关介绍(最近在配gstreamer的时候,紧急补充的知识)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 【专访蓝景科技】5G+实时云渲染赋能数字孪生,共建元宇宙
2021年伊始,元宇宙 概念不断扩展探讨与深入,国内外科技巨头扎堆布局元宇宙. 元宇宙第一股------ROBLOX 上市.字节跳动 90亿收购国内TOP1VR厂商PICO.FACEBOOK改名为 ...
- 使用现代身份验证(OAuth)来连接POP、IMAP或SMTP
我的博客园:https://www.cnblogs.com/CQman/ 转载: https://mp.weixin.qq.com/s?__biz=MzU0MzUxMzU2NA==&mid=2 ...
- JS数据扁平化
最近找到了一些数据扁平化的精品文章,这里分享给大家,希望对大家有所帮助 什么是扁平化 数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组. 举个例子,假设有 ...
- WinAppSDK / WinUI3 项目无法使用 SystemEvents 的问题
SystemEvents 是一个开发 win32 窗口项目很常用的类,其中封装了一些常用的系统广播消息.在 WinUI3 项目中,SystemEvents 事件经常无法触发,简单排查了一下原因. Sy ...
- drools执行String规则或执行某个规则文件
1.背景 此处主要记录一下2个小的知识点,防止以后忘记. 1.如何在drools中执行某个drl文件. 2.如果我们的规则是一个String类型的字符串,那么该如何执行. 2.实现 2.1 执行指定的 ...
- Java12版本特性【一文了解】
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- Kingbase ES 自定义聚合函数浅析
文章概要: 基于前面的博文<Kingbase ES 自定义聚合函数和一次改写案例>这篇文章,我们只考虑了自定义聚合函数非并行的情况, 因此,本篇文章将着重解析一下使用PLPGSQL编写并行 ...