news 2026/4/3 3:14:06

HoRain云--CentOS7部署Kafka超详细指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--CentOS7部署Kafka超详细指南

🎬 HoRain 云小助手:个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

🎯 部署流程一览

🔧 环境准备与JDK安装

📦 部署ZooKeeper(传统模式)

🚀 部署Kafka服务

⚡ 使用KRaft模式部署(无需ZooKeeper)

🧪 测试验证

🛡️ 安全加固与监控(可选)


在 CentOS 7 上部署 Kafka 确实需要关注一些细节配置。下面这份超详细指南将带你完成从环境准备到验证测试的全过程,并涵盖了单机和集群两种部署方式。

🎯 部署流程一览

部署 Kafka 的核心步骤清晰明了。无论是选择传统的 ZooKeeper 模式还是新的 KRaft 模式,其主干流程如下,帮你快速建立整体认知:

flowchart TD A[准备CentOS 7环境] --> B{选择部署模式} B -- 传统模式 --> C[安装JDK] B -- KRaft模式 --> C C --> D{继续基于模式选择} D -- 传统模式 --> E[部署ZooKeeper] D -- KRaft模式 --> F[生成集群ID并格式化存储] E --> G[配置与启动Kafka] F --> G G --> H[测试与验证] H --> I[可选:安全加固与监控]

🔧 环境准备与JDK安装

  1. 系统基础检查与配置

  2. 安装JDK

    Kafka 运行需要 Java 环境。推荐安装 OpenJDK 8 或 11 。

    # 安装OpenJDK 8 sudo yum install -y java-1.8.0-openjdk-devel # 验证安装 java -version

    配置环境变量,编辑/etc/profile文件,在末尾添加:

    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk export PATH=$PATH:$JAVA_HOME/bin

    使环境变量生效:source /etc/profile

📦 部署ZooKeeper(传统模式)

对于 Kafka 3.5.1 之前的版本或希望保持稳定性的生产环境,通常需要先部署 ZooKeeper 集群(单机测试可使用Kafka内置的ZooKeeper)。

  1. 下载并解压Kafka(Kafka内置ZooKeeper)

    wget https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz sudo tar -zxvf kafka_2.13-3.6.1.tgz -C /usr/local/ sudo mv /usr/local/kafka_2.13-3.6.1 /usr/local/kafka
  2. 配置ZooKeeper

    sudo mkdir -p /usr/local/kafka/data/zookeeper sudo vi /usr/local/kafka/config/zookeeper.properties

    关键配置如下 :

    dataDir=/usr/local/kafka/data/zookeeper clientPort=2181 maxClientCnxns=100 # 如果是ZooKeeper集群,需要添加如下配置,并创建myid文件 # server.1=kafka-node1:2888:3888 # server.2=kafka-node2:2888:3888 # server.3=kafka-node3:2888:3888
  3. 启动ZooKeeper

    cd /usr/local/kafka sudo bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

    使用jps命令查看进程,如果看到QuorumPeerMain表示启动成功 。

🚀 部署Kafka服务

  1. 配置Kafka

    编辑server.properties文件 。

    sudo mkdir -p /usr/local/kafka/data/kafka-logs sudo vi /usr/local/kafka/config/server.properties

    核心配置项(单机版)​ :

    <table>

    <thead><tr><th>配置项</th><th>说明</th><th>示例值(单机)</th></tr></thead>

    <tbody>

    <tr><td>broker.id</td><td>Broker的唯一标识,集群中必须唯一。</td><td>0</td></tr>

    <tr><td>listeners</td><td>监听地址,告诉Kafka绑定哪个网络接口和端口。</td><td>[object Object]</td></tr>

    <tr><td>advertised.listeners</td><td>非常重要:客户端或其他Broker连接时用的地址。如果服务器有公网IP或需要外部访问,务必设置为本机真实IP或主机名,不能是0.0.0.0。</td><td>PLAINTEXT://你的服务器IP:9092</td></tr>

    <tr><td>log.dirs</td><td>Kafka日志(实际是数据)的存储目录。</td><td>/usr/local/kafka/data/kafka-logs</td></tr>

    <tr><td>zookeeper.connect</td><td>ZooKeeper连接地址。单机本地就是localhost,集群用逗号分隔。</td><td>localhost:2181</td></tr>

    <tr><td>num.partitions</td><td>创建Topic时默认的分区数。</td><td>1</td></tr>

    </tbody>

    </table>

    集群配置补充:若部署三节点集群,每个节点的server.properties需做如下调整 :

    # 节点1 (kafka-node1) broker.id=0 advertised.listeners=PLAINTEXT://kafka-node1:9092 zookeeper.connect=kafka-node1:2181,kafka-node2:2181,kafka-node3:2181 # 节点2 (kafka-node2) broker.id=1 advertised.listeners=PLAINTEXT://kafka-node2:9092 zookeeper.connect=kafka-node1:2181,kafka-node2:2181,kafka-node3:2181 # 节点3 (kafka-node3) broker.id=2 advertised.listeners=PLAINTEXT://kafka-node3:9092 zookeeper.connect=kafka-node1:2181,kafka-node2:2181,kafka-node3:2181
  2. 启动Kafka

    cd /usr/local/kafka # 前台启动,方便看日志调试 sudo bin/kafka-server-start.sh config/server.properties # 或后台启动,使用 -daemon 参数 sudo bin/kafka-server-start.sh -daemon config/server.properties

⚡ 使用KRaft模式部署(无需ZooKeeper)

Kafka 从3.0版本开始,正式支持 KRaft 模式,不再依赖 ZooKeeper,简化了部署和运维 。

  1. 生成集群ID

    cd /usr/local/kafka sudo bin/kafka-storage.sh random-uuid # 会输出一个UUID,如 abc12345-6789-0def-ghij-klmnopqrstuv,记录下来。
  2. 格式化存储目录

    sudo bin/kafka-storage.sh format -t 生成的UUID -c config/kraft/server.properties
  3. 配置KRaft模式

    编辑config/kraft/server.properties文件 。

    node.id=1 process.roles=controller,broker controller.quorum.voters=1@你的服务器IP:9093 listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093 advertised.listeners=PLAINTEXT://你的服务器IP:9092 log.dirs=/usr/local/kafka/data/kraft-logs
  4. 启动Kafka(KRaft模式)

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

🧪 测试验证

无论哪种模式,部署成功后都需测试。

  1. 创建Topic

    cd /usr/local/kafka bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic
  2. 产生消息

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

    命令行会等待输入,输入几条测试消息,如Hello Kafka!

  3. 消费消息

    另开一个终端,执行:

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

    如果能成功看到之前产生的消息,恭喜你,Kafka已经成功安装并运行 !

🛡️ 安全加固与监控(可选)

希望这份详细的教程能帮助你在CentOS 7上顺利部署Kafka!如果在具体操作中遇到问题,可以参考文中引用的官方文档和社区资源。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/1 5:32:08

【Python类型判断终极指南】:3种高效方法识别list与dict类型

第一章&#xff1a;Python类型判断的核心概念 在Python编程中&#xff0c;类型判断是确保数据正确处理的关键环节。由于Python是一种动态类型语言&#xff0c;变量的类型在运行时才被确定&#xff0c;因此掌握类型判断的方法对于编写健壮的程序至关重要。 内置函数 type() 的使…

作者头像 李华
网站建设 2026/3/30 12:19:12

提升生成多样性:Qwen随机种子控制实战教程

提升生成多样性&#xff1a;Qwen随机种子控制实战教程 你有没有遇到过这种情况&#xff1a;用AI生成图片时&#xff0c;明明输入了不同的描述&#xff0c;可出来的结果却总是“千篇一律”&#xff1f;尤其是在为孩子创作可爱动物形象时&#xff0c;我们希望每一张图都充满惊喜…

作者头像 李华
网站建设 2026/4/1 3:07:07

Open-AutoGLM安全机制揭秘:敏感操作会主动确认

Open-AutoGLM安全机制揭秘&#xff1a;敏感操作会主动确认 1. 引言&#xff1a;当AI开始操控你的手机&#xff0c;安全如何保障&#xff1f; 你有没有想过&#xff0c;有一天只需说一句“帮我打开小红书&#xff0c;搜一下周末适合拍照的咖啡馆”&#xff0c;手机就会自动完成…

作者头像 李华
网站建设 2026/4/1 4:00:33

Qwen3-1.7B + vLLM:高性能推理部署方案

Qwen3-1.7B vLLM&#xff1a;高性能推理部署方案 1. 引言&#xff1a;轻量模型也能高效推理 在大模型时代&#xff0c;性能与资源消耗往往成正比。然而&#xff0c;随着边缘计算和本地化部署需求的激增&#xff0c;如何在有限硬件条件下实现高质量、低延迟的AI推理&#xff…

作者头像 李华
网站建设 2026/3/27 19:10:46

如何打造个性化语音?基于LLaSA和CosyVoice2的合成实践

如何打造个性化语音&#xff1f;基于LLaSA和CosyVoice2的合成实践 你有没有想过&#xff0c;能用一句话就“捏”出一个专属声音&#xff1f;不是简单的变声器&#xff0c;而是让AI根据你的描述&#xff0c;生成一个有性格、有情绪、有辨识度的真人级语音。这不再是科幻电影里的…

作者头像 李华