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
等参数),防止未授权访问。