《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_topicKafka的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