CentOS上Kafka的网络配置有哪些要点
小樊
44
2025-12-17 14:31:55
CentOS 上 Kafka 网络配置要点
一 核心监听器与地址配置
- 明确区分并同时配置 listeners 与 advertised.listeners:前者是 Broker 实际监听的 IP:端口,后者是向客户端/其他 Broker“对外公布”的地址。跨机房或云环境常将二者设为不同(如内网用于 Broker 间通信,公网用于客户端访问)。示例:listeners=PLAINTEXT://内网IP:9092;advertised.listeners=PLAINTEXT://公网IP:9092。若 listeners 使用 0.0.0.0(监听所有网卡),则 advertised.listeners 必须显式指定具体可达 IP,且 advertised 不支持 0.0.0.0。多监听器可实现内外网分流(如同时声明内网与公网监听器)。同时设置 inter.broker.listener.name 与 security.inter.broker.protocol 属于错误用法,应二选一。客户端连接起点使用 bootstrap.servers 指向对外公布的地址集合。以上做法可避免“能连上 Zookeeper 但客户端连不上 Broker”的典型问题。
二 主机名解析与连通性
- 避免仅使用 localhost 或不可路由的主机名。生产环境建议在 server.properties 中使用各 Broker 的 内网/公网 IP 或 FQDN,并确保客户端能通过该主机名解析到对应 IP。跨主机访问时,优先使用 内网 IP 以降低时延与成本;对外服务时,将 advertised.listeners 指向 公网 IP 或域名。若使用虚拟机/云主机,需为实例配置静态 IP并固定主机名解析,减少因 DHCP 或 DNS 变化导致的连接异常。
三 端口与防火墙放行
- 放行关键端口:Broker 默认 9092/TCP,若使用独立 Zookeeper 还需放行 2181/TCP。在 CentOS 7+ 使用 firewalld:例如 firewall-cmd --zone=public --add-port=9092/tcp --permanent 与 firewall-cmd --reload;如使用 iptables 则添加对应 ACCEPT 规则并保存。云上还需在安全组中开放相同端口,避免仅在内网放行而公网不通。
四 传输与协议相关参数
- 协议与安全:根据需求选择 PLAINTEXT/SSL/SASL_PLAINTEXT/SASL_SSL,必要时配置 listener.security.protocol.map 以映射自定义监听器名称到安全协议。跨网络或公网建议启用 SSL 以加密传输。压缩(如 gzip/snappy/lz4)可降低网络字节量、提升吞吐。消息与副本相关上限需匹配网络能力:如 message.max.bytes(单条消息上限)、replica.fetch.max.bytes(副本拉取上限),避免网络瓶颈或异常截断。
五 线程与缓冲区的网络性能调优
- 合理提升网络与 I/O 能力:增加 num.network.threads(处理网络请求线程)与 num.io.threads(处理磁盘 I/O 线程),根据 CPU 与磁盘数调整。适度增大 socket.send.buffer.bytes / socket.receive.buffer.bytes 以提升高吞吐场景下的 TCP 收发效率。持续监控网络指标(如延迟、吞吐、请求耗时),结合业务负载迭代调优。