[转帖]无需 zookeeper 安装 kafka 集群 (kakfa3.0 版本)
https://xie.infoq.cn/article/7769ef4576a165f7bdf142aa3

一、kafka 集群实例角色规划
在 kafka3.0 中已经可以将 zookeeper 去掉,使用 kraft 机制实现 controller 主控制器的选举。所以我们先简单了解下 kafka2.0 和 3.0 在这方面的区别。

上图中黑色代表 Broker(消息代理服务),褐色/蓝色代表 Controller(集群控制器)
左图(kafka2.0):一个集群所有节点都是 Broker 角色,利用 zookeeper 的选举能力从三个 Broker 中选举出来一个 Controller 控制器,同时控制器将集群元数据信息(比如主题分类、消费进度等)保存到 zookeeper,用于集群各节点之间分布式交互。
右图(kafka3.0):假设一个集群有四个 Broker,配置指定其中三个作为 Conreoller 角色(蓝色)。使用 kraft 机制实现 controller 主控制器的选举,从三个 Controller 中选举出来一个 Controller 作为主控制器(褐色),其他的 2 个备用。zookeeper 不再被需要。相关的集群元数据信息以 kafka 日志的形式存在(即:以消息队列消息的形式存在)。
理解了上面的右图,我们就不难理解在搭建 kafka3.0 集群之前,我们需要先做好 kafka 实例角色规划。(四个 Broker,需要通过主动配置指定三个作为 Controller,Controller 需要奇数个,这一点和 zk 是一样的)

二、准备工作
在 kafka 用户(新建的 kafka 用户,不要使用 root 用户)下新建一个目录作为 kafka3 安装目录,并使用 wget 下载一个 3.10 版本的安装包。
$mkdir kafka3-setup;$ cd kafka3-setup/;$ wget https://dlcdn.apache.org/kafka/3.1.0/kafka_2.13-3.1.0.tgz
kafka3.0 不再支持 JDK8,建议安装 JDK11 或 JDK17,事先安装好。
新建 1 个目录用于保存 kafka3 的持久化日志数据,比如:
mkdir -p /home/kafka/data/kafka3;,并保证安装 kafka 的用户具有该目录的读写权限。(这里需要使用 root 用户)所有安装 kafka3 服务器实例防火墙开放 9092、9093 端口,使用该端口作为 controller 之间的通信端口。该端口的作用与 zk 的 2181 端口类似。
下载完成安装包之后,解压到
/home/kafka目录下。也可以修改-C参数自定义解压路径,如果自定义路径,注意路径下的新建的 kafka 用户的操作权限。
tar -xzvf ./kafka_2.13-3.1.0.tgz -C /home/kafka
三、修改 Kraft 协议配置文件
在 kafka3.0 版本中,使用 Kraft 协议代替 zookeeper 进行集群的 Controller 选举,所以要针对它进行配置,配置文件在 kraft 目录下,这与 kafka2.0 版本依赖 zookeeper 安装方式的配置文件是不同的。
vim /home/kafka/kafka_2.13-3.1.0/config/kraft/server.properties
具体的配置参数如下:
node.id=1process.roles=broker,controllerlisteners=PLAINTEXT://zimug1:9092,CONTROLLER://zimug1:9093advertised.listeners = PLAINTEXT://:9092controller.quorum.voters=1@zimug1:9093,2@zimug2:9093,3@zimug3:9093log.dirs=/home/kafka/data/kafka3
node.id:这将作为集群中的节点 ID,唯一标识,按照我们事先规划好的(上文),在不同的服务器上这个值不同。其实就是 kafka2.0 中的broker.id,只是在 3.0 版本中 kafka 实例不再只担任 broker 角色,也有可能是 controller 角色,所以改名叫做 node 节点。process.roles:一个节点可以充当 broker 或 controller 或两者兼而有之。按照我们事先规划好的(上文),在不同的服务器上这个值不同。多个角色用逗号分开。listeners:broker 将使用 9092 端口,而 kraft controller 控制器将使用 9093 端口。
advertised.listeners:这里指定 kafka 通过代理暴漏的地址,如果都是局域网使用,就配置PLAINTEXT://:9092即可。controller.quorum.voters:这个配置用于指定 controller 主控选举的投票节点,所有process.roles包含 controller 角色的规划节点都要参与,即:zimug1、zimug2、zimug3。其配置格式为:node.id1@host1:9093,node.id2@host2:9093log.dirs:kafka 将存储数据的日志目录,在准备工作中创建好的目录。
所有 kafka 节点都要按照上文中的节点规划进行配置,完成config/kraft/server.properties配置文件的修改。
三、格式化存储目录
生成一个唯一的集群 ID(在一台 kafka 服务器上执行一次即可),这一个步骤是在安装 kafka2.0 版本的时候不存在的。
$ /home/kafka/kafka_2.13-3.1.0/bin/kafka-storage.sh random-uuidSzIhECn-QbCLzIuNxk1A2A
使用生成的集群 ID+配置文件格式化存储目录log.dirs,所以这一步确认配置及路径确实存在,并且 kafka 用户有访问权限(检查准备工作是否做对)。每一台主机服务器都要执行这个命令
/home/kafka/kafka_2.13-3.1.0/bin/kafka-storage.sh format \-t SzIhECn-QbCLzIuNxk1A2A \-c /home/kafka/kafka_2.13-3.1.0/config/kraft/server.properties
格式化操作完成之后,你会发现在我们定义的log.dirs目录下多出一个 meta.properties 文件。meta.properties 文件中存储了当前的 kafka 节点的 id(node.id),当前节点属于哪个集群(cluster.id)
$ cat /home/kafka/data/kafka3/meta.properties##Tue Apr 12 07:39:07 CST 2022node.id=1version=1cluster.id=SzIhECn-QbCLzIuNxk1A2A
四、 启动集群,完成基础测试
zimug1 zimug2 zimug3是三台应用服务器的主机名称(参考上文中的角色规划),在 linux 的`/etc/hosts`主机名与 ip 进行关系映射。将下面的命令集合保存为一个 shell 脚本,并赋予执行权限。执行该脚本即可启动 kafka 集群所有的节点,使用该脚本前提是:你已经实现了集群各节点之间的 ssh 免密登录。
#!/bin/bashkafkaServers='zimug1 zimug2 zimug3'#启动所有的kafkafor kafka in $kafkaServersdossh -T $kafka <<EOFnohup /home/kafka/kafka_2.13-3.1.0/bin/kafka-server-start.sh /home/kafka/kafka_2.13-3.1.0/config/kraft/server.properties 1>/dev/null 2>&1 &EOFecho 从节点 $kafka 启动kafka3.0...[ done ]sleep 5done
如果你的安装路径和我不一样,这里/home/kafka/kafka_2.13-3.1.0需要修改一下。
五、一键停止集群脚本
一键停止 kafka 集群各节点的脚本,与启动脚本的使用方式及原理是一样的。使用该脚本前提是:你已经实现了集群各节点之间的 ssh 免密登录。
#!/bin/bashkafkaServers='zimug1 zimug2 zimug3'#停止所有的kafkafor kafka in $kafkaServersdossh -T $kafka <<EOFcd /home/kafka/kafka_2.13-3.1.0bin/kafka-server-stop.shEOFecho 从节点 $kafka 停止kafka...[ done ]sleep 5done
版权声明: 本文为 InfoQ 作者【字母哥哥】的原创文章。
原文链接:【https://xie.infoq.cn/article/7769ef4576a165f7bdf142aa3】。未经作者许可,禁止转载。
[转帖]无需 zookeeper 安装 kafka 集群 (kakfa3.0 版本)的更多相关文章
- 安装Zookeeper和Kafka集群
安装Zookeeper和Kafka集群 本文介绍如何安装Zookeeper和Kafka集群.为了方便,介绍的是在一台服务器上的安装,实际应该安装在多台服务器上,但步骤是一样的. 安装Zookeeper ...
- Zookeeper、Kafka集群与Filebeat+Kafka+ELK架构
Zookeeper.Kafka集群与Filebeat+Kafka+ELK架构 目录 Zookeeper.Kafka集群与Filebeat+Kafka+ELK架构 一.Zookeeper 1. Zook ...
- 搭建zookeeper和Kafka集群
搭建zookeeper和Kafka集群: 本实验拥有3个节点,均为CentOS 7系统,分别对应IP为10.211.55.11.10.211.55.13.10.211.55.14,且均有相同用户名 ( ...
- zookeeper及kafka集群搭建
zookeeper及kafka集群搭建 1.有关zookeeper的介绍可参考:http://www.cnblogs.com/wuxl360/p/5817471.html 2.zookeeper安装 ...
- 利用新版本自带的Zookeeper搭建kafka集群
安装简要说明新版本的kafka自带有zookeeper,其实自带的zookeeper完全够用,本篇文章以记录使用自带zookeeper搭建kafka集群.1.关于kafka下载kafka下载页面:ht ...
- Centos7.5安装kafka集群
Tags: kafka Centos7.5安装kafka集群 Centos7.5安装kafka集群 主机环境 软件环境 主机规划 主机安装前准备 安装jdk1.8 安装zookeeper 安装kafk ...
- Docker快速搭建Zookeeper和kafka集群
使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...
- 使用Docker快速搭建Zookeeper和kafka集群
使用Docker快速搭建Zookeeper和kafka集群 镜像选择 Zookeeper和Kafka集群分别运行在不同的容器中zookeeper官方镜像,版本3.4kafka采用wurstmeiste ...
- zookeeper 安装及集群
一.zookeeper介绍 zookeeper是一个中间件,为分布式系统提供协调服务,可以为大数据服务,也可以为java服务. 分布式系统,很多计算机组成一个整体,作为一个整体一致对外并处理同一请求, ...
- zookeeper和Kafka集群安装配置
3个虚拟机,首先关闭防火墙,在进行下面操作 一.java环境 yum list java* yum -y install java-1.8.0-openjdk* 查看Java版本 Java -vers ...
随机推荐
- 如何实现gif格式图片倒放效果?
不知道大家看电影的时候有没有发现出现过这样的一个神奇场景: 一个子弹竟然从远处飞回到手枪中,整个场景呈现一种时空倒流的感觉? 正文 先来几个有趣的倒放动图娱乐一下~ 猫:我谢谢你们全家 萌娃快乐针 尊 ...
- 一文为你详解Unique SQL原理和应用
摘要:以一定的算法结合解析树中的各结点,计算出来一个整数值,用来唯一标识这一类SQL,这个整数值被称为Unique SQL ID,Unique SQL ID相同的SQL语句属于同一个"Uni ...
- 遥居前列!华为云GaussDB再获行业权威验证
摘要:北京国家金融科技认证中心正式公布了2022年通过"分布式数据库金融标准验证"的数据库产品名单.华为云GaussDB金融级分布式数据库以突出的技术优势通过验证,跃然榜上,且测试 ...
- DTSE Tech Talk | 云原生架构下的数字身份治理实践
摘要:由华为技术大咖VS派拉软件CTO为大家详解云原生架构下的身份管理平台,构建云安全数字身份入口. 本文分享自华为云社区<DTSE Tech Talk | 第4期:云原生架构下的数字身份治理实 ...
- 一文带你 GNN 从入门到起飞,做一个饭盆最稳 GNN 饭人!
摘要:本文介绍了图神经网络在学界和业界的发展情况,并给出了图神经网络的基本概念与表示形式,总结了图神经网络的变体,最后介绍了华为云图神经网络框架. 本文分享自华为云社区<干饭人,干饭魂,搞懂图神 ...
- 云图说:云数据库 RDS for MySQL一键开通读写分离,轻松应对业务高峰期
摘要:华为云数据库 RDS for MySQL提供一键开通读写分离功能,只需要一个连接地址,让您在业务高峰期不再迷茫,不再慌乱,so easy 的应对业务. 本文分享自华为云社区<云图说 | 第 ...
- Taro架构构析(2):Taro 设计思想及架构
从之前微信公众号的开发经验来说,以及腾讯开放平台的接入 等经验来看,一直对腾讯的开放文档 有心理阴影. 微信小程序从文件组织上看,一个小程序页面或组件,需要同时包含 4 个文件:脚本逻辑.样式.模板以 ...
- Gzip之后继者Brotli浅析之CDN厂商的智能压缩,服务器Brotli设置
"智能压缩"按照又拍云的说法是,同时支持 Gzip 和 Brotli 压缩算法.根据用于浏览器开启自动选择不同压缩方式. Gzip 压缩算法 Gzip 基于 DEFLATE 算法, ...
- 【教程】app备案流程简单三部曲即可完成
[教程]app备案流程简单三部曲即可完成 APP备案流程包括以下步骤: 1. 开发者实名认证:在提交备案申请之前,开发者需要通过移动应用开发平台进行实名认证.这个步骤需要提供身份证号码.姓名.联系 ...
- 智能学习灯赛道竞争日趋激烈 火山引擎 VeDI 用数据技术助力打造新优势
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 智能学习灯的赛道正变得越来越拥挤. 2021 年 3 月 2 日,腾讯教育联合暗物智能科技联合发布"AILA 智 ...