欲练此功,必先安装 Zookeeper 。
如何安装且看:https://blog.csdn.net/FBB360JAVA/article/details/129567653
使用以下下载链接,进行下载:
https://mirrors.cnnic.cn/apache/kafka/
本次安装采用最新版本:
使用如下命令进行下载:
wget https://mirrors.cnnic.cn/apache/kafka/3.4.0/kafka_2.12-3.4.0.tgz
等待下载完毕后,进行解压:
tar -xzvf kafka_2.12-3.4.0.tgz
效果如下:
[root@iZ2zefzjmmq2tvk3fvkxhaZ kafka]# ll
total 103952
drwxr-xr-x 7 root root 4096 Feb 1 02:05 kafka_2.12-3.4.0
-rw-r--r-- 1 root root 106441367 Feb 7 00:47 kafka_2.12-3.4.0.tgz
[root@iZ2zefzjmmq2tvk3fvkxhaZ kafka]# pwd
/usr/software/kafka
[root@iZ2zefzjmmq2tvk3fvkxhaZ kafka]#
在解压后的目录中创建日志目录 kafka-logs
:
[root@iZ2zefzjmmq2tvk3fvkxhaZ kafka_2.12-3.4.0]# pwd
/usr/software/kafka/kafka_2.12-3.4.0
[root@iZ2zefzjmmq2tvk3fvkxhaZ kafka_2.12-3.4.0]# mkdir kafka-logs
[root@iZ2zefzjmmq2tvk3fvkxhaZ kafka_2.12-3.4.0]# ll
total 68
drwxr-xr-x 3 root root 4096 Feb 1 02:05 bin
drwxr-xr-x 3 root root 4096 Feb 1 02:05 config
drwxr-xr-x 2 root root 4096 Mar 15 21:31 kafka-logs
drwxr-xr-x 2 root root 4096 Mar 15 21:26 libs
-rw-r--r-- 1 root root 14869 Feb 1 02:02 LICENSE
drwxr-xr-x 2 root root 4096 Feb 1 02:05 licenses
-rw-r--r-- 1 root root 28184 Feb 1 02:02 NOTICE
drwxr-xr-x 2 root root 4096 Feb 1 02:05 site-docs
修改安装目录中 config 目录下的 server.properties 文件
主要修改属性:broker.id
、log.dirs
、zookeeper.connect
[root@iZ2zefzjmmq2tvk3fvkxhaZ config]# pwd
/usr/software/kafka/kafka_2.12-3.4.0/config
[root@iZ2zefzjmmq2tvk3fvkxhaZ config]# vim server.properties
具体内容如下:
broker.id=0
log.dirs=/usr/software/kafka/kafka_2.12-3.4.0/kafka-logs
zookeeper.connect=localhost:2181
listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://你的公网IP地址:9092
注意这里有坑,listeners=PLAINTEXT://localhost:9092
,无所谓配置不配置。
我在部署Kafka到阿里云之后,本地连接不上。查到资料后,发现 advertised.listeners 必须配置成自己的阿里云公网ID地址。
修改 /etc/profile
文件,在尾部追加以下内容:
export KAFKA_HOME=/usr/software/kafka/kafka_2.12-3.4.0
export PATH=$KAFKA_HOME/bin:$PATH
随后使配置生效:
source /etc/profile
验证配置是否成功:
输出配置的KAFKA_HOME
变量,并且输入 kafka-
,再使用 tab
,看看会不会自动补全。
[root@iZ2zefzjmmq2tvk3fvkxhaZ config]# echo $KAFKA_HOME
/usr/software/kafka/kafka_2.12-3.4.0
[root@iZ2zefzjmmq2tvk3fvkxhaZ config]# kafka-
kafka-acls.sh kafka-delegation-tokens.sh kafka-metadata-shell.sh kafka-storage.sh
kafka-broker-api-versions.sh kafka-delete-records.sh kafka-mirror-maker.sh kafka-streams-application-reset.sh
kafka-cluster.sh kafka-dump-log.sh kafka-producer-perf-test.sh kafka-topics.sh
kafka-configs.sh kafka-features.sh kafka-reassign-partitions.sh kafka-transactions.sh
kafka-console-consumer.sh kafka-get-offsets.sh kafka-replica-verification.sh kafka-verifiable-consumer.sh
kafka-console-producer.sh kafka-leader-election.sh kafka-run-class.sh kafka-verifiable-producer.sh
kafka-consumer-groups.sh kafka-log-dirs.sh kafka-server-start.sh
kafka-consumer-perf-test.sh kafka-metadata-quorum.sh kafka-server-stop.sh
以上安装就成功了。
先确保你的 zookeeper 正常启动了。
随后在kafka 的根目录中启动kafka:
./bin/kafka-server-start.sh ./config/server.properties &
随后使用 jps
命令确认是否已经启动:
[root@iZ2zefzjmmq2tvk3fvkxhaZ logs]# jps
232897 nacos-server.jar
2665485 Logstash
268274 Jps
174292 QuorumPeerMain
4183577 start-1.0.0-SNAPSHOT.jar
2453069 rocketmq-dashboard-1.0.1-SNAPSHOT.jar
2518282 NamesrvStartup
2600634 Elasticsearch
267723 Kafka
可以看到已经启动了Kafka。
以下命令创建名为 testTopic
的 topic。
./bin/kafka-topics.sh --create --topic testTopic --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
./bin/kafka-topics.sh --list --bootstrap-server localhost:9092
不出意外的,上一步创建的 topic 被列了出来,但是上述命令是查看所有的 topic的。
[root@iZ2zefzjmmq2tvk3fvkxhaZ kafka_2.12-3.4.0]# ./bin/kafka-topics.sh --list --bootstrap-server localhost:9092
testTopic
查看指定topic的详细信息:
[root@iZ2zefzjmmq2tvk3fvkxhaZ kafka_2.12-3.4.0]# ./bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic testTopic
Topic: testTopic TopicId: 6MXViI1ATRyLl5wl1o8YcQ PartitionCount: 1 ReplicationFactor: 1 Configs: Topic: testTopic Partition: 0 Leader: 0 Replicas: 0 Isr: 0
./bin/kafka-server-stop.sh
本文原意只是为了使用 SpringBoot 来操作 Kafka 来做的准备工作。
我们仍需知道的是 ,Kafka 对外需要暴露 9092 端口。方便Java 程序调用。
后序我们将使用 Spring-kafka 以及 Spring-cloud-stream-kafka 的 starter 来操作kafka。