一、安装前准备
- 安装Java环境
Kafka依赖Java运行,推荐安装OpenJDK 8或11:
1 2
| sudo apt update sudo apt install openjdk-11-jdk
|
验证安装:
配置环境变量(如未自动配置):
1 2
| echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc source ~/.bashrc
|
- 创建专用用户(可选)
为安全起见,建议创建独立用户运行Kafka:
1 2 3 4
| sudo useradd -m kafka sudo passwd kafka sudo adduser kafka sudo su - kafka
|
二、下载与安装Kafka
- 下载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
|
- 配置环境变量(可选)
将Kafka路径加入系统环境:
1 2 3
| echo 'export KAFKA_HOME=~/kafka' >> ~/.bashrc echo 'export PATH=$PATH:$KAFKA_HOME/bin' >> ~/.bashrc source ~/.bashrc
|
三、配置与启动ZooKeeper
- 使用Kafka内置ZooKeeper
Kafka自带ZooKeeper,适合单机测试:
1 2
| cd ~/kafka bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
|
验证ZooKeeper是否运行:
独立安装ZooKeeper(可选)
若需独立部署,参考以下步骤:
- 下载并解压ZooKeeper
- 配置
zoo.cfg文件(如数据目录和端口) - 启动服务:
bin/zkServer.sh start
四、配置与启动Kafka
- 修改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 # 允许删除主题
|
- 启动Kafka服务
1
| bin/kafka-server-start.sh -daemon config/server.properties
|
验证端口是否监听:
1
| netstat -tunlp | grep 9092
|
五、测试Kafka功能
- 创建测试主题
1
| bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --topic test-topic --partitions 1 --replication-factor 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集成)
- 创建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
|
七、常见问题与优化
- 内存不足错误
修改bin/kafka-server-start.sh中的堆内存参数:
1
| export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"
|
- 防火墙配置
开放ZooKeeper(2181)和Kafka(9092)端口:
1 2
| sudo ufw allow 2181/tcp sudo ufw allow 9092/tcp
|
- 集群部署(可选)
修改server.properties中的broker.id、listeners和advertised.listeners,确保各节点ZooKeeper连接一致。
八、扩展工具(可选)
- KafkaT:通过Ruby Gem安装,用于集群管理:
1 2
| sudo apt install ruby ruby-dev sudo gem install kafkat
|
通过以上步骤,您可以在Ubuntu系统上完成Kafka的安装与基础配置。如需更详细配置(如SSL加密、监控工具),请参考Kafka官方文档或相关来源。