04、Kafka集群安装

news2025/1/10 17:17:23

03、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/logs

server.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-bin

export 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.0

export 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配置

# 当前节点的ID号,三台机器分别设置为1,2,3
broker.id=1

# 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

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-hRzbnkqOQJA
	at 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

get /kafka/brokers/ids

image-20240508160609215

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

get /kafka/brokers/ids/1

image-20240508160734141

查看实例具体信息。

ls /kafka/brokers/topics

image-20240508161148323

查看现有的topic信息

(4)consumers

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

(5)config

存放配置信息

链图片转存中…(img-NUZFOE4l-1715169141277)]

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

get /kafka/brokers/ids/1

[外链图片转存中…(img-7dCZl9Zo-1715169141277)]

查看实例具体信息。

ls /kafka/brokers/topics

[外链图片转存中…(img-suYnSnww-1715169141277)]

查看现有的topic信息

(4)consumers

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

(5)config

存放配置信息

image-20240508162244598

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【中级软件设计师】上午题15-计算机网络

上午题15-计算机网络 1 网络设备2 协议簇3 TCP和UDP4 SMTP和POP35 ARP和RARP6 DHCP(Dynamic Host Configuration Protocol)7 URL8 浏览器9 IP地址和子网划分10 IPv611 Windows命令12 路由器 1 网络设备 物理层设备:中继器、集线器&#xff0…

【Linux】CAN根据时钟频率、波特率计算采样点详解

1、采样点知识回顾 参考博客:【CAN】知识点:帧类型、数据帧结构、传输速率、位时间、采样点 CAN 采样点是指在一个数据位的传输周期内,接收器实际采样数据的时间点。这个时间点是以百分比来表示的,它决定了在数据位的传输周期中,何时读取数据位的值。 正确设置采样点对…

【吃透Java手写】2-Spring(下)-AOP-事务及传播原理

【吃透Java手写】Spring(下)AOP-事务及传播原理 6 AOP模拟实现6.1 AOP工作流程6.2 定义dao接口与实现类6.3 初始化后逻辑6.4 原生Spring的方法6.4.1 实现类6.4.2 定义通知类,定义切入点表达式、配置切面6.4.3 在配置类中进行Spring注解包扫描…

纯血鸿蒙APP实战开发——Canvas实现模拟时钟案例

介绍 本示例介绍利用Canvas 和定时器实现模拟时钟场景,该案例多用于用户需要显示自定义模拟时钟的场景。 效果图预览 使用说明 无需任何操作,进入本案例页面后,所见即模拟时钟的展示。 实现思路 本例的的主要实现思路如下: …

HTB Intuition

Intuition User nmap ┌──(kali㉿kali)-[~/…/machine/SeasonV/linux/iClean] └─$ nmap -A 10.129.22.134 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-30 05:29 EDT Nmap scan report for 10.129.22.134 Host is up (0.49s latency). Not shown: 998 …

前端面试题大合集3----网络篇

目录 一、Http协议详解,http请求方式,http状态码 Http协议详解: http请求方式: http状态码: 常用的状态码: 其他常用状态码: 二、Http常见请求方式 三、Http协议与TCP协议的区别和联系 …

美业SaaS系统多门店收银系统源码-【卡升组合促销规则】讲解分享

美业管理系统源码 博弈美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 促销活动 PC管理后台、手机APP、iPad APP、微信小程序 1、什么是卡升组合促销? 原价购买的卡项,卡状态正常的情况下&…

数值计算方法——大题题型总结

目录 一、绝对误差限、相对误差限 1.1 例题 1.2 解题套路 1.3 题解 二、敛散性、收敛速度 2.1 例题 2.2 解题套路 2.3 题解 三、牛顿迭代法 3.1 例题 3.2 解题套路 3.3 题解 四、割线法 4.1 例题 4.2 解题套路 ​4.3 题解 五、列主元素消去法 5.1 例题 5.…

增量同步笔记

2.2.2.增量同步 全量同步需要先做RDB,然后将RDB文件通过网络传输个slave,成本太高了。因此除了第一次做全量同步,其它大多数时候slave与master都是做增量同步。 什么是增量同步?就是只更新slave与master存在差异的部分数据。如图…

【快速入门Linux】10_Linux命令—Vi编辑器

文章目录 一、vi 简介1.1 vi1.2 vim1.3查询软连接命令(知道) 二、打开和新建文件(重点)2.1 打开文件并且定位行2.2 异常处理 三、vi三种工作模式(重点)3.1 末行模式-命令 四、常用命令4.0 命令线路图4.1 移…

ROS 2边学边练(44)-- 从头开始构建一个视觉机器人模型

前言 从此篇开始我们就开始接触URDF(Unified Robot Description Format,统一机器人描述格式),并利用其语法格式搭建我们自己的机器人模型。 动动手 开始之前我们需要确认是否安装joint_state_publisher功能包,如果有安装过二进制版本的urdf_…

C++ stack、queue以及deque

1、stack和queue常用接口 严格来说栈和队列的实现是容器适配器 1、常用接口: 栈:top、push、pop、size、emptystack - C Reference (cplusplus.com) 队列:top、push、pop、swap、size、emptyqueue - C Reference (cplusplus.com) 2、deque&a…

Pycharm安装包numpy和matplotlib安装

环境 python 3.12 Pycharm 2023.1 安装包 创建图表的 numpy 库和 matplotlib 库 安装过程出现的问题 setuptools工具包没有安装 Python packaging tool setuptools not found文件 -> 设置 -> 项目:xxx -> python解释器界面显示不出已安装的软件包,系…

MQTT服务搭建及python使用示例

1、MQTT协议 1.1、MQTT介绍 MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的通信协议,通常用于物联网设备之间的通讯。它具有低带宽、低功耗和开放性等特点,适合在网络带宽有限或者网络连接不稳定…

pyinstaller 不是内部或外部命令,也不是可运行的程序或批处理文件的解决办法(详细)

首先我们需要查看是否安装了pyinstaller ,可以在命令窗口输入命令pip list检查是否安装成功, 这里我们可以看见已经安装成功了的,如果没有安装可以执行安装命令 pip install pyinstaller 进行安装即可。 下一步我们排查pyinstaller的安装路…

Python数据可视化------地图

基础地图使用 # 地图基本演示 # 导包 from pyecharts.charts import Map from pyecharts.options import TitleOpts, VisualMapOpts# 准备地图对象 cmap Map() # 准备数据(列表) data [("北京市", 99), ("上海市", 199), ("…

为什么你创业总是失败?2024普通人如何创业?2024创业赛道!2024创业新风口!2024创业方向!2024普通人的机会!

为什么你做项目老是不赚钱,是你不够努力吗?是你运气不好吗? 如果都不是!那一定是你的思维逻辑出了问题! 先想一想你以前做的项目,有没有哪个符合以下条件:对客户有价值、寻找客源成本在可接受…

BFS专题——FloodFill算法:200.岛屿数量

文章目录 题目描述算法原理代码实现CJava 题目描述 题目链接:200.岛屿数量 PS:注意题目中每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。也就是说斜角是不算了, 例如示例二,是三个岛屿。 算法原理 这道题目是 DFS&#xff0…

商务分析方法与工具(二):Python的趣味快捷-序列结构解决电影推荐

Tips:"分享是快乐的源泉💧,在我的博客里,不仅有知识的海洋🌊,还有满满的正能量加持💪,快来和我一起分享这份快乐吧😊! 喜欢我的博客的话,记得…

【C语言】内存函数的概念,使用及模拟实现

Tiny Spark get dazzling some day. 目录 1. memcpy-- 函数原型-- 函数使用-- 函数的模拟实现 2.memmove-- 函数原型-- 函数使用-- 函数的模拟实现 3. memset-- 函数原型-- 函数使用-- 函数的模拟实现 4. memcmp-- 函数原型-- 函数使用-- 函数的模拟实现 1. memcpy 使用需包含…