1、下载安装包

https://archive.apache.org/dist/kafka/2.4.1/kafka_2.11-2.4.1.tgz

2、上传解压缩

上传到服务器,使用命令解压缩。

sudo tar -zxf kafka_2.11-2.4.1.tgz -C /usr/local/

3、配置远程访问

涉及到两个程序,分别是zookeeper和kafka,kafka的配置文件在config/server.properties

需要修改两个地方,把框出来的两个地方注释取消,ip换成服务器的IP

# The address the socket server listens on. It will get the value returned from 
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
listeners=PLAINTEXT://192.168.31.203:9092

# Hostname and port the broker will advertise to producers and consumers. If not set, 
# it uses the value for "listeners" if configured.  Otherwise, it will use the value
# returned from java.net.InetAddress.getCanonicalHostName().
advertised.listeners=PLAINTEXT://192.168.31.203:9092

4、运行程序及测试

首先检查是否有java环境,没有的话安装一个

apt install openjdk-17-jdk-headless

先启动zookeeper,命令如下:

bin/zookeeper-server-start.sh config/zookeeper.properties & jps

bin/zookeeper-server-start.sh -daemon config/zookeeper.properties  # 后台启动

再启动kafka,命令如下:

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

bin/kafka-server-start.sh -daemon config/server.properties  # 后台启动

使用jps命令检查是否启动成功:

使用命令创建一个topic,并测试

bin/kafka-topics.sh --create \
  --zookeeper localhost:2181 \
  --replication-factor 1 \
  --partitions 1 \
  --topic mytopic

查看topic列表:

bin/kafka-topics.sh --list --zookeeper localhost:2181
# 输出示例:mytopic

5、测试访问

6、设置为系统服务(未成功

实际使用中出现问题,zookeeper服务经常会关闭,所以给他配置为系统服务。

为ZooKeeper和Kafka分别创建服务:

# ZooKeeper服务(/etc/systemd/system/zookeeper.service)
[Unit]
Requires=network.target
After=network.target

[Service]
Type=simple
User=kafka
ExecStart=~/kafka/bin/zookeeper-server-start.sh ~/kafka/config/zookeeper.properties
ExecStop=~/kafka/bin/zookeeper-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

# Kafka服务(/etc/systemd/system/kafka.service)
[Unit]
Requires=zookeeper.service
After=zookeeper.service

[Service]
Type=simple
User=kafka
ExecStart=~/kafka/bin/kafka-server-start.sh ~/kafka/config/server.properties
ExecStop=~/kafka/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target