安装kafka

进入 kafka 镜像资源站:http://archive.apache.org/dist/kafka/ 下载想要版本的 kafka

首先确保需要安装的机器上存在 java 环境

如果没有则需要去下载安装 java

这里使用的 kafka 自带的 zookeeper 所以不需要额外下载 zookeeper

将下载好的 tgz 压缩包上传到机器上之后,找到文件存放的路径,进入该路径 如果需要修改路径尽量在这个时候将 tgz 文件转移到想要的位置上去 使用下面的命令可以转移文件

cp <kafka>.tgz /capaa/anti-mail/

上面的 <kafka> 为下载好的 kafka 压缩包的名称,需要自己去替换 后面的 /capaa/anti-mail/ 则是需要移动到的位置,注意:路径最后一定要加 /

在 tgz 包所在的路径解压 tgz 压缩包,使用下面的命令:

tar -zvxf <kafka>.tgz

这里的 <kafka> 和上面的是一样的意思

解压完之后使用 ls 命令,查看,可以看到路径下多了很多文件,这些就是压缩包中解压出来的文件

修改配置文件

不要移动路径,也就是不要使用 cd 命令,就在本路径下,执行下面的命令

vim config/server.properties

进入到 kafka 的配置文件中,注意这几个地方

linux 重启 kafka 命令 linux 启动kafka_java

linux 重启 kafka 命令 linux 启动kafka_java_02

linux 重启 kafka 命令 linux 启动kafka_linux_03

linux 重启 kafka 命令 linux 启动kafka_java_04

如果看到的文件和上面的图片有不同的地方,有些没有的话,只需要添加上面展示的几个参数即可 先按 i 进入vim 的编辑模式 第一个:broker.id = 0 不变 第二个跟上面图片写一样的

listeners=PLAINTEXT://localhost:9092

这里使用的是localhost,自己有需求的话可以改成自己的ip地址

第三个是 kafka 日志的存储位置,可以根据自己的需求修改,最好是在安装目录下新建一个文件夹用于保存,例如:

mkdir /capaa/anti-mail/<kafka>/kafka_log

如果现在已经处在 kafka 的目录底下,则只需要执行下面的命令即可:

mkdir kafka_log

上面的 <kafka> 就是从 tgz 包中解压出来的文件夹名称,默认是和源文件名相同

第四个是 zookeeper 的配置,这里使用的是 kafka 自带的 zookeeper ,所以ip地址使用的localhost,如有不同的需求则可以修改这个ip,后面的端口号建议不做修改,如果需要修改的话请在所有步骤完成之后再统一做修改

修改完配置文件之后,先按 esc 退出编辑模式,再输入

:wq

保存并退出 vim 编辑器

回到 kafka 的文件夹下,再次输入命令:

vim config/zookeeper.properties

进入 zookeeper 的配置文件中

linux 重启 kafka 命令 linux 启动kafka_zookeeper_05

图中的四个位置需要修改,如果没有则自己添加 其中第一个 dataDir 为 zookeeper 相关配置存放的位置,建议在 kafka 的目录下新建一个 zookeeper 文件夹,专门用于存放 命令为:

mkdir /capaa/anti-mail/<kafka>/zookeeper

如果当前位置就在 kafka 的目录下,则可以直接使用下面的命令创建:

mkdir zookeeper

第二个 dataLogDir 为 zookeeper 存放日志的文件夹位置,和上面一样,可以建立一个专门的文件夹作为存放地址

mkdir zookeeper_log

第三个 clientPort 为 zookeeper 的端口号,建议不做修改 第四个 server.1 建议直接跟着写

server.1=localhostt:2888:3888

修改完毕使用

:wq

退出编辑

验证是否安装成功

在 kafka 的目录下,使用下面的命令,先启动 zookeeper

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

其中 -daemon 的意思是执行后台运行,不会占领命令行,可以继续在当前命令行上输入命令 这里在执行完毕之后,可以执行下面的命令查看 zookeeper 是否正常启动成功

sudo netstat -tulnp | grep 2181

如果出现

linux 重启 kafka 命令 linux 启动kafka_zookeeper_06

则说明 zookeeper 已经成功启动,如果什么都没出现,则说明没有启动成功

再启动 kafka ,因为 kafka 是需要 zookeeper 环境才能正常启动的

bin/kafka-server-start.sh -daemon config/server.properties

这里也可以使用下面的命令查看 kafka 是否成功启动

jps

如果出现

linux 重启 kafka 命令 linux 启动kafka_java_07

则说明 kafka 启动成功,如果没有 kafka 则说明没有启动成功

到这里验证完毕,使用下面的命令先停掉这两个服务

#停止kafka
bin/kafka-server-stop.sh
#停止zookeeper
bin/zookeeper-server-stop.sh

配置 sytemctl

进入 system 文件夹

cd /lib/systemd/system/

新建 kafka 的配置

vim kafka.service

进入之后按 i 进入编辑模式,输入下面配置

[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
Requires=network.target remote-fs.target
After=network.target remote-fs.target kafka-zookeeper.service

[Service]
Type=simple
User=root
Group=root
Environment="JAVA_HOME=/home/qipengshang/java/jdk1.8.0_161"
ExecStart=/capaa/anti-mail/kafka_2.12-3.4.0/bin/kafka-server-start.sh -daemon /capaa/anti-mail/kafka_2.12-3.4.0/config/server.properties
ExecStop=/capaa/anti-mail/kafka_2.12-3.4.0/bin/kafka-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

上面的 kafka-zookeeper.service 是后面要创建的 zookeeper 服务的名称 Environment 为 java 的安装位置,需要修改成自己的位置 ExecStart 为启动命令,可以直接复制上面测试的时候的启动命令 ExecStop 为停止命令,也可以直接复制上面的 其他就不需要做修改

然后使用

:wq

保存并退出

再执行命令

vim kafka-zookeeper.service

进入之后按 i 进入编辑模式,输入下面配置

[Unit]
Description=Apache Kafka Zookeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/capaa/anti-mail/kafka_2.12-3.4.0/bin/zookeeper-server-start.sh -daemon /capaa/anti-mail/kafka_2.12-3.4.0/config/zookeeper.properties
ExecStop=/capaa/anti-mail/kafka_2.12-3.4.0/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

跟上面的 kafka 配置一样,将启动命令和停止命令的路径修改成自己的即可

使用

:wq

保存并退出

然后使用下面的命令刷新 systemctl 的配置

systemctl daemon-reload

systemctl 测试

下面就可以进行 systemctl 的测试了 执行,启动 zookeeper

systemctl start kafka-zookeeper

启动 kafka

systemctl start kafka

使用下面的命令查看 zookeeper 是否成功启动

systemctl status kafka-zookeeper

如果出现

linux 重启 kafka 命令 linux 启动kafka_linux 重启 kafka 命令_08

则说明已经启动成功,如果出现的是其他的情况,则根据报错信息,进行相应的处理

执行

systemctl status kafka

查看 kafka 是否成功启动

出现

linux 重启 kafka 命令 linux 启动kafka_java_09

则说明启动成功 也可以使用

jps

查看,和验证是否安装成功那里一样

至此,kafka 已经成功配置进入 systemctl,可以在任意位置执行启动命令

配置开机自启

分别执行下面两个命令即可,

systemctl enable kafka-zookeeper

systemctl enable kafka

拓展

每次启动 kafka 都要记着先启动 zookeeper 未免有些麻烦 可以编写一个脚本来控制 kafka 的启动,停止,重启 在 kafka 的安装目录下,移动到 创建一个 kafka-start.sh 脚本

vim kafka-start.sh

进入之后先按 i 进入编辑模式

#!/bin/sh
systemctl start kafka-zookeeper
sleep 1
systemctl start kafka

直接复制上面的进去 然后

:wq

保存并退出 再次创建一个 kafka-stop.sh 脚本

vim kafka-stop.sh
#!/bin/sh
systemctl stop kafka
sleep 1
systemctl stop kafka-zookeeper

在创建一个 kafka-restart.sh 脚本

vim kafka-restart.sh
#!/bin/sh
systemctl stop kafka
sleep 1
systemctl stop kafka-zookeeper
sleep 2
systemctl start kafka-zookeeper
sleep 1
systemctl start kafka

保存并退出之后 使用下面的命令,赋予上面三个文件可执行权限

chmod +x kafka-start.sh
chmod +x kafka-stop.sh
chmod +x kafka-restart.sh

现在就可以直接使用

sh kafka-start.sh

来启动 kafka 了,不需要考虑先启动 zookeeper 了,简化了流程

想要更加方便的话,可以将上面三个 sh 文件注册进入 linux 环境中,可以在任何位置直接使用命令启动,在 sh 文件所在的目录下执行下面的命令

sudo cp <filename>.sh /usr/local/bin/

上面的 <filename> 就是需要添加到环境中的脚本名称 然后再执行

source ~/.bashrc

使更改生效

到此为止,所有的内容完毕