1. 核心监听与对外地址配置
listeners
和 advertised.listeners
是Kafka网络配置的基础。listeners
定义Broker监听的本地地址和端口(如 PLAINTEXT://0.0.0.0:9092
表示监听所有网络接口;若需限制为特定IP,可将 0.0.0.0
替换为具体IP)。advertised.listeners
是客户端连接时使用的地址,需设置为集群外可访问的地址(如公网IP或内网域名),确保客户端能正确路由到Broker。两者配置错误会导致客户端无法连接。
2. 防火墙与安全组设置
需开放Kafka使用的端口(默认9092)及ZooKeeper端口(默认2181),避免网络阻断。在Linux系统中,可通过 ufw
(如 sudo ufw allow 9092/tcp
)或 iptables
配置;云服务器需调整安全组规则,允许指定IP段访问这些端口。内网环境需确保同一VPC内的服务器能互相访问。
3. 操作系统网络参数调优
调整TCP参数以提升网络性能:
/etc/sysctl.conf
,添加 net.core.rmem_max=16777216
、net.core.wmem_max=16777216
、net.ipv4.tcp_rmem=4096 87380 16777216
、net.ipv4.tcp_wmem=4096 65536 16777216
(分别表示接收/发送缓冲区最大值及初始大小);net.ipv4.tcp_low_latency=1
;net.core.somaxconn=65535
(提高连接队列长度,避免连接拒绝)。修改后执行 sysctl -p
生效。4. Kafka线程与缓冲区优化
num.network.threads
控制处理网络请求的线程数,建议设置为CPU核心数的1-2倍(如4核CPU设置为4-8);num.io.threads
控制处理磁盘IO的线程数,建议设置为磁盘数量的2-4倍(如4块磁盘设置为8-16);socket.send.buffer.bytes
(发送缓冲区,默认100KB)和 socket.receive.buffer.bytes
(接收缓冲区,默认100KB)可根据网络带宽调整(如设置为1MB),提升数据传输效率。5. 安全配置
server.properties
中添加 security.inter.broker.protocol=SASL_PLAINTEXT
、sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
,并设置用户密码;kafka-acls.sh --authorizer-properties zookeeper.connect=localhost:2181 --add --allow-principal User:user1 --operation Read --topic topic1
);security.inter.broker.protocol=SSL
、ssl.keystore.location=/path/to/keystore.jks
),但需权衡性能开销。6. 连接与性能优化
max.connections
控制Broker允许的最大客户端连接数,默认无限制,生产环境建议设置为10000以上(根据并发需求调整),避免连接耗尽;compression.type=lz4
,支持gzip、snappy、lz4等算法),减少网络传输的数据量(压缩率约为2-5倍),提升吞吐量;batch.size
(批量发送的字节数,默认16KB,可设置为128KB-512KB)和 linger.ms
(发送前的等待时间,默认0ms,可设置为5-10ms),提高批量发送效率。7. 监控与运维
建立完善的监控体系,实时跟踪网络性能指标:
network_requests_total
、network_bytes_in_per_sec
、network_bytes_out_per_sec
)监控网络请求量和流量;