一、基础网络配置
编辑Kafka核心配置文件
Kafka的网络配置主要在server.properties文件中完成(路径通常为$KAFKA_HOME/config/server.properties),关键参数如下:
协议://IP:端口。若需监听所有网络接口,可使用0.0.0.0(如PLAINTEXT://0.0.0.0:9092);若需限制特定IP,替换为具体IP地址。PLAINTEXT://your.public.ip:9092)。若集群有多个broker,需为每个broker配置唯一的advertised.listeners。listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://192.168.1.100:9092
zookeeper.connect=localhost:2181 # 确保Zookeeper连接正确
配置Linux静态IP(可选但推荐)
为避免DHCP导致IP变动,建议设置静态IP(以Ubuntu为例,配置文件/etc/netplan/01-netcfg.yaml):
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: ["192.168.1.100/24"] # 替换为你的静态IP和子网掩码
gateway4: 192.168.1.1 # 替换为你的网关
nameservers:
addresses: ["8.8.8.8", "8.8.4.4"] # 替换为你的DNS服务器
应用配置:sudo netplan apply。
二、防火墙设置 允许Kafka端口(默认9092)通过防火墙,避免网络阻断:
sudo ufw allow 9092/tcp
sudo ufw enable # 若未启用防火墙,可选择性开启
sudo firewall-cmd --permanent --add-port=9092/tcp
sudo firewall-cmd --reload
sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPT
sudo iptables-save > /etc/iptables.rules # 保存规则
三、网络优化配置
调整Kafka broker参数
在server.properties中优化以下参数,提升网络吞吐量和性能:
num.network.threads=8)。num.io.threads=16)。socket.send.buffer.bytes=1048576)。socket.request.max.bytes=104857600)。调整Linux系统TCP参数
编辑/etc/sysctl.conf,优化TCP性能:
net.core.rmem_max=16777216 # 接收缓冲区最大值
net.core.wmem_max=16777216 # 发送缓冲区最大值
net.ipv4.tcp_rmem=4096 87380 16777216 # TCP接收缓冲区动态调整范围
net.ipv4.tcp_wmem=4096 65536 16777216 # TCP发送缓冲区动态调整范围
net.ipv4.tcp_low_latency=1 # 启用低延迟模式
应用配置:sudo sysctl -p。
调整文件描述符限制
Kafka需要处理大量并发连接,需增加文件描述符限制:
/etc/security/limits.conf,添加以下内容:* soft nofile 65536
* hard nofile 65536
/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive,添加:session required pam_limits.so
重新登录后生效。
四、验证网络配置
启动Kafka和Zookeeper
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties &
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties &
创建Topic并测试
$KAFKA_HOME/bin/kafka-topics.sh --create --topic test --bootstrap-server 192.168.1.100:9092 --replication-factor 1 --partitions 1
$KAFKA_HOME/bin/kafka-console-producer.sh --topic test --bootstrap-server 192.168.1.100:9092
$KAFKA_HOME/bin/kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server 192.168.1.100:9092
若能正常生产和消费消息,说明网络配置成功。