温馨提示×

Kafka消息队列Ubuntu上怎么用

小樊
33
2025-12-25 03:37:15
栏目: 智能运维

在 Ubuntu 上使用 Kafka 的快速上手指南

一 环境准备

  • 安装 Java(Kafka 需要 Java 8 或 11):sudo apt update && sudo apt install -y openjdk-11-jdk;验证:java -version。建议系统空闲内存 ≥4GB、可用磁盘 ≥10GB。如使用防火墙,放行端口 2181(Zookeeper)与 9092(Kafka):sudo ufw allow 2181,9092/tcp(或 firewalld 对应命令)。如使用云服务器,还需在云安全组放行相同端口。

二 安装与配置

  • 下载并解压(以 3.5.0 为例,可替换为最新稳定版):wget https://downloads.apache.org/kafka/3.5.0/kafka_2.13-3.5.0.tgz && tar -xzf kafka_2.13-3.5.0.tgz && cd kafka_2.13-3.5.0。
  • 配置 Zookeeper(单机可用内置):编辑 config/zookeeper.properties,常用项:dataDir=/tmp/zookeeper,clientPort=2181
  • 配置 Kafka Broker:编辑 config/server.properties,常用项:broker.id=0;listeners=PLAINTEXT://:9092;advertised.listeners=PLAINTEXT://[服务器IP]:9092(远程访问必填服务器本机 IP);log.dirs=/tmp/kafka-logs(建议改为持久目录如 /data/kafka);num.partitions=1;offset.topic.replication.factor=1;transaction.state.log.replication.factor=1

三 启动与验证

  • 启动服务(建议后台运行):先启动 Zookeeper:bin/zookeeper-server-start.sh -daemon config/zookeeper.properties;再启动 Kafka:bin/kafka-server-start.sh config/server.properties &。
  • 创建测试 Topic:bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
  • 发送与消费消息:生产者 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test;消费者 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning。若能正常收到消息,说明环境可用。

四 常见问题与优化

  • 端口冲突:Address already in use。排查:ss -ltnp | grep 90922181;结束占用进程或调整配置端口后重启。
  • 远程连不上:检查 advertised.listeners 是否为服务器 本机IP:9092,云主机需放通安全组与防火墙;本机测试可用 localhost。
  • 内存不足:编辑 bin/kafka-server-start.sh,设置 export KAFKA_HEAP_OPTS=“-Xms2G -Xmx2G”(按机器内存调整)。
  • 日志与数据目录:将 log.dirs 改为持久路径(如 /data/kafka),并确保目录存在且权限正确;Zookeeper 的 dataDir 也建议持久化。
  • Topic 分区扩容:bin/kafka-topics.sh --alter --bootstrap-server localhost:9092 --partitions 3 --topic test(注意:分区数只能增不能减)。

五 进阶 作为系统服务运行

  • 创建 systemd 单元(以 kafka 用户为例):/etc/systemd/system/zookeeper.service 与 /etc/systemd/system/kafka.service,分别配置 ExecStart 指向安装目录下的启动脚本,Kafka 单元 After=zookeeper.service。启用与启动:sudo systemctl daemon-reload && sudo systemctl enable --now zookeeper && sudo systemctl enable --now kafka。查看日志:journalctl -u kafka -f。

0