Ubuntu系统下单机Kafka部署全攻略

一、引言

Kafka作为一款高性能的分布式流处理平台,广泛应用于日志收集、实时分析等场景。在开发测试阶段,单机部署Kafka能快速搭建环境,验证业务逻辑。本文将详细介绍在Ubuntu系统上如何部署单机版Kafka,涵盖环境准备、安装配置、启动验证及常见问题解决等关键步骤。

二、环境准备

1. 系统要求

Ubuntu 20.04 LTS或更高版本,推荐使用64位系统,确保内存充足(至少4GB)。

2. 安装Java环境

Kafka依赖Java运行环境,推荐安装OpenJDK 11或更高版本。

  1. # 更新软件包索引
  2. sudo apt update
  3. # 安装OpenJDK 11
  4. sudo apt install openjdk-11-jdk
  5. # 验证安装
  6. java -version

3. 安装Zookeeper(可选)

Kafka 3.x版本后支持内置Zookeeper,但单机部署时,仍可使用独立Zookeeper以简化管理。若选择独立安装:

  1. # 下载Zookeeper
  2. wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
  3. # 解压
  4. tar -xzf apache-zookeeper-3.7.0-bin.tar.gz -C /opt
  5. # 创建数据目录
  6. sudo mkdir -p /var/lib/zookeeper
  7. # 配置Zookeeper(修改conf/zoo.cfg)
  8. echo "
  9. tickTime=2000
  10. dataDir=/var/lib/zookeeper
  11. clientPort=2181
  12. " | sudo tee /opt/apache-zookeeper-3.7.0-bin/conf/zoo.cfg
  13. # 启动Zookeeper
  14. /opt/apache-zookeeper-3.7.0-bin/bin/zkServer.sh start

三、安装Kafka

1. 下载Kafka

  1. # 下载Kafka(以3.6.0版本为例)
  2. wget https://archive.apache.org/dist/kafka/3.6.0/kafka-3.6.0-src.tgz
  3. # 解压
  4. tar -xzf kafka-3.6.0-src.tgz -C /opt
  5. # 重命名目录(可选)
  6. sudo mv /opt/kafka-3.6.0-src /opt/kafka

2. 配置Kafka

编辑/opt/kafka/config/server.properties,修改以下关键参数:

  1. # 监听地址(0.0.0.0允许外部访问)
  2. listeners=PLAINTEXT://:9092
  3. # 广告地址(若通过域名访问,需设置)
  4. advertised.listeners=PLAINTEXT://your-server-ip:9092
  5. # 日志目录
  6. log.dirs=/tmp/kafka-logs
  7. # Zookeeper连接(若使用独立Zookeeper)
  8. zookeeper.connect=localhost:2181
  9. # 单机模式可关闭副本同步(生产环境需开启)
  10. offsets.topic.replication.factor=1
  11. transaction.state.log.replication.factor=1
  12. transaction.state.log.min.isr=1

3. 启动Kafka

  1. # 启动Kafka(后台运行)
  2. nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties > /tmp/kafka.log 2>&1 &
  3. # 验证进程
  4. ps aux | grep kafka

四、验证部署

1. 创建Topic

  1. /opt/kafka/bin/kafka-topics.sh --create \
  2. --topic test-topic \
  3. --bootstrap-server localhost:9092 \
  4. --partitions 1 \
  5. --replication-factor 1

2. 发送消息

  1. /opt/kafka/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
  2. # 输入任意消息后按Ctrl+D退出

3. 消费消息

  1. /opt/kafka/bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092

五、常见问题解决

1. 端口冲突

若9092端口被占用,修改server.properties中的listeners为其他端口(如9093),并同步更新advertised.listeners

2. 日志目录权限

确保Kafka用户对log.dirs有读写权限:

  1. sudo chown -R $(whoami):$(whoami) /tmp/kafka-logs

3. 内存不足

若启动失败提示内存不足,编辑/opt/kafka/bin/kafka-server-start.sh,调整KAFKA_HEAP_OPTS

  1. export KAFKA_HEAP_OPTS="-Xms512m -Xmx1g"

4. 防火墙配置

若需远程访问,开放9092端口:

  1. sudo ufw allow 9092/tcp
  2. sudo ufw reload

六、优化建议

  1. 日志轮转:配置log4j.properties限制日志大小,避免磁盘占满。
  2. 监控集成:使用JMX导出指标,结合Prometheus+Grafana监控。
  3. 数据持久化:将log.dirs指向独立磁盘,提高I/O性能。
  4. 版本升级:定期检查Kafka官方安全更新,及时升级。

七、总结

本文详细介绍了在Ubuntu系统上部署单机版Kafka的全流程,从环境准备、安装配置到验证优化,覆盖了关键步骤和常见问题。通过本文,开发者可快速搭建Kafka环境,为后续开发测试提供基础支持。单机部署虽简单,但生产环境需考虑高可用、性能调优等复杂因素,建议根据实际需求选择合适的部署方案。