04、Kafka集群安装

1、准备工作

首先准备一台虚拟机,centos7系统,先在一台上配置安装后,最后克隆成多台机器。

1.1 安装JDK

(1)下载JDK,上传到 /root/software 路径

下载地址:https://www.oracle.com/cn/java/technologies/downloads/

(2)解压

tar -zxvf jdk-8u411-linux-x64.tar.gz -C /usr/local/

(3)配置环境变量

编辑配置文件:

vim /etc/profile

在文本末尾添加:

export JAVA_HOME=/usr/local/jdk1.8.0_411
export PATH=$PATH:$JAVA_HOME/bin

保存并退出,输入下面命令使配置生效:

source /etc/profile

查看是否生效:

echo $JAVA_HOME

结果为我们配置的路径即可。

1.2 zookeeper 下载安装

(1)下载 zookeeper,上传到 /root/software 路径

下载地址:https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz

(2)解压

tar -zxvf apache-zookeeper-3.8.4-bin.tar.gz -C /usr/local/

(3)编辑配置文件

进入配置文件路径

/usr/local/apache-zookeeper-3.8.4-bin/conf

修改配置文件名称zoo_sample.cfg 为 zoo.cfg。

mv zoo_sample.cfg zoo.cfg

修改zookeeper数据路径:

dataDir=/usr/local/apache-zookeeper-3.8.4-bin

添加配置:

dataDir=/usr/local/apache-zookeeper-3.8.4-bin/data
dataLogDir=/usr/local/apache-zookeeper-3.8.4-bin/logsserver.1=192.168.135.132:2888:3888
server.2=192.168.135.133:2888:3888
server.3=192.168.135.134:2888:3888

image-20240508133244372

dataDir:服务器存储快照文件目录。
dataLogDir:服务器存日志文件目录。
server.A=B:C:D
含义:
A:节点在集群中的唯一ID,需要与dataDir/myid文件中的内容保持一致,取值范围为1~255。
B:节点的服务器IP地址。
C:集群中Follower节点与Leader 节点之间通信的端口。
D:当集群中的Follower节点宕机或出现故障时,集群进行重新选举Leader时所使用的端口。

(4)在 /usr/local/apache-zookeeper-3.8.4-bin/data 新建一个myid文件,内容是1,表示服务器ID。

echo 1 >/usr/local/apache-zookeeper-3.8.4-bin/data/myid

(5)修改环境变量

vim /etc/profile

添加ZOOKEEPER_HOME,并将其添加到PATH的后面。

export ZOOKEEPER_HOME=/usr/local/apache-zookeeper-3.8.4-binexport PATH=$PATH:$JAVA_HOME/bin:$KAFKA_HOME/bin:$ZOOKEEPER_HOME/bin

1.3 Kafka 下载安装

(1)下载 Kafka,上传到 /root/software 路径

下载地址:https://mirrors.aliyun.com/apache/kafka/3.7.0/kafka_2.12-3.7.0.tgz

(2)解压

tar -zxvf kafka_2.12-3.7.0.tgz -C /usr/local/

(3)配置环境变量

编辑配置文件:

vim /etc/profile

在文本末尾添加:在PATH的后面添加$KAFKA_HOME/bin

export KAFKA_HOME=/usr/local/kafka_2.12-3.7.0export PATH=$PATH:$JAVA_HOME/bin:$KAFKA_HOME/bin

image-20240507131934936

保存并退出,输入下面命令使配置生效:

source /etc/profile

查看是否生效:

echo $KAFKA_HOME

结果为我们配置的路径即可。

(4)修改配置文件

修改配置文件

# 当前节点的ID号
broker.id=1
# Kafka 数据保存的目录
log.dirs=/usr/local/kafka_2.12-3.7.0/data

1.4 克隆虚拟机

(1)右键虚拟机,管理,克隆

(2)克隆后,进入虚拟机,查看ip

image-20240507140928451

我的分别是

192.168.135.132、192.168.135.133、192.168.135.134

(3)分别修改 Kafka 中 zookeeper配置

/usr/local/kafka_2.12-3.7.0/config/server.properties

# 当前节点的ID号,三台机器分别设置为1,2,3
broker.id=1# kafka监听的ip和端口,一定要改成虚拟机本机的ip,端口默认使用9092
listeners=PLAINTEXT://192.168.135.132:9092# zookeeper连接,配置为三台机器,最后的/kafka表示会在Zookeeper的根下创建kafka节点,管理所有kafka元数据
zookeeper.connect=192.168.135.132:2181,192.168.135.133:2181,192.168.135.134:2181/kafka

(4)分别修改 zookeeper 的myid配置

vim /usr/local/apache-zookeeper-3.8.4-bin/data/myid将里面数字根据机器id分别改成 1,2,3

(5)分别启动三台机器 zookeeper

cd /usr/local/apache-zookeeper-3.8.4-bin/bin
sh zkServer.sh start

image-20240507142656178

(6)分别启动三台机器的kafka

cd /usr/local/kafka_2.12-3.7.0
bin/kafka-server-start.sh -daemon config/server.properties

image-20240507143011714

2、问题处理:

1、如果你的zookeeper启动失败,查看日志

报错:Cannot open channel to 2 at election address /192.168.135.133:3888
java.net.NoRouteToHostException: No route to host (Host unreachable)

image-20240508153952453

是因为没有权限开启其他机器的端口,可以去开放指定端口,或者是关闭防火墙。

关闭防火墙:

systemctl stop firewalld.service

如果需要永久关闭,再执行下面命令:

sudo systemctl disable firewalld
sudo systemctl mask --now firewalld

2、如果你在启动kafka报错,报错日志:

[2024-05-08 00:43:28,805] ERROR Exiting Kafka due to fatal exception during startup. (kafka.Kafka$)
java.lang.RuntimeException: Invalid cluster.id in: /usr/local/kafka_2.12-3.7.0/data/meta.properties. Expected LeVt5skgTWmrMeCQk06U2g, but read dO89ne-BQm-hRzbnkqOQJAat org.apache.kafka.metadata.properties.MetaPropertiesEnsemble.verify(MetaPropertiesEnsemble.java:516)at kafka.server.KafkaServer.startup(KafkaServer.scala:250)at kafka.Kafka$.main(Kafka.scala:112)at kafka.Kafka.main(Kafka.scala)
[2024-05-08 00:43:28,805] INFO shutting down (kafka.server.KafkaServer)

image-20240508155617698

错误原因分析

直接原因:服务器在重启后出现的问题

根本原因:server.properties和meta.perporties(kafka启动后会在日志目录下生成的配置文件)配置文件的broke.id的值不一样,在我们服务重启后机器重启因meta.properties配置文件没处理掉,所以就会报错

解决方法:

方法一:

1、我们找到我们的server.properties配置文件的log.dirs参数的配置项,找到我们的log配置目录

2、将该目录下的meta.properties删除或别名

rm -rf /usr/local/kafka_2.12-3.7.0/data/meta.properties

方法二:

就是直接手动将meta.properties的值改成server.properties的值一致

2、kafka 在 zookeeper 中的目录说明

2.1 准备工作

(1)进入zookeeper客户端

/usr/local/apache-zookeeper-3.8.4-bin/bin/zkCli.sh

(2)查看目录下内容

ls /

image-20240508122755663

其中 kafka文件夹就是我们上面配置kafka中的 zookeeper.connect 配置时自动创建的。

2.2 /kafka 文件夹说明

查看 /kafka 下文件夹

ls /kafka

image-20240508123125576

(1)cluster

get /kafka/cluster/id

image-20240508123443266

id 代表一个kafka集群包含集群的版本信息,和集群id。

(2)controller

get /kafka/controller

image-20240508160047986

controller 是kafka中非常重要的一个角色,意为控制器,控制 partition 的 leader选举,topic 的crud操作。

brokerid 意为有其id对应的broker承担controller角色。

(2)controller_epoch

get /kafka/controller_epoch

image-20240508124707592

controller_epoch 表示controller 的纪元,每当controller的brokerid更换一次,controller_epoch就会加一。

(3)brokers

ls /kafka/brokers

image-20240508160542522

ls /kafka/brokers/ids

image-20240508160609215

ids,表示当前kafka的broker实例列表。

get /kafka/brokers/ids/1

image-20240509115524730

查看实例具体信息。

ls /kafka/brokers/topics

image-20240508161148323

查看现有的topic信息

(4)consumers

老版本用于存储kafka消费者的信息,主要保存对应的offset,新版本中基本不用
此时用户的消费信息,保存在一个系统的topic中:__consumer_offsets

(5)config

存放配置信息

image-20240508162244598

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/328030.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Node.js 学习笔记 express框架

express express 使用express下载express 初体验 express 路由什么是路由1路由的使用验证的方法 2获取请求报文参数3获取路由参数4响应设置响应报文 express 中间件5中间件全局中间件路由中间件 6静态资源中间件注意事项案例 7请求体数据8防盗链实现防盗链 9路由模块化router E…

【解决】Unity Build 应用程序运行即崩溃问题

开发平台:Unity 2021.3.7f1c1   一、问题描述 编辑器 Build 工程结束,但控制台 未显示 Build completed with a result of Succeeded [时间长度] 信息。该情况下打包流程正常,但应用程序包打开即崩溃。   二、问题测试记录 测试1&#xf…

CSS-flex布局

目录 flex布局组成 (flexible box弹性布局) display属性值:flex justify-content (主轴对齐方式) flex-start flex-end ​编辑 flex-center space-between 侧轴对齐方式 stretch center flex-end flex-direction (修改…

【C语言】4.C语言数组(1)

文章目录 1. 数组的概念2. 一维数组的创建和初始化2.1 数组创建2.2 数组的初始化2.3 数组的类型 3. 一维数组的使用3.1 数组下标3.2 数组元素的打印3.3 数组的输⼊ 4. 一维数组在内存中的存储5. sizeof计算数组元素个数 1. 数组的概念 数组是一组相同类型元素的集合。 数组分…

我和jetson-Nano的故事(10)——安装OpenCV3.2.0

1. 仓库地址 opencv https://opencv.org/releases/page/6/opencv_contrib https://github.com/opencv/opencv_contrib/tree/3.2.0 2. cmake-gui安装 安装指令 sudo apt-get install cmake-qt-gui如果安装过程中入到下面的问题 可以按照以下方法解决 sudo apt --fix-broke…

BakedSDF: Meshing Neural SDFs for Real-Time View Synthesis 论文阅读

(水一篇博客) 项目主页 BakedSDF: Meshing Neural SDFs for Real-Time View Synthesis 作者介绍 是 Mildenhall 和 Barron 参与的工作(都是谷歌的),同时一作是 Lipman 的学生,VolSDF 的一作。本文引用…

旧手机-基于Termux配置服务器(不用拿去换钢盆了)

Hi,大家好,我是抢老婆酸奶的小肥仔。 大家用手机这么多年了,手上或多或少都有一两个被替换下来的旧手机,也不用拿去换啥钢盆了,使用Termux可以将旧手机改造成一个服务器。 不多说,直接开干。 1、安装app…

基于springboot+vue+Mysql的在线答疑系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

经纬恒润助力AR-HUD市场发展,国产供应商共筑行业新篇章

根据盖世汽车研究院数据显示,1-2月经纬恒润AR-HUD出货量已达到国产供应商前五。未来,经纬恒润将持续努力,推动AR-HUD发展,共筑行业新篇章! 了解更多: 请致电 010-64840808转6115或发送邮件至market_depthi…

MySQL创建索引报错 Specified key was too long;max key length is 1000 bytes.

MySQL对创建索引的大小有限制,一般索引键最大长度总和不能超过1000个字节。 问题描述 MySQL创建索引时报错 Specified key was too long;max key length is 1000 bytes. 解决办法 (1) 修改存储引擎 InnoDB的索引字段长度限制大于MyISAM,可以尝试改成…

【面试必看】MySQL部分

MySQL 1. 基础 1. 什么是关系型数据库? 一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。各种表中(比如用户表),表中的每一行就存放着一条…

CAPL入门之使用CAPL记录测试Logging

0 前言 以往测试的log都是直接从trace导出,但是最近发现trace中能导出的数据是有限的,如果测试的时间过长,新的数据就会把之前的数据全部覆盖,并且对于长时间的测试,直接导出trace的内容也会造成查找效率低下的问题。因…

【计算机网络】HTTP协议详解实战抓包分析教程

文章目录 1.HTTP简介2.HTTP报文的结构3.HTTP协议中空行的作用4.uri和url的区别5.HTTP请求5.1 HTTP请求方法5.2 HTTP请求报头 6.HTTP响应6.1 状态码 7.HTTP位于应用层(基于TCP)8.非持久和持久连接8.1 非持久连接8.2 持久连接 1.HTTP简介 HTTP(Hypertext Transfer Pr…

Springboot+mybatis-plus+dynamic-datasource+继承DynamicRoutingDataSource切换数据源

Springbootmybatis-plusdynamic-datasource继承DynamicRoutingDataSource切换数据源 背景 最近公司要求支持saas,实现动态切换库的操作,默认会加载主租户的数据源,其他租户数据源在使用过程中自动创建加入。 解决问题 1.通过请求中设置租…

用户页面触发点击事件和 js 执行点击事件的区别

文章目录 情景展示情况一:用户点击页面触发情况二:通过 js 触发点击 结果分析情况一情况二 其实这个谜底揭开之后,第一反应都是,哦~,非常简单,但是细节决定成败,我被这个细节毁掉了,…

【十大排序算法】----选择排序(详细图解分析+实现,小白一看就会)

目录 一:选择排序——原理 二:选择排序——分析 三:选择排序——实现 四:选择排序——优化 五:选择排序——效率 一:选择排序——原理 选择排序的原理:通过遍历数组,选出该数组…

精酿啤酒:精酿文化的传承者与创新者

在啤酒的世界中,精酿啤酒是一种与众不同的文化现象。这种文化源于对啤酒品质的追求和对传统工艺的尊重,但在不断发展中也不断涌现出创新。作为精酿啤酒的品牌,Fendi club啤酒不仅是这种文化的传承者,更是创新者。 Fendi club啤酒始…

香港电讯高效网络,助力新消费品牌抓住拓展香港市场新风口

自今年初香港与内地全面恢复通关,两地同胞跨境消费热潮持续升温。港人“北上”消费掀起风潮的同时,香港市场也成为内地新消费品牌拓展的热门目标。从糕点、茶饮、连锁餐饮到服饰,越来越多内地品牌进驻香港。新消费品牌要想在香港开设门店&…

QT部分学习笔记

文章目录 1.前言注意问题2.学习历程2.0 创建项目 快捷键:2.1 创建按钮2.2 对象树2.3 调试输出2.4 QT坐标系2.5 信号和槽 3.Qmainwindow3.1 窗口菜单栏创建3.2 工具栏3.3 状态栏3.4 铆接部件3.5 对话框 4. 1.前言 版本: 5.9.9 注意问题 Qstring类型通多…

算法课程笔记——蓝桥云课第11次直播

算法课程笔记——蓝桥云课第11次直播