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

《Kafka集群搭建终极指南:ZooKeeper模式 vs KRaft模式》

如果你的 Kafka 版本是4.0 或更高:官方不再支持切换回 ZooKeeper 模式。只能使用KRaft模式

192.168.116.129

kafka

zookeeper

192.168.116.130

kafka

zookeeper

192.168.116.131

kafka

zookeeper

安装JDK

# 解压jdk到指定目录 $ tar xf jdk-8u211-linux-x64.tar -C /usr/local/ #创建软链接 $ cd /usr/local/ $ ln -s jdk1.8.0_211/ java # 声明Java环境变量 $ cat >> /etc/profile.d/jdk.sh <<-EOF #!/bin/bash export JAVA_HOME=/usr/local/java export PATH=\$PATH:\$JAVA_HOME/bin EOF #重新加载配置文件 $ source /etc/profile.d/jdk.sh #测试java $ java -version java version "1.8.0_211" Java(TM) SE Runtime Environment (build 1.8.0_211-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

Kafka旧版ZooKeeper模式

编译安装Zookeeper

#3台主机下载maven $ tar xf apache-maven-3.9.6-bin.tar.gz -C /usr/local $ cd /usr/local $ mv apache-maven-3.9.6 maven # 声明Maven环境变量 $ cat >> /etc/profile.d/mvn.sh <<-EOF #!/bin/bash export MVN_HOME=/usr/local/maven export PATH=\$PATH:\$MVN_HOME/bin EOF #重新加载配置文件 $ source /etc/profile.d/mvn.sh #测试maven $ mvn -version Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae) Maven home: /app/maven Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /app/jdk1.8.0_211/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix" #3台机器安装zookeeper $ tar xf apache-zookeeper-3.9.5 -C /usr/local && cd /usr/local $ mv apache-zookeeper-3.9.5 zookeeper #3台主机编译zookeeper $ cd /usr/local/zookeeper $ mvn clean install -DskipTests [编译安装时间较长,较麻烦也可以选择安装zookeeper二进制包可以不用编译zookeeper] #>>> 配置zk环境变量 $ cat /etc/profile.d/zookeeper.sh #!/bin/bash export ZK_HOME=/usr/local/zookeeper export PATH=$PATH:$ZK_HOME/bin #>>> 重新加载环境变量 $ source /etc/profile.d/zookeeper.sh #>>> 修改zookepr配置文件 $ cd zookeeper $ cp zoo_sample.cfg zoo.cfg $ vim zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 # 数据目录,确保有写入权限 dataDir=/usr/local/data/zk # 客户端连接端口 clientPort=2181 # 集群节点配置 # 格式:server.id=host:port1:port2 # port1用于节点间通信,port2用于领导者选举 server.1=192.168.116.129:2888:3888 server.2=192.168.116.130:2888:3888 server.3=192.168.116.131:2888:3888 #>>>创建数据目录 $ mkdir -p /usr/local/data/zk #>>> 设置 myid(每台机器不同) # node1 执行: echo "1" > /usr/local/data/zk/myid # node2 执行: echo "2" > /usr/local/data/zk/myid # node3 执行: echo "3" > /usr/local/data/zk/myid #>>> 启动Zookeeper $ /usr/local/zookeeper/bin/zkServer.sh start $ /usr/local/zookeeper/bin/zkServer.sh status /usr/bin/java ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: standalone #显示standlone表示启动成功

安装kafka

$ tar xf kafka_2.13-2.4.0 -C /usr/local/ $ cd /usr/local $ mv kafka_2.13-2.4.0 kafka #配置kafka环境变量 $ vi /etc/profile.d/kafka.sh #!/bin/bash export KAFKA_HOME=/usr/local/kafka export PATH=$PATH:$KAFKA_HOME/bin #>>> 重新加载环境变量 $ source /etc/profile.d/kafka.sh # 创建数据目录 $ mkdir /usr/local/data/kafka -p # 修改kafka的配置文件 # 192.168.116.129 $ vi /usr/local/kafka/config/server.properties broker.id=0 listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=PLAINTEXT://192.168.116.129:9092 log.dirs=/usr/local/data/kafka zookeeper.connect=192.168.116.129:2181,192.168.116.130:2181,192.168.116.131:2181 zookeeper.connection.timeout.ms=30000 # 192.168.116.130 $ vi /usr/local/kafka/config/server.properties broker.id=1 listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=PLAINTEXT://192.168.116.130:9092 log.dirs=/usr/local/data/kafka zookeeper.connect=192.168.116.129:2181,192.168.116.130:2181,192.168.116.131:2181 zookeeper.connection.timeout.ms=30000 # 192.168.116.131 $ vi /usr/local/kafka/config/server.properties broker.id=2 listeners=PLAINTEXT://0.0.0.0:9092 advertised.listeners=PLAINTEXT://192.168.116.131:9092 log.dirs=/usr/local/data/kafka zookeeper.connect=192.168.116.129:2181,192.168.116.130:2181,192.168.116.131:2181 zookeeper.connection.timeout.ms=30000 #>>>启动kafka $ /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties $ ps -ef | grep kafka #看是否有kafka的进程 #也可以创建一个topic验证是否成功 $ /usr/local/kafka/bin/kafka-topics.sh --create --bootstrap-server 192.168.116.131:9092 --topic test_topic --partitions 1 --replication-factor 1 $ /usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server 192.168.116.131:9092 test_topic

Kafka的KRaft模式

安装kafka

#所有主机下载jdk $ yum -y install wget $ wget https://download.oracle.com/java/25/latest/jdk-25_linux-x64_bin.tar.gz $ tar xf jdk-25_linux-x64_bin.tar.gz -C /usr/local $ cd /usr/local #配置JDK环境变量 $ ln -s jdk-25.0.3 java $ vi /etc/profile.d/jdk.sh #!/bin/bash export JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin $ source /etc/profile.d/jdk.sh #查看JDK是否配置成功 $ java -version java version "25.0.3" 2026-04-21 LTS Java(TM) SE Runtime Environment (build 25.0.3+9-LTS-195) Java HotSpot(TM) 64-Bit Server VM (build 25.0.3+9-LTS-195, mixed mode, sharing) #修改配置文件192.168.116.129 $ vi /usr/local/kafka/config/server.properties node.id=1 controller.quorum.voters=1@192.168.116.129:9093,2@192.168.116.130:9093,3@192.168.116.131:9093 listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 advertised.listeners=PLAINTEXT://192.168.116.129:9092 log.dirs=/usr/local/data/kafka #192.168.116.130 $ vi /usr/local/kafka/config/server.properties node.id=2 controller.quorum.voters=1@192.168.116.129:9093,2@192.168.116.130:9093,3@192.168.116.131:9093 listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 advertised.listeners=PLAINTEXT://192.168.116.130:9092 log.dirs=/usr/local/data/kafka #192.168.116.131 $ vi /usr/local/kafka/config/server.properties node.id=3 controller.quorum.voters=1@192.168.116.129:9093,2@192.168.116.130:9093,3@192.168.116.131:9093 listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 advertised.listeners=PLAINTEXT://192.168.116.131:9092 log.dirs=/usr/local/data/kafka #生成集群 ID $ /usr/local/kafka/bin/kafka-storage.sh random-uuid cs7hYkWTSfmq2lJFzHhe-Q #三台主机都执行格式化存储目录 $ /usr/local/kafka/bin/kafka-storage.sh format -t cs7hYkWTSfmq2lJFzHhe-Q -c /usr/local/kafka/config/server.properties $/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties #验证集群 $ /usr/local/kafka/bin/kafka-cluster.sh list-endpoints --bootstrap-server 192.168.116.129:9092

http://www.jsqmd.com/news/691320/

相关文章:

  • Jetson Nano新手必看:jtop命令报错‘jetson_stats.service not active’的完整解决流程
  • 鸿嘉利新能源联系方式查询:探讨充电设施供应商选择时需考量的运营平台整合能力与长期服务支持 - 品牌推荐
  • 面试局中局:“既然 AI 能写代码,我为什么要雇你?”——跨国大厂技术面试的高维破局点
  • RePKG完全指南:轻松提取和转换Wallpaper Engine资源文件
  • IDA入门【二】IDA数据显示窗口
  • RK3588内核驱动开发避坑指南:Sensor驱动加载了但media-ctl找不到?
  • 终极指南:3个核心模块掌握京东抢购助手自动化
  • 基于R语言的现代贝叶斯统计学方法(贝叶斯参数估计、贝叶斯回归、贝叶斯计算)实践技术应用
  • 如何选择郑州考研机构?2026年4月推荐评测口碑对比五家服务知名应届生自律差效率低 - 品牌推荐
  • Blender贝塞尔曲线终极指南:如何用Flexi工具快速绘制专业曲线
  • 树形结构三级分类列表
  • 从EdgeX到CVAT:我是如何用Docker Compose搭建一个安全的本地AI数据标注工作流的
  • 告别驱动烦恼:手把手教你为RTL8188GU芯片网卡在Linux下编译安装rtl8xxxu驱动
  • SCons构建MDK工程翻车实录:从‘No module named building’到完美运行的踩坑全指南
  • 2025-2026知识管理平台排行榜发布:泛微·采知连为何成为企业首选?
  • 【实战解析】STM32驱动BLDC无感控制:从反电动势过零检测到稳定换向
  • Windows下ESP32开发环境搭建:Clion 2024.x + ESP-IDF v5.x 最新版配置指南
  • MACKO-SpMV:低稀疏度下的GPU加速与存储优化
  • Word论文排版小技巧:如何一键实现连续文献引用[1-3]格式(附详细操作截图)
  • 【独家泄露】车规级MCU嵌入式大模型安全合规报告(ISO/SAE 21434 ASPICE Level 3交叉映射表)
  • 不止于转动:用STM32F103的PWM精细控制MG996舵机角度,实现平滑运动与多点定位
  • Qwen3.5-9B-GGUF部署案例:边缘设备Jetson Orin Nano轻量化部署实践
  • 2026年4月河南考研机构推荐:五家口碑服务评测对比领先二战生择校迷茫 - 品牌推荐
  • 国产高速复合开关标杆|四方杰芯 FSW6860:5 路高速 + 2 路低速,一站式搞定 USB Type‑C 全接口设计
  • Qianfan-OCR参数详解:4096 token上限下百页PDF摘要生成实测与截断策略
  • 别再对着指针发懵了!用CodeBlocks的Watch窗口一步步调试,把内存地址和引用关系看得明明白白
  • Phi-3.5-mini-instruct生成技术文档与API手册实战
  • Phi-mini-MoE-instruct的“思维过程”可视化:注意力机制与专家路由分析
  • Linux Mint 21.3 新机到手必做的5个设置,让你的桌面更顺手(附软件源更换保姆级教程)
  • IMDb电影评论情感分析数据预处理实战指南