阅读量:25
一、基础网络配置
-
编辑Kafka核心配置文件
Kafka的网络配置主要在server.properties文件中完成(路径通常为$KAFKA_HOME/config/server.properties),关键参数如下:- listeners:定义Kafka broker监听的地址和端口,格式为
协议://IP:端口。若需监听所有网络接口,可使用0.0.0.0(如PLAINTEXT://0.0.0.0:9092);若需限制特定IP,替换为具体IP地址。 - advertised.listeners:客户端连接时使用的地址,需设置为broker对外可访问的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连接正确 - listeners:定义Kafka broker监听的地址和端口,格式为
-
配置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)通过防火墙,避免网络阻断:
- Ubuntu(ufw):
sudo ufw allow 9092/tcp sudo ufw enable # 若未启用防火墙,可选择性开启 - CentOS(firewalld):
sudo firewall-cmd --permanent --add-port=9092/tcp sudo firewall-cmd --reload - 传统iptables:
sudo iptables -A INPUT -p tcp --dport 9092 -j ACCEPT sudo iptables-save > /etc/iptables.rules # 保存规则
三、网络优化配置
-
调整Kafka broker参数
在server.properties中优化以下参数,提升网络吞吐量和性能:- num.network.threads:处理网络请求的线程数,建议设置为CPU核心数的2~4倍(如
num.network.threads=8)。 - num.io.threads:处理磁盘IO的线程数,建议设置为磁盘数量的2倍以上(如
num.io.threads=16)。 - socket.send.buffer.bytes/socket.receive.buffer.bytes:发送/接收缓冲区大小,建议设置为1MB(如
socket.send.buffer.bytes=1048576)。 - socket.request.max.bytes:单个请求的最大大小,建议设置为100MB(如
socket.request.max.bytes=104857600)。
- num.network.threads:处理网络请求的线程数,建议设置为CPU核心数的2~4倍(如
-
调整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并测试
- 创建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
若能正常生产和消费消息,说明网络配置成功。
- 创建Topic: