虚拟机
操作系统: Linux Centos8.0
$ cat /etc/redhat-release
# CentOS Linux release 8.0.1905 (Core)
Linux 内核版本: 4.18
$ uname -r
# 4.18.0-80.11.2.el8_0.x86_64
官网: Apache Kafka
同时还有其它几种kafka,这里不作介绍,只操作这个最流行的 Apache 版本
下载链接: kafka 镜像
这里就选择 2.5.0 版本
# 下载
$ curl -O http://mirrors.hust.edu.cn/apache/kafka/2.5.0/kafka_2.13-2.5.0.tgz
# 解压
$ tar xzvf kafka_2.13-2.5.0.tgz
# 进入目录并查看
# bin config libs LICENSE NOTICE site-docs
bin 目录下有一系列kafka的操作命令,其中 sh 结尾的是 linux 系统使用的,还有个 windows 目录,里面放的是 windows 系统使用的命令。
config 目录下 server.properties
是服务器的配置文件,这里因为是单个Broker,所以不需要修改什么
kafka对外暴露 port:9092
因为kafka是依赖于zookeeper的,所以这个也得安装好
下载链接: zookeeper 镜像 记得下载带 bin
的那个包,不然的话,就得自己编译,这个可以自己尝试
这里使用 3.5.7 版本
下载解压之后去到 bin
目录,以 *.cmd
后缀的都是 windows 的,*.sh
结尾的都是 linux 的
进入 config 目录,有个 zoo_sample.cfg
是配置文件示例,我们拷贝一份,修改名称为 zoo.cfg
$ cp zoo_sample.cfg zoo.cfg
查看zookeeper使用
$ ./zkServer.sh --help
# Usage: ./zkServer.sh [--config ] {start|start-foreground|stop|restart|status|print-cmd}
启动zookeeper
$ ./zkServer.sh start
# ZooKeeper JMX enabled by default
# Using config: /root/sofeware/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
# Starting zookeeper ... STARTED
如果启动失败,可以去 logs 目录看看日志,一般无法加载主类,就表明 Java 环境没有配置好,因为 zookeeper 是运行在 JVM 虚拟机上的,所以 $CLASSPATH
这个环境变量一定要配置
这里顺便把java环境配置了吧,找到自己使用的shell,然后去相应的配置文件下修改,我这里是 zsh,所以是配置文件是 ~/.zshrc
find / -name "jre"
找到自己的jre目录,作为 JAVA_HOME
变量的值
export JAVA_HOME=/usr/lib/jvm/jre
export JRE_HOME=${JAVA_HOME}
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
执行 source ~/.zshrc
使配置生效
此时再运行,应该没啥问题了
查看 zookeeper 运行状态
./zkServer.sh status
# ZooKeeper JMX enabled by default
# Using config: /root/sofeware/apache-zookeeper-3.5.7-bin/bin/../conf/zoo.cfg
# Client port found: 2181. Client address: localhost.
zookeeper 对外暴露 port:2181
使用 lsof
查看
$ lsof -i:2181
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 28532 root 52u IPv6 81667 0t0 TCP *:eforward (LISTEN)
此时我们还未用kafka连接我们的zookeeper,所以处于tcp的LISTEN
状态
zookeeper启动好后,我们就来启动 kafka
$ ./kafka-server-start.sh -daemon ../config/server.properties # daemon 表示守护进程,也是是后台进程
使用 jps
命令查看当前系统JVM跑的进程有哪些
$ jps
# 28532 QuorumPeerMain # zookeeper 进程
# 30504 Kafka
# 30573 Jps
启动成功
此时再看看 zookeeper 的tcp连接状态
$ lsof -i:2181
# COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
# java 2249 root 52u IPv6 30285 0t0 TCP *:eforward (LISTEN)
# java 2249 root 58u IPv6 30617 0t0 TCP localhost:eforward->localhost:36384 (ESTABLISHED)
# java 2656 root 120u IPv6 30616 0t0 TCP localhost:36384->localhost:eforward (ESTABLISHED)