1. 使用的版本及下载网址
kafka version:kafka_2.13-6.2.0
kafka包我本地有,官方下载网址是Apache Kafka
zookeeper version:zookeeper-3.5.9
下载网址:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
我的三台机器IP分别为(工作机器,省略部分IP地址):
*.*.25.102
*.*.25.103
*.*.25.104
2. 安装步骤
1. 确认本机安装jdk
前期需要在本地机器上安装jdk,并在/etc/profile文件中添加PATH路径。使用以下命令确认jdk安装成功
java -version
结果类似如下
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
2. zookeeper配置安装
解压zookeeper包至/opt目录下,指令如
tar -zxf apache-zookeeper-3.5.9-bin.tar.gz -C /opt
编辑 /etc/profile文件,添加zookeeper路径代码
export ZOOKEEPER_PREFIX=/opt/apache-zookeeper-3.5.9-bin
export PATH=$PATH:$ZOOKEEPER_PREFIX/bin
export ZOO_LOG_DIR=/var/recordLog/zookeeper/log
ZOO_LOG_DIR属性可以自行更改,此为log的保存位置。然后执行下述指令语句刷新环境以保存更改
source /etc/profile
接着进入/opt/apache-zookeeper-3.5.9-bin/conf目录下,执行下述指令复制zoo_sample文件
cp zoo_sample.cfg zoo.cfg
编辑文件zoo.cfg
更改datadir的路径代码,最好存储在/var下,样例如下
dataDir=/var/recordLog/zookeeper/data
在clientPort 下方加入代码如下(IP地址改成自己的机器的IP地址)
clientPort=2181
server.1=*.*.25.102:2881:3881
server.2=*.*.25.103:2881:3881
server.3=*.*.25.104:2881:3881
保存退出后,输入下述指令
mkdir -p /var/recordLog/zookeeper/data
echo 1 > /var/recordLog/zookeeper/data/myid
第一个目录创建在之前ZOO_LOG_DIR的上一层目录下,第二个指令根据自定义机器号将echo值更改成1,2,3
三台机器都配置完成后,在三台机器上都启动zookeeper
zkServer.sh start
出现以下反馈
Zookeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.5.9-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
执行指令查看zookeeper状态
zkServer.sh status
三台机器中两台出现下述图1反馈,一台出现下述图2反馈
Zookeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.5.9-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false
Mode: follower
Zookeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.5.9-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false
Mode: leader
即为配置成功
3. kafka配置安装
同样先解压kafka文件到/opt目录下
编辑 /etc/profile文件,添加kafka路径代码
export KAFKA_HOME=/opt/kafka-6.2.0
export PATH=$PATH:$KAFKA_HOME/bin
接下来,由于我的kafka包比较特殊,网站上其他相关教程中在kafka包下会有conf文件夹,在这个文件夹下找到server.properties文件进行配置,而我的kafka包中并没有。使用find找到server.properties后再进行配置。配置步骤如下:
1. broker.id根据机器改成 broker.id=0 或者 broker.id=1。
2. 找到下述代码并进行如下更改
#listeners=PLAINTEXT://:9092
listeners=PLAINTEXT://:9092
#去掉 # 号使它执行
3. 找到下述代码并进行如下更改
#advertised.listeners=PLAINTEXT://your.host.name:9092
advertised.listeners=PLAINTEXT://*.*.25.102:9092
#your.host.name改成本机的设备ip地址
4. 更改 log.dirs 的路径
log.dirs=/var/recordLog/kafka/kafka-logs
#可以自己更改成需要的地址
5. 找到并配置zookeeper.connect段的代码
zookeeper.connect=*.*.25.102:2181,*.*.25.103:2181,*.*.25.104:2181/KafkaTest
#最后 / 后面的名字可以自己定,这个是kafka项目的运行名称
在三台机器都配置完成并保存退出后,在三台机器都启动kafka
kafka-server-start /opt/kafka-6.2.0/etc/kafka/server.properties
#后面的路径是你的kafka包的server.properties文件的路径
查看打印的信息,找到下图这一行,在三台机器上对比这行的信息
[2023-12-6 13:14:09,652] INFO Cluster ID = vuJHWISXKQsxjWcjsac9by (kafka.server.KafkaServer)
需要三台机器的ID一致
还可以通过以下指令进入zookeeper,查看kafka节点是否运行
zkCli.sh
ls /
反馈结果如下
[KafkaTest, zookeeper]
可以通过下述指令查看kafka
ls /KafkaTest
#之前配置kafka的 zookeeper.connect时设置的名称
反馈结果应该类似如下
[admin, brokers, cluster, config, consumers, controller, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification]
可以通过下述指令查看集群ids
ls /KafkaTest/brokers/ids
反馈如下
[0, 1, 2]
配置结束