🎬 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. 系统基础检查与配置

    • 更新系统:首先确保系统是最新的。连接服务器后,执行以下命令:

      sudo yum update -y
    • 配置主机名与Hosts解析集群部署必需):为每个节点设置唯一的主机名,并在所有节点的 /etc/hosts文件中添加IP与主机名的映射。

      # 设置主机名,例如在第一个节点执行
      sudo hostnamectl set-hostname kafka-node1
      # 编辑hosts文件
      sudo vi /etc/hosts
      # 添加如下内容(请替换为你的实际IP)
      # 192.168.1.101 kafka-node1
      # 192.168.1.102 kafka-node2
      # 192.168.1.103 kafka-node3
    • 防火墙配置:开放Kafka和ZooKeeper的默认端口。

      sudo firewall-cmd --permanent --add-port=9092/tcp  # Kafka
      sudo firewall-cmd --permanent --add-port=2181/tcp  # ZooKeeper
      # 如果是KRaft模式,还需要开放控制器端口(如9093)
      # sudo firewall-cmd --permanent --add-port=9093/tcp
      sudo firewall-cmd --reload
    • 关闭SELinux(可选,建议测试环境)

      sudo setenforce 0
      sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
  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已经成功安装并运行 !

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

  • 生产环境安全配置:考虑配置SASL认证或SSL/TLS加密 。

  • 系统服务化:创建Systemd服务文件(/etc/systemd/system/kafka.service),方便管理 。

  • 监控:可集成Kafka-Eagle、Prometheus + Grafana等监控方案 。

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

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

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

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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐