1. 准备工作:安装Java与ZooKeeper
Kafka依赖Java运行环境(JRE/JDK)和ZooKeeper协调集群,需先完成安装:
apt安装OpenJDK(推荐11及以上版本),验证安装是否成功:sudo apt update && sudo apt install openjdk-11-jdk java -version # 确认输出Java版本信息 apt快速部署:sudo apt install zookeeperd sudo systemctl start zookeeper && sudo systemctl enable zookeeper # 启动并设置开机自启 2. 下载并解压Kafka
从Apache官网下载最新稳定版Kafka(如3.5.2),解压至目标目录(如/opt/kafka):
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.13-3.5.2.tgz tar -xzf kafka_2.13-3.5.2.tgz -C /opt/ ln -s /opt/kafka_2.13-3.5.2 /opt/kafka # 创建软链接便于管理 3. 配置网络接口(静态IP)
Kafka需绑定固定IP以确保客户端可访问,修改Debian网络配置文件(推荐使用netplan,适用于Debian 12+):
/etc/netplan/01-netcfg.yaml(文件名可能因系统而异),设置静态IP、网关和DNS:network: version: 2 renderer: networkd ethernets: ens4: # 替换为你的网卡名称(通过`ip a`查看) dhcp4: no addresses: ["192.168.1.100/24"] # 替换为你的静态IP和子网掩码 gateway4: 192.168.1.1 # 替换为你的网关IP nameservers: addresses: ["8.8.8.8", "8.8.4.4"] # 替换为你的DNS服务器 sudo netplan apply 4. 配置Kafka网络参数(核心步骤)
编辑Kafka配置文件/opt/kafka/config/server.properties,重点设置以下网络相关参数:
listeners:定义Kafka Broker监听的地址和端口(内部通信)。若需允许所有IP访问,可使用0.0.0.0;若仅限内网,替换为内网IP:listeners=PLAINTEXT://0.0.0.0:9092 # 生产环境建议限制为内网IP advertised.listeners:定义客户端连接的Broker地址(对外暴露)。若Broker有多个网络接口(如内网+外网),需指定客户端可访问的IP;若使用负载均衡器(SLB),替换为SLB的VIP:advertised.listeners=PLAINTEXT://192.168.1.100:9092 # 替换为客户端可访问的IP zookeeper.connect:指定ZooKeeper集群地址(若为单节点,用localhost;多节点用逗号分隔):zookeeper.connect=localhost:2181 # 多节点示例:zk1:2181,zk2:2181,zk3:2181 num.network.threads=3 # 处理网络请求的线程数(根据CPU核心数调整) num.io.threads=8 # 处理磁盘I/O的线程数(根据磁盘性能调整) socket.send.buffer.bytes=102400 # 发送缓冲区大小(单位:字节) socket.receive.buffer.bytes=102400 # 接收缓冲区大小(单位:字节) 5. 配置防火墙
允许客户端访问Kafka的默认端口(9092),使用ufw(Uncomplicated Firewall)开放端口:
sudo ufw allow 9092/tcp # 开放TCP端口9092 sudo ufw reload # 重新加载防火墙规则 6. 启动Kafka服务并验证
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties & /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties & sudo netstat -tulnp | grep 9092 # 或使用`ss -tulnp | grep 9092` test主题发送消息):/opt/kafka/bin/kafka-console-producer.sh --broker-list 192.168.1.100:9092 --topic test test主题读取消息):/opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic test --from-beginning 注意事项
bootstrap.servers中直接指定IP。listeners和advertised.listeners分别设置内网监听和外网暴露地址(如listeners=PLAINTEXT://内网IP:9092;advertised.listeners=PLAINTEXT://外网IP:9092)。security.inter.broker.protocol=SSL、ssl.keystore.location等参数)和SASL认证(设置sasl.enabled.mechanisms=PLAIN、sasl.jaas.config等参数),防止未授权访问。