ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

linux-tutorial 仓库实战:Apache Kafka 单机与集群安装部署全流程指南

2026/9/17 6:34:39 拓冰建站 浏览量
linux-tutorial 仓库实战:Apache Kafka 单机与集群安装部署全流程指南 linux-tutorial 仓库实战Apache Kafka 单机与集群安装部署全流程指南【免费下载链接】linux-tutorial:penguin: Linux教程主要内容Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial本文以开源仓库 linux-tutorial 中的 Kafka 安装部署文档 为骨架完整讲解 Kafka 在 Linux 环境下的下载解压、依赖准备、单节点启动、主题管理、生产消费验证与多 Broker 集群部署并结合仓库配套安装脚本 kafka-install.sh 与 zookeeper-install.sh 给出可一键落地的自动化安装方案。读完本文你将掌握 Kafka 从零到集群运行、再到生产消费验证的完整动手能力。环境要求Kafka 是一个基于 JVM 的分布式消息队列中间件在安装之前需要确认以下两项依赖是否就绪JDK8Kafka Broker、命令行工具均运行在 JVM 之上需要 JDK 8 或以上版本ZooKeeperKafka 依赖 ZooKeeper 保存 Broker 元数据、管理 Topic 与分区状态注意Kafka 2.8 之前强制依赖 ZooKeeper本仓库部署的 1.x/2.x 版本均属此类。针对 JDK 依赖仓库提供了两种落地方式在 JDK 安装文档 中给出了下载 tar.gz 后配置JAVA_HOME、CLASSPATH、PATH环境变量的完整步骤在 RedHat 系发行版上可直接执行仓库脚本 jdk8-install.sh脚本会通过yum -y install java-1.8.0-openjdk-devel.x86_64安装 OpenJDK 8随后执行java -version验证是否安装成功。# 验证 Java 环境 java -version对于 ZooKeeper仓库同样提供了自动安装脚本 zookeeper-install.sh默认下载 ZooKeeper3.4.12并解压到/opt/zookeeper用法如下# 默认安装 zookeeper 3.4.12 到 /opt/zookeeper sh zookeeper-install.sh # 自定义版本与安装路径 sh zookeeper-install.sh 3.4.12 /opt/zookeeper下载解压进入 Apache Kafka 官方下载页根据操作系统与 Scala 版本选择合适的分发包本仓库安装脚本使用的是kafka_2.12-2.2.0.tgz即 Kafka 2.2.0 基于 Scala 2.12 编译的二进制包。下载并解压到本地tar -xzf kafka_2.11-1.1.0.tgz cd kafka_2.11-1.1.0解压后目录中的关键内容如下bin/Kafka 自带的服务端与命令行工具脚本config/server.propertiesBroker 配置、zookeeper.propertiesZooKeeper 配置等libs/Kafka 运行所需的依赖 Jar 包。使用仓库脚本一键安装如果不想手动下载解压可以直接使用仓库中的 kafka-install.sh 完成安装。该脚本具备以下特点启动前先通过command -v java检查 JDK 是否安装未安装则直接退出并提示Require java but its not installed.支持sh kafka-install.sh [version] [path]两个可选参数默认版本为2.2.0默认安装路径为/opt/kafka从清华镜像站下载kafka_2.12-${version}.tgz压缩包并解压到指定路径。# 默认安装 kafka 2.2.0 到 /opt/kafka sh kafka-install.sh # 自定义版本与安装路径 sh kafka-install.sh 2.2.0 /opt/kafka脚本核心下载解压逻辑如下见 kafka-install.sh# download and decompression mkdir -p ${path} curl -o ${path}/kafka_2.12-${version}.tgz http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/${version}/kafka_2.12-${version}.tgz tar zxf ${path}/kafka_2.12-${version}.tgz -C ${path}启动服务器由于 Kafka 依赖于 ZooKeeper运行前需要先启动 ZooKeeperbin/zookeeper-server-start.sh config/zookeeper.properties [2013-04-22 15:01:37,495] INFO Reading configuration from: config/zookeeper.properties (org.apache.zookeeper.server.quorum.QuorumPeerConfig) ...看到Reading configuration from日志说明 ZooKeeper 已读取配置并进入启动流程。随后启动 Kafka Brokerbin/kafka-server-start.sh config/server.properties [2013-04-22 15:01:47,028] INFO Verifying properties (kafka.utils.VerifiableProperties) [2013-04-22 15:01:47,051] INFO Property socket.send.buffer.bytes is overridden to 1048576 (kafka.utils.VerifiableProperties) ...Verifying properties表示 Kafka 正在校验并加载server.properties中的配置项Property ... is overridden to ...则显示了配置项的实际生效值日志中出现started (kafka.server.KafkaServer)即表示 Broker 启动成功。提示如需后台运行可在命令末尾追加集群部署一节会用到或使用nohup ... 方式脱离终端运行。停止服务器执行完所有操作后使用以下命令停止 Kafka 服务器bin/kafka-server-stop.sh config/server.properties对应的 ZooKeeper 停止命令为bin/zookeeper-server-stop.sh创建主题Kafka 中的 Topic主题是消息的逻辑分类。创建一个名为test的 Topic该 Topic 只有一个分区以及一个副本bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic test --replication-factor 1 --partitions 1关键参数说明参数作用--create创建新主题--zookeeper指定 ZooKeeper 地址老版本创建主题走 ZooKeeper 协议--topic主题名称--replication-factor副本因子单节点环境必须为1--partitions分区数生产者生产消息运行控制台生产者然后可以在控制台中输入消息这些消息会发送到服务器bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test This is a message This is another message--broker-list指定 Broker 地址列表默认为localhost:9092输入内容后回车即完成一条消息的生产。消费者消费消息启动控制台消费者获取服务器中 Topic 下的消息bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning This is a message This is another message--bootstrap-server指定 Kafka Broker 地址新版本消费者直接走 Broker 而非 ZooKeeper--from-beginning从 Topic 最早的消息开始消费用于验证历史消息是否完整。可以看到生产者输入的两条消息被消费者完整拉取说明单节点环境下「生产 → 存储 → 消费」链路已打通。集群部署Kafka 的横向扩展以多 Broker 为基础。将配置复制为多份Windows 使用copy命令代替cp config/server.properties config/server-1.properties cp config/server.properties config/server-2.properties分别修改两份新配置的关键项config/server-1.properties: broker.id1 listenersPLAINTEXT://:9093 log.dir/tmp/kafka-logs-1 config/server-2.properties: broker.id2 listenersPLAINTEXT://:9094 log.dir/tmp/kafka-logs-2其中各参数含义如下broker.idBroker 在集群中的唯一标识必须是唯一的否则集群注册会冲突listenersBroker 对外暴露的监听地址与端口这里故意配置为不一致的9093、9094是为了在一台机器上同时启动多个 Broker 节点而不产生端口冲突log.dir该 Broker 的消息日志分区数据存储目录每个 Broker 需使用不同的目录避免数据互相覆盖。根据这三份配置启动三个服务器节点原配置节点加两个新配置节点共 3 个 Brokerbin/kafka-server-start.sh config/server.properties bin/kafka-server-start.sh config/server-1.properties bin/kafka-server-start.sh config/server-2.properties 单机多节点仅是演示集群机制的最简方式生产环境应将每个 Broker 部署在不同的物理机或容器上此时listeners与log.dir使用默认值即可。创建一个使用三个副本的新 Topicbin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 1 --topic my-replicated-topic查看该主题的详情bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic my-replicated-topic Topic:my-replicated-topic PartitionCount:1 ReplicationFactor:3 Configs: Topic: my-replicated-topic Partition: 0 Leader: 1 Replicas: 1,2,0 Isr: 1,2,0输出中的三个核心字段含义Leader负责指定分区的所有读取和写入的节点。每个节点将成为随机选择的分区部分的领导者Leader 承担该分区的读写流量Replicas复制此分区日志的节点列表无论它们是否为领导者或者即使它们当前是否处于活动状态Replicas 表示该分区副本数据的完整成员Isr同步副本In-Sync Replicas集合它是 Replicas 的子集列表中节点当前处于活跃状态且已经被领导者追平caught up只有 Isr 内的副本才会参与 Leader 故障后的选举。在Replicas: 1,2,0中可以看到三份配置对应的 Broker0、1、2全部成为了该分区副本的承载节点三个副本共同提供数据冗余与故障恢复能力。从仓库看 Kafka 运维闭环在本仓库中Kafka 属于「软件运维」模块的中间件服务相关内容在 docs/linux/soft/README.md 中被归类为大数据服务与 RocketMQ 安装部署、Nacos 安装配置 等中间件文档并列形成了完整的中间件运维体系。文档入口Kafka 安装部署安装脚本kafka-install.sh默认 Kafka 2.2.0 / Scala 2.12依赖脚本zookeeper-install.sh默认 ZooKeeper 3.4.12、jdk8-install.shOpenJDK 8脚本总览codes/linux/soft/README.md 汇总了 Kafka、RocketMQ、Nacos、ZooKeeper、Nginx 等全部软件安装脚本的用法整套安装脚本的编写模式统一先做依赖检查如 Java再定义version、path默认值与入参覆盖逻辑最后执行「下载 → 解压」两步操作。理解这一模式后你既可以按本文的手动方式验证 Kafka 功能也可以直接用sh kafka-install.sh 2.2.0 /opt/kafka一条命令完成版本化、可复现的安装为后续集群搭建提供一致的基础环境。【免费下载链接】linux-tutorial:penguin: Linux教程主要内容Linux 命令、Linux 系统运维、软件运维、精选常用Shell脚本项目地址: https://gitcode.com/GitHub_Trending/lin/linux-tutorial创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考