温馨提示×

kafka连接centos服务器如何设置

小樊
43
2025-12-27 09:03:28
栏目: 云计算

在 CentOS 上让客户端或本机连接到 Kafka 的完整设置


一 基础环境准备

  • 安装 Java 8+(Kafka 依赖 JVM):sudo yum install java-1.8.0-openjdk-devel -y,执行 java -version 验证。
  • 下载并解压 Kafka(示例版本 3.5.2):
    wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz
    tar -xzf kafka_2.12-3.5.2.tgz && sudo mv kafka_2.12-3.5.2 /opt/kafka
  • 可选:配置环境变量(/etc/profile)
    export KAFKA_HOME=/opt/kafka
    export PATH=$PATH:$KAFKA_HOME/bin
    source /etc/profile
    以上为后续所有模式(单机、Zookeeper、KRaft)的通用准备步骤。

二 选择部署模式并配置 server.properties

  • 传统模式(依赖 Zookeeper)
    • 关键配置(/opt/kafka/config/server.properties):
      broker.id=0(集群内唯一)
      listeners=PLAINTEXT://0.0.0.0:9092
      advertised.listeners=PLAINTEXT://服务器实际IP:9092(客户端用此地址连接)
      log.dirs=/opt/kafka/kafka_logs
      zookeeper.connect=localhost:2181(Zookeeper 地址)
    • 启动顺序:先启动 Zookeeper(/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties),再启动 Kafka(/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties)。
  • KRaft 模式(Kafka 2.8+,无 Zookeeper)
    • 关键配置:
      process.roles=broker,controller
      node.id=0(集群内唯一)
      controller.quorum.voters=0@服务器IP:9093
      listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
      advertised.listeners=PLAINTEXT://服务器实际IP:9092
      listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      log.dirs=/opt/kafka/kafka_logs
    • 启动命令:/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties(无需单独启动 Zookeeper)。
      以上配置要点与启动方式适用于在 CentOS 上快速打通内外网访问与基础连通性。

三 网络与系统访问控制

  • 防火墙放通端口(默认 9092):
    sudo firewall-cmd --zone=public --add-port=9092/tcp --permanent && sudo firewall-cmd --reload
  • 云服务器安全组:在控制台放行 TCP 9092(入方向)。
  • 监听与对外地址:listeners 设为 0.0.0.0:9092 以监听所有网卡;advertised.listeners 必须填写客户端可达的 服务器IP或域名
  • SELinux(如启用):可按需调整网络相关布尔值(例如 sudo setsebool -P httpd_can_network_connect 1),或临时 setenforce 0 验证是否为 SELinux 导致。
  • 本机回环测试与生产建议:本机可用 localhost:9092 验证;对外服务务必使用实际 服务器IP 并放通防火墙/安全组。
    以上确保外部客户端(同网段或跨公网)能稳定连接到 Kafka 9092 端口。

四 本机连通性验证与常见排错

  • 创建测试 Topic:
    /opt/kafka/bin/kafka-topics.sh --create --topic test --bootstrap-server 服务器IP:9092 --partitions 1 --replication-factor 1
  • 发送/接收消息:
    生产者:/opt/kafka/bin/kafka-console-producer.sh --topic test --bootstrap-server 服务器IP:9092
    消费者:/opt/kafka/bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server 服务器IP:9092
  • 常见排错要点:
    • advertised.listeners 填写错误(客户端连不通或拿到不可达地址)。
    • 防火墙/安全组未放行 9092
    • 监听地址仅绑定 127.0.0.1(应改为 0.0.0.0)。
    • 目录权限不足(log.dirs 不可写)。
    • KRaft 模式未正确配置 controller.quorum.voters 与 node.id。
      以上验证流程与排错清单可快速定位大多数连接问题。

五 可选优化与进阶

  • 生产参数建议:
    num.partitions=8(按吞吐调大)
    default.replication.factor=3(多副本容灾)
    min.insync.replicas=2(写一致性要求)
    log.retention.hours=168(日志保留时长)
  • 后台运行与自启:
    • 使用 nohup:nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties >/dev/null 2>&1 &
    • 使用 systemd:创建 /etc/systemd/system/kafka.service(ExecStart 指向 server.properties),然后 systemctl daemon-reload && systemctl enable --now kafka。
  • 安全加固(可选):启用 SASL/SSL 认证与加密,限制未授权访问。
    以上设置可提升稳定性、可靠性与安全性,适合从测试环境平滑过渡到生产环境。

0