温馨提示×

kafka在centos上的网络配置有哪些要点

小樊
39
2025-12-25 10:39:30
栏目: 智能运维

Kafka 在 CentOS 的网络配置要点

一 核心监听与对外地址

  • 明确区分并同时配置以下三项,避免客户端连不通或获取到错误地址:
    • listeners:Broker 实际监听的接口与端口,如 PLAINTEXT://0.0.0.0:9092(监听所有接口)或 PLAINTEXT://192.168.1.10:9092(仅内网口)。
    • advertised.listeners:对外公布的地址,客户端最终用此地址连接,如 PLAINTEXT://kafka-prod.example.com:9092 或公网/内网具体 IP。
    • listener.security.protocol.map:协议映射(如 PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL),多协议/多端口时必配。
  • 示例(单内网口):
    listeners=PLAINTEXT://0.0.0.0:9092
    advertised.listeners=PLAINTEXT://192.168.1.10:9092
    listener.security.protocol.map=PLAINTEXT:PLAINTEXT
    
  • 示例(内外网分离,双端口):
    listeners=INTERNAL://192.168.1.10:9092,EXTERNAL://0.0.0.0:9093
    advertised.listeners=INTERNAL://192.168.1.10:9092,EXTERNAL://203.0.113.20:9093
    listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
    inter.broker.listener.name=INTERNAL
    security.inter.broker.protocol=PLAINTEXT
    
  • 常见误区:只配 listeners 不配 advertised.listeners,或 advertised 填了不可达地址(如内网地址给公网客户端)。上述三项与多协议映射是 Kafka 网络连通性的首要关键。

二 主机名解析与连通性

  • 保证客户端可解析 advertised.listeners 中的主机名(内网用内网 DNS/主机 hosts,公网用可公网解析的域名或弹性 IP)。
  • 在 CentOS 上排查基础网络与路由:
    • 查看网卡与地址:ip addr / ifconfig
    • 查看路由:route -n
    • 测试连通:ping / traceroute / nslookup
  • 多网卡/双网卡环境需明确各接口用途,必要时通过 inter.broker.listener.name 指定 Broker 间通信使用的监听名称,避免跨错网段。

三 防火墙与端口放行

  • 放行 Kafka 端口(以 9092 为例,若启用 SSL/SASL 或内外网分离,还需放行对应端口如 9093):
    • firewalld:
      sudo firewall-cmd --permanent --add-port=9092/tcp
      sudo firewall-cmd --reload
      
    • 或 nftables/iptables 放行对应 TCP 9092
  • 云服务器需同时配置安全组/NACL规则,放通相应端口与来源网段。

四 传输加密与认证

  • 启用 SSL/TLS:配置 ssl.keystore.location / ssl.keystore.password / ssl.truststore.location / ssl.truststore.password,并在 listeners 使用 SSL:// 或在安全映射中声明协议。
  • 启用 SASL(如 SCRAMKerberos):配置 sasl.enabled.mechanisms / sasl.mechanism.inter.broker.protocol / sasl.jaas.config,并在 listener.security.protocol.map 中映射为 SASL_PLAINTEXT/SASL_SSL
  • 对外公网建议启用 SSL;内网可按需选择 SASL 或明文(配合网络隔离)。

五 性能与可靠性相关的网络参数

  • 增大套接字缓冲与队列,提高吞吐与抗突发:
    socket.send.buffer.bytes=102400
    socket.receive.buffer.bytes=102400
    num.network.threads=3
    num.io.threads=8
    
  • 提升 TCP 栈与内核网络参数(/etc/sysctl.d/99-kafka.conf),示例:
    net.core.rmem_default=4194304
    net.core.wmem_default=4194304
    net.ipv4.tcp_rmem=4096 65536 4194304
    net.ipv4.tcp_wmem=4096 65536 4194304
    net.core.netdev_max_backlog=100000
    net.ipv4.tcp_max_syn_backlog=5120
    vm.swappiness=1
    
  • 打开文件与进程限制(/etc/security/limits.conf):
    * soft nofile 65535
    * hard nofile 65535
    * soft nproc  65535
    * hard nproc  65535
    
  • 大消息场景注意副本同步窗口:将 replica.fetch.max.bytes 提升到不小于 topic 的 max.message.bytes,避免 ISR 频繁掉队(默认 1 MiB 常不足)。
  • 其他稳定性参数(按业务权衡):如 min.insync.replicasreplica.lag.time.max.ms 等。

0