温馨提示×

Kafka在CentOS上的网络设置

小樊
40
2025-12-31 06:32:27
栏目: 智能运维

Kafka在CentOS上的网络设置

一、网络与主机准备

  • 规划网络与主机名:为每台 broker 规划稳定的 内网IP主机名,并在所有节点的 /etc/hosts 中互填解析,保证基于主机名的连通性与一致性。
  • 网卡与地址配置:编辑网卡配置文件(如 /etc/sysconfig/network-scripts/ifcfg-ens33),设置 BOOTPROTO=staticONBOOT=yesIPADDRNETMASKGATEWAYDNS1 等,使主机具备稳定可达的 IP。
  • 基础连通性自检:使用 pingroute -nss -lntp 等命令检查默认路由、端口监听与连通性,为后续 Kafka 监听与防火墙放行提供依据。

二、Kafka核心网络参数

  • 建议始终显式配置以下参数,避免客户端解析错误或连接到错误网卡:
参数 作用 示例
listeners Broker 实际监听的协议与地址 PLAINTEXT://192.168.88.12:9092
advertised.listeners 对外公布的地址,客户端据此连接 PLAINTEXT://203.0.113.10:19092
inter.broker.listener.name 指定用于 Broker 间通信的监听器名 INTERNAL
listener.security.protocol.map 监听器名到安全协议的映射 INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
broker.id 集群内唯一标识 1(每台不同)
  • 示例(内外网分流,Broker 间走内网,客户端走外网):
    listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
    listeners=INTERNAL://192.168.88.12:9092,EXTERNAL://203.0.113.10:19092
    advertised.listeners=INTERNAL://192.168.88.12:9092,EXTERNAL://203.0.113.10:19092
    inter.broker.listener.name=INTERNAL
    broker.id=1
    
    说明:上述做法可在同一台机器上通过不同端口/网卡区分内外流量,避免外网直连内网或跨域访问问题。

三、防火墙与端口放行

  • 放行 Kafka 与 Zookeeper 端口(以 firewalld 为例):
    sudo systemctl start firewalld
    sudo firewall-cmd --permanent --add-port=9092/tcp    # 外部监听端口
    sudo firewall-cmd --permanent --add-port=19092/tcp   # 如配置了外部监听器
    sudo firewall-cmd --permanent --add-port=2181/tcp    # Zookeeper 客户端端口
    sudo firewall-cmd --reload
    
  • 如使用 iptables,可添加类似规则并保存:
    sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 2181 -j ACCEPT
    sudo iptables-save > /etc/iptables.rules
    
  • 云环境还需在 安全组 中放行对应端口(如 9092/19092/2181)。

四、验证与连通性测试

  • 本机监听与端口检查:
    ss -lntp | grep -E '(:9092|:19092)'
    
  • 从客户端测试生产与消费(示例命令):
    # 列出 Topic
    bin/kafka-topics.sh --list --bootstrap-server 203.0.113.10:19092
    
    # 生产消息
    bin/kafka-console-producer.sh --bootstrap-server 203.0.113.10:19092 --topic test
    
    # 消费消息
    bin/kafka-console-consumer.sh --bootstrap-server 203.0.113.10:19092 --topic test --from-beginning
    
  • 若使用旧版工具或脚本仍依赖 Zookeeper,可用:
    bin/kafka-topics.sh --create --zookeeper 192.168.1.1:2181 --replication-factor 3 --partitions 3 --topic test
    
    提示:确保客户端使用的连接地址与 advertised.listeners 一致,否则可能出现“能连上但无法收发”的现象。

五、常见网络问题与优化

  • 常见问题
    • 只配 listeners 未配 advertised.listeners:客户端可能拿到不可达地址(如内网地址),导致连接失败。
    • 内外网未分流:外网直连内网或跨 VPC 访问被拒,需通过多监听器区分 INTERNAL/EXTERNAL
    • 防火墙/安全组未放行:端口不通,需放行 9092/19092/2181 等。
    • 主机名解析不一致:集群节点间基于主机名通信失败,需在 /etc/hosts 或 DNS 中统一解析。
  • 网络性能优化
    • 开启压缩(如 snappy/lz4/zstd)减少网络流量。
    • 调整 TCP/内核参数(如 tcp_no_delaytcp_keepalive_time)、提高 socket.send/receive.buffer.bytes、合理设置 num.network.threads/num.io.threads,提升吞吐与稳定性。

0