一、安装前准备

  1. 安装Java环境
    Kafka依赖Java运行,推荐安装OpenJDK 8或11:
1
2
sudo apt update
sudo apt install openjdk-11-jdk # 或 openjdk-8-jdk

验证安装:

1
java -version

配置环境变量(如未自动配置):

1
2
echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc  # 根据实际路径调整
source ~/.bashrc
  1. 创建专用用户(可选)
    为安全起见,建议创建独立用户运行Kafka:
1
2
3
4
sudo useradd -m kafka
sudo passwd kafka
sudo adduser kafka sudo
su - kafka # 切换到kafka用户

二、下载与安装Kafka

  1. 下载Kafka二进制包
    访问Apache Kafka官网选择版本(推荐3.5.1或稳定版),下载并解压:
1
2
3
wget https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz
tar -xzf kafka_2.13-3.5.1.tgz
mv kafka_2.13-3.5.1 ~/kafka
  1. 配置环境变量(可选)
    将Kafka路径加入系统环境:
1
2
3
echo 'export KAFKA_HOME=~/kafka' >> ~/.bashrc
echo 'export PATH=$PATH:$KAFKA_HOME/bin' >> ~/.bashrc
source ~/.bashrc

三、配置与启动ZooKeeper

  1. 使用Kafka内置ZooKeeper
    Kafka自带ZooKeeper,适合单机测试:
1
2
cd ~/kafka
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties # 后台启动
验证ZooKeeper是否运行:
1
jps  # 应显示QuorumPeerMain进程
  1. 独立安装ZooKeeper(可选)
    若需独立部署,参考以下步骤:

    • 下载并解压ZooKeeper
    • 配置zoo.cfg文件(如数据目录和端口)
    • 启动服务:bin/zkServer.sh start

四、配置与启动Kafka

  1. 修改Kafka配置文件
    编辑~/kafka/config/server.properties
1
2
3
4
5
broker.id=0  # 集群中唯一ID
listeners=PLAINTEXT://0.0.0.0:9092 # 允许外部访问
log.dirs=/tmp/kafka-logs # 日志目录,建议修改为持久化路径
zookeeper.connect=localhost:2181 # ZooKeeper地址
delete.topic.enable=true # 允许删除主题
  1. 启动Kafka服务
1
bin/kafka-server-start.sh -daemon config/server.properties  # 后台启动

验证端口是否监听:

1
netstat -tunlp | grep 9092

五、测试Kafka功能

  1. 创建测试主题
1
bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --topic test-topic --partitions 1 --replication-factor 1
  1. 启动生产者与消费者
  • 生产者
1
bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic
  • 消费者
1
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning

输入消息后,消费者应能实时接收。


六、服务管理(Systemd集成)

  1. 创建Systemd服务文件
    为ZooKeeper和Kafka分别创建服务:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 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

启用服务:

1
2
3
sudo systemctl daemon-reload
sudo systemctl start kafka
sudo systemctl enable kafka

七、常见问题与优化

  1. 内存不足错误
    修改bin/kafka-server-start.sh中的堆内存参数:
1
export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"  # 根据机器配置调整
  1. 防火墙配置
    开放ZooKeeper(2181)和Kafka(9092)端口:
1
2
sudo ufw allow 2181/tcp
sudo ufw allow 9092/tcp
  1. 集群部署(可选)
    修改server.properties中的broker.idlistenersadvertised.listeners,确保各节点ZooKeeper连接一致。

八、扩展工具(可选)

  • KafkaT:通过Ruby Gem安装,用于集群管理:
1
2
sudo apt install ruby ruby-dev
sudo gem install kafkat

通过以上步骤,您可以在Ubuntu系统上完成Kafka的安装与基础配置。如需更详细配置(如SSL加密、监控工具),请参考Kafka官方文档或相关来源。