服务器Kafka教程:单机部署、启动验证与常见报错处理

在 Linux 服务器上部署单机 Kafka,核心就三步:装好 JDK、用 KRaft 模式配置 Kafka、启动后通过创建主题和收发消息验证。
下面按顺序给出可直接照做的命令和配置,环境以常见的 Linux 发行版为例,Kafka 版本以你下载的实际版本为准。

准备条件与版本确认

Kafka 依赖 Java 运行环境,先确认服务器是否已安装 JDK。

java -version

如果提示找不到命令,需要先装 JDK。
以 OpenJDK 11 为例:

# Debian/Ubuntu 系
sudo apt update
sudo apt install -y openjdk-11-jdk

# CentOS/RHEL 系
sudo yum install -y java-11-openjdk

装完再执行 java -version,能输出版本号即可。
建议服务器内存不低于 2GB,Kafka 和 ZooKeeper/KRaft 元数据进程会占用一定内存。

下载 Kafka 二进制包时,建议从官方网站获取,命令中的版本号请替换为实际下载的版本:

cd /opt
sudo wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
sudo tar -xzf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 kafka

如果服务器无法直接访问外网,可先在本地下载再用 scp 上传。

配置 KRaft 模式并启动

较新的 Kafka 版本已经支持用 KRaft 模式替代 ZooKeeper,单机部署更简单。
进入配置目录:

cd /opt/kafka/config/kraft
ls

通常会看到 server.properties。
先为这个节点生成一个集群 ID:

cd /opt/kafka
bin/kafka-storage.sh random-uuid

命令会输出一串 UUID,把它记下来,然后格式化存储目录:

bin/kafka-storage.sh format -t 你生成的UUID -c config/kraft/server.properties

格式化成功后,启动 Kafka:

bin/kafka-server-start.sh -daemon config/kraft/server.properties

加 -daemon 表示后台运行。
启动后检查进程和端口:

jps
ss -tlnp | grep 9092

如果 jps 能看到 Kafka 进程,并且 9092 端口处于监听状态,说明服务已经起来。

用主题和消息验证是否可用

服务启动不代表队列能正常读写,建议实际创建一个主题并收发一条消息。

创建主题:

bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1

查看主题列表:

bin/kafka-topics.sh --list --bootstrap-server localhost:9092

能列出 test-topic 即创建成功。
接着开一个生产者发送消息:

bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092

输入任意一行文字后回车,再按 Ctrl+C 退出。
另开一个终端启动消费者:

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

如果能看到刚才发送的内容,说明生产、存储、消费链路正常。
验证完可按 Ctrl+C 退出消费者。

常见报错与避坑提醒

启动失败时,优先看日志而不是反复重启:

tail -n 100 /opt/kafka/logs/server.log

几个高频问题:

  • 端口被占用:9092 被其他程序占用时,可在 server.properties 中修改 listeners 和 advertised.listeners 的端口,再重启。
  • 内存不足:如果进程启动后立刻退出,检查 KAFKA_HEAP_OPTS 或启动脚本中的堆内存设置,小内存机器可适当调低。
  • 重复格式化:kafka-storage.sh format 对已有数据的目录重复执行可能导致数据异常,格式化前确认目录为空或已备份。
  • 防火墙未放行:本机验证用 localhost 通常不受影响,但远程客户端连接需要放行对应端口。
  • 监听地址写错:advertised.listeners 必须是客户端能访问到的地址,写 localhost 时远程机器连不上。

修改任何配置后都需要重启 Kafka 才能生效。

生产环境还要注意什么

单机部署适合学习和测试,正式环境要考虑副本、磁盘和监控。
Kafka 默认会把消息写到 log.dirs 指定的目录,磁盘写满会导致服务异常,建议单独挂载数据盘并设置清理策略。

如果只是本地开发验证,上面的单机 KRaft 方案已经够用;
如果要做高可用,需要规划多节点集群和副本因子,这属于更进一步的部署内容。
遇到启动或收发消息异常时,先回到日志和端口检查这两步,多数问题能定位到具体原因。

分享到:
上一篇
服务器 Fluentd 教程:从安装到日志转发验证
下一篇
服务器上部署RabbitMQ并配置远程访问
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意