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

2-kafka集群环境搭建

本文介绍kafka集群环境的搭建,我利用三个虚拟机搭建。文中我一步步演示了过程中可能会碰到的问题,在文章的最后,利用jmx,能看到详细的各个kafka broker的运行情况。

-1、环境

  • ubuntu :22.04-lts
  • kafka: 2.8
  • java: 17

0、规划

整体规划图如下:

在这里插入图片描述

可以看到我们利用一个zookeeper搭建了3个broker的kafka集群。详细的规划如下表:

序号borker.idipportjmx portzk
1100192.168.99.10090929992localhost:2181
2120192.168.99.12090929999192.168.99.100:2181
3130192.168.99.13090929993192.168.99.100:2181

1、kafka-1搭建

对应上面列表的“序号1”。注意这里有坑,ubuntu下(centos没测,大家可以试试)跑kafka目录下的zookeeper时,报java找不到的错误(启动kafka一样会报错,都按下面方法处理)。这是因为你机器上的java不是/usr/bin/java,和kafka要的不同。这里通过软链解决:

# 找到你机器上java的目录
which java  

# 第一个地址是我机器上java的路径,通过上面命令查出来的,第二个照着抄,因为就是kafka要的地址
sudo ln -s /home/jackie/.sdkman/candidates/java/current/bin/java /usr/bin/java

1.1、启动zookeeper

# 后台启动,日志文件写到zk.log文件内
sudo bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 

kafka自带的zookeeper可以使用-daemon参数后台启动。如果你要改zookeeper的端口信息,在config/zookeeper.properties文件里。

1.2、配置kafka-1

修改config/server.properties文件,至少有3出要改:

  • borker.id:集群中broker的id,必须与其他机器不同。这里配成100,按上面规划表中的来。
  • listeners:配置borker监听的端口,写你机器的ip,一定别写localhost或127.0.0.1。前面的PLAINTEXT表示明文传输,我们保持默认即可。
  • zookeeper.connect:指定连接zookeeper的地址和端口,如果是zookeeper集群,多个机器逗号分割即可。

贴个图,看看我配的值,大家按我的来即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当然还有别的参数可以配置,比如数据文件的保存路径等,这里咱们保持默认。

1.3、启动kafka-1

修改config/server.properties文件,

bin/kafka-server-start.sh -daemon config/server.properties 
  • -daemon: 代表后台启动,有些同学喜欢用nohup命令,其实效果一样。

这样第一个kafka就配置完成,并且启动了。kafka-2和kafka-3按照同样的步骤一步步执行即可。但是注意:kafka-2、kafka-3的zookeeper地址都是用的kafka-1的,别填错了。实际生产环境要配置zookeeper集群,别让zookeeper产生单点瓶颈。

2、配置jmx

配置jmx后,我们可以通过kafka-manager查看详细的运行参数。配置过程简单,咱们在bin/kafka-server.start.sh文件中,加入jmx的端口配置即可,如下图,别加错地方
在这里插入图片描述
这是kafka-1配置,其他两个机器按照上面规划来哦。配置好了咱们用java Visualvm 看看效果。用Windows或mac,找到你jdk安装的目录,执行bin/jvisualvm命令,并远程连接这三个机器,注意jmx端口要和上面的对上。

在这里插入图片描述

注意:kafka机器上的防火器要么开放jmx的端口要么关闭防火墙。否则连接不上哦。至此kafka的集群配置完成了,上节咱们配置过kafka-manager,咱们在此看看效果(当然集群要重新配置,上节是单机)。

3、kafka-manager效果

在这里插入图片描述
能够看到咱们规划的集群已经完整的显示到kafka-manager里了,也算验证了我们的配置。
好了,先到这里吧。大家动手试试。
//~~

相关文章:

  • 循环神经网络(RNN):时序建模的核心引擎与演进之路
  • 特征表示深度解析:颜色、纹理、形状与编码
  • 容器编排革命:从 Docker Run 到 Docker Compose 的进化之路20250309
  • PiscTrace以YOLOv12为例定义兴趣区域提高识视图别效率
  • 在 Windows 上安装和配置 Poetry
  • leecode练习-数组-3.9
  • 慕慕手记项目日记 熟悉SQLAIChemy ORM框架 2025-3-5
  • 软件开发过程总揽
  • 利用LLMs准确预测旋转机械(如轴承)的剩余使用寿命(RUL)
  • 如何将本地已有的仓库上传到gitee (使用UGit)
  • UML面向对象建模与设计 读书笔记
  • Python 数据可视化创意分享:解锁数据之
  • PCIe协议之RCB、MPS、MRRS详解
  • Mysql配置文件My.cnf(my.ini)配置参数说明
  • 一周学会Flask3 Python Web开发-使用SQLAlchemy动态创建数据库表
  • Elastic:AI 会开始取代网络安全工作吗?
  • uniapp,自绘仪表盘组件(基础篇)
  • 【VUE】day01-vue基本使用、调试工具、指令与过滤器
  • js 网络安全 网络安全 hw
  • C++入门——引用
  • 首次带人形机器人走科技节红毯,傅利叶顾捷:没太多包袱,很多事都能从零开始
  • 北方将现今年首场大范围高温天气,山西河南山东陕西局地可超40℃
  • 中期选举后第三势力成“莎拉弹劾案”关键,菲律宾权斗更趋复杂激烈
  • 习近平在第三十五个全国助残日到来之际作出重要指示
  • 蒋圣龙突遭伤病出战世预赛存疑,国足生死战后防线严重减员
  • 舱位已排到月底,跨境电商忙补货!美线订单大增面临爆舱,6月运价或翻倍