当前位置: 首页 > news >正文

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

相关文章:

04、Kafka集群安装

1、准备工作 首先准备一台虚拟机,centos7系统,先在一台上配置安装后,最后克隆成多台机器。 1.1 安装JDK (1)下载JDK,上传到 /root/software 路径 下载地址:https://www.oracle.com/cn/java/…...

Vue自定义封装音频播放组件(带拖拽进度条)

Vue自定义封装音频播放组件(带拖拽进度条) 描述 该款自定义组件可作为音频、视频播放的进度条,用于控制音频、视频的播放进度、暂停开始、拖拽进度条拓展性极高。 实现效果 具体效果可以根据自定义内容进行位置调整 项目需求 有播放暂停…...

php中常见的运算符和使用方法

PHP中常见的运算符包括算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、字符串运算符、三元条件运算符(也称为三目运算符)、递增/递减运算符等。以下是这些运算符的简要说明和使用方法: 算术运算符: :加法…...

信息与未来2017真题笔记

T1. 龟兔赛跑 题目描述 兔子又来找乌龟赛跑啦!同样的错误兔子不会犯两次,所以兔子提出赛跑的时候,乌龟就觉得这场比赛很不公平。于是兔子进一步放宽了条件,表示他可以在比赛开始以后先睡 t t t 分钟再开始追乌龟。 乌龟这下没…...

前端基础知识-ES6解构赋值(将数组内元素、字符串内字符、对象内属性值快速赋值给其他变量)

前言: 将数组、字符串、对象进行展开,并将展开的数据赋值给指定变量,以达到语法简化的目的,日常开发中可以大大提升我们的效率。 主要语法: 一、[变量1,变量2。。。]目标数组 将数组里面的内容赋给其他变量 场景1…...

【SpringBoot整合系列】SpringBoot整合RabbitMQ-消息可靠性

目录 确保消息的可靠性RabbitMQ 消息发送可靠性分析解决方案开启事务机制发送方确认机制单条消息处理消息批量处理 失败重试自带重试机制业务重试 RabbitMQ 消息消费可靠性如何保证消息在队列RabbitMQ 的消息消费,整体上来说有两种不同的思路:确保消费成…...

Hbase 常用shell操作

目录 1、创建表 1.1、启动HBase Shell 1.2、创建表 1.3、查看表 1.4、删除表 2、插入数据 2.1、put命令 3、查看数据 3.1、get命令 3.2、查询数据中文显示 4、更新数据 4.1、使用put来更新数据 5、删除数据 5.1、delete命令 5.2、删除指定列的数据 5.3、delete…...

数据库被攻击后出现1044 - access denied for user ‘root‘@‘% ‘ to database table

MySQL数据库被攻击后,数据库全部被删除,并且加一个一个勒索的数据,向我索要btc, 出现这个问题就是我的数据库密码太简单了,弱密码,被破解了,并且把我权限也给修改了 导致我操作数据库时&#…...

在哪里打印资料比较便宜

在数字时代,我们常常需要在各种文档、资料之间穿梭,然而,有时候我们需要的并不是数字版,而是纸质版。那么,在哪里打印资料比较便宜呢? 琢贝云打印以其超低的价格,优质的打印服务,赢…...

leetcode 2606.找到最大开销的子字符串

思路:dp 这道题是不是很像最大子数组和那道题呢?从这里我们其实能看出来一类题的蹊跷规律来: 也就是说,在涉及到子字符串,子数组这样的字眼的时候,并且有最值问题,我们可以基本上确定是动态规划&#xf…...

超标量处理器设计:重排序缓存(ROB)

★超标量处理器的很多地方用到了重排序缓存,但是我对它不是很了解,所以我整理一下重排序缓存的知识点。 重排序缓存(ROB)在确保乱序执行的指令能够正确地完成和提交(Commit),也可以用来寄存器重命名。 ROB是一个先进先出的表,每个…...

nginx常用内置变量

名称说明$arg_name请求中的name参数$args请求中的参数$content_lengthhttp请求信息里的"Content-Length"$content_type请求信息里的"Content-Type"$host请求信息中的"Host",如果请求中没有Host,则等于设置的服务器名$host…...

MySQL技能树学习——数据库组成

数据库组成: 数据库是一个组织和存储数据的系统,它由多个组件组成,这些组件共同工作以确保数据的安全、可靠和高效的存储和访问。数据库的主要组成部分包括: 数据库管理系统(DBMS): 数据库管理系…...

OpenCV入门1:Python基础编程

目录 环境配置 Python基础语法 import 与 from...import If ... Else 语句 While 循环 For 循环 集合数据类型 列表 函数 类和对象 环境配置 详情请参考:Pycharm环境配置完整教程 Python基础语法 import 与 from...import 在 python 用 import 或者 f…...

C++ Builder XE EnumWindowsProc遍历所有窗口的名称

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) { // 这里可以添加你的处理逻辑 // 例如,将句柄添加到列表中或者其他操作 // 这里我们仅仅输出到调试窗口 OutputDebugString(L"枚举窗口句柄: "); char windowHandle[10];…...

Qt QInputDialog详解

1.简介 QInputDialog是一个对话框类,用于从用户那里获取一个单一的值。这个值可以是字符串、数字、或者一个列表中的选项。QInputDialog提供了一个方便的方式来快速创建一个输入对话框,无需自己从头开始构建。 QInputDialog支持多种输入类型&#xff1…...

最新盘点!2024年20大好用的项目管理软件(后续持续更新)

项目管理软件,作为一种高效的项目管理工具,正逐渐成为企业运营中不可或缺的一环。它包括任务分配、进度跟踪、团队协作、风险预测等多个方面,为企业提供了全方位的项目管理解决方案。 在如今竞争激烈的市场环境下,企业要想在有限…...

Linux:配置客户端默认autofs服务

Linux:配置客户端autofs服务 安装autofs软件 [rootserver200 ~]# dnf install autofs -y开启并设置开机自启autofs服务 [rootserver200 ~]# systemctl enable --now autofs访问默认autofs挂载机制 当autofs启动后系统默认会在/net目录中访问nfs服务器 [rootser…...

Kotlin版本的Gradle全局配置init.gradle.kts及参考文档

工欲善其事, 必先利其器。 文章目录 init.gradle.ktsGroovy版本的init.gradle其他有用的settings.gradle.ktskotlin 与 compose 版本对应关系agp 与 gradle 版本对应关系gradle下载器 直接在.gradle文件夹下添加文件init.gradle / init.gradle.kt for kotlin dsl. …...

react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)

技术要点 动态样式 className{tabItem ${currentType item.value && "active"}}安装 lodash npm i --save lodash使用 lodash 对对象数组排序(不会改变源数组) _.orderBy(dataList, "readNum", "desc")src\De…...

C++学习第二十七课:C++ 输入输出流详解:从基础到高级应用

在 C 中,流(stream)是一种用于实现输入输出操作的抽象概念。流可以看作是字节的流动,这些字节可以从一个地方流向另一个地方,例如从键盘输入到程序中,或者从程序输出到屏幕。C 提供了一套完整的流库来处理各…...

【Unity AR开发系列】介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用

预告 Unity开发AR系列 本专栏将介绍如何使用这个支持热更的AR开发插件,快速地开发AR应用。 更新 二、使用插件一键安装HybridCLR和ARCore 三、配置带HybridCLR的ARCore开发环境...

Nginx - 配置文件结构(一)

安装Nginx 以 Ubuntu 为例,安装命令为 sudo apt install nginx常用指令 # 检查配置文件是否有问题 nginx -t# 热加载配置文件 nginx -s reload# 等待处理完当前请求并退出 nginx -s quit# 快速退出 nginx -s stop目录结构 nginx 默认安装位置一般在 /etc/nginx …...

暗区突围进不去/游戏无法启动/掉帧卡顿/报错的解决方法

暗区突围是一款高拟真硬核射击手游,打造了全新的沉浸式暗区战局体验,发行商是腾讯公司。这个游戏名词虽然看起来有些陌生,但其本身的玩法内核毫无疑问的是,这款游戏在画面质量和枪械操作方面,都是手游市场上同类游戏中…...

基于FPGA的视频矩阵 视频拼接 无缝切换解决方案

视频矩阵 视频矩阵 视频拼接 无缝切换 1. 最大支持144路HDMI视频输入,最大支持144路路HDMI输出,完全交叉切换。 2. 与包括1080p/60的所有HDTV分辨率和高达1920*1200的PC的分辨率兼容; 3. 支持HDMI 1.3a、HDCP 1.3、HDCP 1.4、以及DVI 1.0协…...

LeetCode 513.找树左下角的值

LeetCode 513.找树左下角的值 1、题目 题目链接:513. 找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1示例 2: 输入: [1,2,3,4,null…...

redis分片java实践、redis哨兵机制实现、redis集群搭建

redis分片java实践 linux安装redishttps://mp.csdn.net/mp_blog/creation/editor/134864302复制redis.conf配置文件成redis1.conf、redis2.conf、redis3.conf 修改redis的端口信息和存pid文件的路径。存pid文件的路径只要不同就行了,没什么特别要求。 指定配置文件…...

2024年四千价位段最具统治力的投影仪,坚果N1S 4K: 4K+三色激光=下一代4K

更高的亮度与分辨率、更强的对比度、更广的色域、更低的价格,家用智能投影企业在性能和价格上加速内卷。作为该领域的龙头和“卷王之王”,坚果投影率先将激光投影仪的价格拉入万元内,近期其又祭出一把杀手锏——坚果N1S 4K。该产品是首款4000…...

MySQL8.3升级踩坑记录

之前用的mysql5.7,目前被省公司发现有漏洞,需要升级mysql8.3,无奈只好升级,记录下踩坑经过 1、安装完以后设置环境变量,网上操作一大堆,以便于方便使用client 2、双击client 登录,开启远程访问…...

你写的每条SQL都是全表扫描吗

你写的每条SQL都是全表扫描吗?如果是,那MySQL可太感谢你了,每一次SQL执行都是在给MySQL上压力、上对抗。MySQL有苦难言:你不知道索引吗?你写的SQL索引都失效了不知道吗?慢查询不懂啊?建那么多索…...