温馨提示×

Kafka网络配置Linux上要注意啥

小樊
32
2025-11-23 10:49:59
栏目: 智能运维

Linux 上部署 Kafka 的网络配置要点

一 核心监听与可达性

  • 正确设置 listenersadvertised.listeners:例如 listeners=PLAINTEXT://0.0.0.0:9092,advertised.listeners=PLAINTEXT://<对外域名或公网IP>:9092,确保客户端能拿到可路由的地址;内网/外网共存时可配置多个监听器并用安全组/防火墙区分访问。
  • 对外域名要可解析且端口可达;云上环境需同时放通 安全组操作系统防火墙
  • 基础连通性自检:在客户端执行如 nc -vz <broker_ip> 9092 或 telnet <broker_ip> 9092,在服务器用 ss -lntp | grep :9092 检查监听是否生效。
  • 集群节点间通信同样依赖上述监听地址,确保 broker.id 唯一、各节点 advertised.listeners 可被其他节点访问。

二 防火墙与安全组

  • 开放必要端口:至少放行 9092/TCP(Kafka),如启用 ZooKeeper 则放行 2181/TCP;按需开放 9094/TCP(常见为外部明文或 SASL 监听器)。
  • 常用方式示例:
    • Ubuntu ufw:sudo ufw allow 9092/tcp;sudo ufw allow 2181/tcp;sudo ufw reload
    • firewalld:sudo firewall-cmd --add-port 9092/tcp --permanent;sudo firewall-cmd --reload
    • iptables:sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPT;sudo iptables-save | sudo tee /etc/iptables/rules.v4
  • 云厂商需同时在 安全组实例防火墙 放行对应端口,避免只配其一导致访问被拒。

三 传输安全与认证

  • 启用 SSL/TLS:在 server.properties 中配置 security.inter.broker.protocol=SSL、listeners 使用 SSL://,并正确设置 ssl.keystore.locationssl.keystore.passwordssl.truststore.locationssl.truststore.password 等路径与口令。
  • 启用 SASL/SCRAMSASL/PLAIN:配置 sasl.enabled.mechanismssasl.mechanism.inter.broker.protocollistener.name..sasl.enabled.mechanisms 等,并为账户创建凭据。
  • 对外公网建议强制使用 SSLSASL_SSL,避免明文暴露。

四 性能与内核网络调优

  • Broker 网络与 I/O 线程:根据 CPU 核数调整 num.network.threadsnum.io.threads;适当增大 socket.send.buffer.bytessocket.receive.buffer.bytes;根据业务设置 socket.request.max.bytes 防止过大请求拖垮网络栈。
  • TCP 与连接队列:提升 net.core.somaxconnnet.ipv4.tcp_max_syn_backlog,开启并优化 tcp_tw_reuse、合理设置 tcp_keepalive_time,降低连接建立/回收开销。
  • 文件描述符:提高进程可打开文件数,如 ulimit -n 65536 或写入 /etc/security/limits.conf。
  • 传输效率:在 Producer 端启用压缩(如 snappylz4zstd),并结合批量发送降低网络往返;Broker 与客户端保持一致的压缩配置以减少解压成本。

五 快速检查清单

检查项 期望结果 命令示例
监听地址 监听 0.0.0.0:9092 或指定内网/外网接口 ss -lntp
advertised 可达 客户端能解析并连通 nc -vz <IP或域名> 9092
防火墙/安全组 放行 9092/TCP(及 2181/TCP 等) sudo ufw status;firewall-cmd --list-ports
加密/认证 按需启用 SSL/TLSSASL grep -E 'security.inter.broker.protocol
资源限制 打开文件数 ≥ 65536 ulimit -n;cat /proc//limits
连接队列 队列与内核参数已调优 sysctl net.core.somaxconn;sysctl net.ipv4.tcp_max_syn_backlog

0