以下是针对Ubuntu系统安装Apache Kafka的详细教程,整合了多个可靠来源的最佳实践,并标注了关键注意事项:


一、安装前准备

  1. 安装Java环境
    Kafka依赖Java运行,推荐安装OpenJDK 8或11:

    sudo apt update
    sudo apt install openjdk-11-jdk  # 或 openjdk-8-jdk
    

    验证安装:

    java -version
    

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

    echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc  # 根据实际路径调整
    source ~/.bashrc
    
  2. 创建专用用户(可选)
    为安全起见,建议创建独立用户运行Kafka:

    sudo useradd -m kafka
    sudo passwd kafka
    sudo adduser kafka sudo
    su - kafka  # 切换到kafka用户
    

二、下载与安装Kafka

  1. 下载Kafka二进制包
    访问Apache Kafka官网选择版本(推荐3.5.1或稳定版),下载并解压:

    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
    
  2. 配置环境变量(可选)
    将Kafka路径加入系统环境:

    echo 'export KAFKA_HOME=~/kafka' >> ~/.bashrc
    echo 'export PATH=$PATH:$KAFKA_HOME/bin' >> ~/.bashrc
    source ~/.bashrc
    

三、配置与启动ZooKeeper

  1. 使用Kafka内置ZooKeeper
    Kafka自带ZooKeeper,适合单机测试:

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

    验证ZooKeeper是否运行:

    jps  # 应显示QuorumPeerMain进程
    
  2. 独立安装ZooKeeper(可选)
    若需独立部署,参考以下步骤:

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

四、配置与启动Kafka

  1. 修改Kafka配置文件
    编辑~/kafka/config/server.properties:

    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  # 允许删除主题
    
  2. 启动Kafka服务

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

    验证端口是否监听:

    netstat -tunlp | grep 9092
    

五、测试Kafka功能

  1. 创建测试主题

    bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --topic test-topic --partitions 1 --replication-factor 1
    
  2. 启动生产者与消费者

    • 生产者:
      bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic
      
    • 消费者:
      bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
      

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


六、服务管理(Systemd集成)

  1. 创建Systemd服务文件
    为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
    
    启用服务:
    sudo systemctl daemon-reload
    sudo systemctl start kafka
    sudo systemctl enable kafka
    

七、常见问题与优化

  1. 内存不足错误
    修改bin/kafka-server-start.sh中的堆内存参数:

    export KAFKA_HEAP_OPTS="-Xmx256M -Xms128M"  # 根据机器配置调整
    
  2. 防火墙配置
    开放ZooKeeper(2181)和Kafka(9092)端口:

    sudo ufw allow 2181/tcp
    sudo ufw allow 9092/tcp
    
  3. 集群部署(可选)
    修改server.properties中的broker.id、listeners和advertised.listeners,确保各节点ZooKeeper连接一致。


八、扩展工具(可选)

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

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

更多推荐