温馨提示×

kafka在ubuntu上如何部署配置

小樊
33
2025-11-29 13:31:58
栏目: 智能运维

在 Ubuntu 上部署与配置 Apache Kafka

一 环境准备与安装

  • 安装 Java(推荐 OpenJDK 11):
    • 执行:sudo apt update && sudo apt install openjdk-11-jdk -y
    • 验证:java -version
  • 下载并解压 Kafka(示例版本 3.5.1,Scala 版本 2.13):
    • 执行: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
    • 移动:sudo mv kafka_2.13-3.5.1 /usr/local/kafka
  • 可选环境变量(便于全局使用命令):
    • 执行:echo 'export KAFKA_HOME=/usr/local/kafka' >> ~/.bashrc
    • 执行:echo 'export PATH=$PATH:$KAFKA_HOME/bin' >> ~/.bashrc
    • 生效:source ~/.bashrc
  • 说明:Kafka 依赖 ZooKeeper 管理元数据。以下先以 Kafka 发行包内自带的 ZooKeeper 演示单机部署。

二 配置与启动

  • 启动 ZooKeeper(前台运行,新终端):
    • 执行:/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
  • 配置 Kafka(编辑 config/server.properties):
    • 建议至少设置:
      • broker.id=0
      • listeners=PLAINTEXT://0.0.0.0:9092
      • advertised.listeners=PLAINTEXT://<服务器公网或内网IP>:9092
      • log.dirs=/var/lib/kafka/logs(确保目录存在并可写)
      • zookeeper.connect=localhost:2181
  • 启动 Kafka(前台运行,新终端):
    • 执行:/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
  • 验证端口监听:
    • 执行:sudo netstat -tulnp | grep 9092 应看到 :9092 处于监听状态。

三 基础功能测试

  • 创建测试 Topic(Kafka 3.x 推荐用 --bootstrap-server):
    • 执行:/usr/local/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
  • 列出 Topic:
    • 执行:/usr/local/kafka/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
  • 启动控制台生产者并发送消息:
    • 执行:/usr/local/kafka/bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test
  • 启动控制台消费者接收消息(另开终端):
    • 执行:/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
  • 若使用旧版工具或脚本仍指向 ZooKeeper,也可用:--zookeeper localhost:2181(不推荐长期使用)。

四 生产环境建议

  • 使用系统服务管理(systemd)实现后台与开机自启:
    • 建议为 ZooKeeperKafka 分别创建服务文件(示例路径与 ExecStart 可按实际安装位置调整),设置 After=network.targetRestart=on-failure 等,然后执行 sudo systemctl daemon-reload && sudo systemctl enable --now zookeeper kafka
  • 防火墙放行端口:
    • 执行:sudo ufw allow 2181/tcpsudo ufw allow 9092/tcp,并 sudo ufw reload
  • 目录与权限:
    • log.dirs 指向持久化目录(如 /var/lib/kafka/logs),并确保运行 Kafka 的用户对该目录拥有读写权限。
  • 远程访问与 advertised.listeners:
    • listeners 设为 0.0.0.0:9092advertised.listeners 设为服务器的 公网或内网 IP:9092,否则外部客户端可能无法连接。
  • JVM 与性能调优(示例):
    • 堆内存:export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"
    • 关键性能项:num.network.threadsnum.io.threadsbatch.sizelinger.msmessage.max.byteslog.retention.hoursdefault.replication.factornum.partitions(按业务与硬件酌情调整)。

五 常见问题排查

  • 无法远程连接:检查云服务器安全组/本机防火墙是否放行 9092,并确认 advertised.listeners 配置为客户端可达的 IP:9092
  • Topic 命令报错:Kafka 3.x 创建/列举 Topic 优先使用 --bootstrap-server localhost:9092;旧脚本使用 --zookeeper localhost:2181 仅作兼容。
  • 端口未监听:执行 sudo netstat -tulnp | grep 9092 检查 9092 是否被 Kafka 占用,若未占用请检查 server.propertieslisteners 与日志报错。
  • 日志与诊断:查看 Kafka 日志 tail -f logs/server.log,关注启动报错、磁盘空间、ZooKeeper 连通性等关键信息。

0