Kafka依赖Java运行环境(JRE/JDK)和ZooKeeper进行集群协调,需先完成安装:
# 更新软件包索引
sudo apt update
# 安装OpenJDK 8(Kafka 3.x兼容版本)
sudo apt install -y openjdk-8-jdk
# 验证Java安装
java -version
# 安装ZooKeeper(Debian默认仓库版本)
sudo apt install -y zookeeperd
# 启动并启用ZooKeeper服务
sudo systemctl start zookeeper
sudo systemctl enable zookeeper
# 验证ZooKeeper状态
sudo systemctl status zookeeper
Kafka需要稳定的网络环境,需正确配置服务器IP地址(以静态IP为例,适用于Debian 12及以上版本):
# 编辑Netplan配置文件(Debian 12+推荐)
sudo nano /etc/netplan/01-netcfg.yaml
配置示例(替换为你的实际网络信息):
network:
version: 2
renderer: networkd
ethernets:
ens4: # 网卡名称(通过`ip a`命令查看)
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
验证网络:
ip addr show ens4 # 确认IP地址已生效
ping -c 4 google.com # 测试网络连通性
从Apache官网下载最新稳定版Kafka,解压至指定目录:
# 创建Kafka安装目录
sudo mkdir -p /opt/kafka
# 下载Kafka(以3.5.2版本为例)
wget https://downloads.apache.org/kafka/3.5.2/kafka_2.12-3.5.2.tgz -P /tmp
# 解压到/opt/kafka
sudo tar -xzf /tmp/kafka_2.12-3.5.2.tgz -C /opt/kafka
# 创建符号链接(可选,方便管理)
sudo ln -s /opt/kafka/kafka_2.12-3.5.2 /opt/kafka/current
Kafka的网络配置主要在server.properties
文件中完成,需重点设置以下参数:
# 进入Kafka配置目录
cd /opt/kafka/current/config
# 编辑server.properties文件
sudo nano server.properties
关键配置项说明:
broker.id
:Broker的唯一标识(集群中需唯一,如broker.id=0
);listeners
:Broker监听的地址和端口(PLAINTEXT://your.server.ip:9092
,若需支持远程访问,替换your.server.ip
为服务器IP;若仅在本地测试,可使用PLAINTEXT://:9092
监听所有接口);advertised.listeners
:客户端连接的地址和端口(需为客户端可解析的地址,如公网IP或域名,格式同listeners
);zookeeper.connect
:ZooKeeper集群地址(如localhost:2181
,集群环境下需列出所有ZooKeeper节点,用逗号分隔);log.dirs
:Kafka日志存储目录(如/var/lib/kafka/logs
,需提前创建并授权)。示例配置(远程访问场景):
broker.id=0
listeners=PLAINTEXT://192.168.1.100:9092
advertised.listeners=PLAINTEXT://192.168.1.100:9092
zookeeper.connect=localhost:2181
log.dirs=/var/lib/kafka/logs
num.partitions=8 # 默认分区数(根据业务需求调整)
default.replication.factor=3 # 默认副本因子(集群环境下建议≥3)
min.insync.replicas=2 # 最小同步副本数(保证数据可靠性)
log.retention.hours=168 # 日志保留时间(7天)
允许客户端访问Kafka的默认端口(9092),避免网络阻断:
# 安装UFW(若未安装)
sudo apt install -y ufw
# 允许9092端口(TCP)
sudo ufw allow 9092/tcp
# 启用防火墙
sudo ufw enable
# 验证规则
sudo ufw status
使用systemd管理Kafka服务,确保开机自启:
# 进入Kafka bin目录
cd /opt/kafka/current/bin
# 启动ZooKeeper(若未单独配置服务)
# ./zookeeper-server-start.sh ../../config/zookeeper.properties &
# 启动Kafka
./kafka-server-start.sh ../../config/server.properties &
# 验证Kafka状态(通过进程列表)
ps aux | grep kafka
通过Kafka自带的命令行工具测试网络连通性和功能:
# 创建测试主题(名称:test,分区数:1,副本因子:1)
/opt/kafka/current/bin/kafka-topics.sh --create \
--topic test \
--bootstrap-server 192.168.1.100:9092 \
--replication-factor 1 \
--partitions 1
# 列出所有主题(验证主题是否创建成功)
/opt/kafka/current/bin/kafka-topics.sh --list \
--bootstrap-server 192.168.1.100:9092
# 生产测试消息(向test主题发送一条消息)
/opt/kafka/current/bin/kafka-console-producer.sh --broker-list 192.168.1.100:9092 --topic test
# 消费测试消息(从test主题读取消息)
/opt/kafka/current/bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.100:9092 --topic test --from-beginning
/etc/sysctl.conf
,优化网络性能(如增加net.core.somaxconn
至1024,提升连接队列长度);ssl.keystore.location
和ssl.truststore.location
配置证书,加密客户端与Broker的通信;batch.size
(默认16KB)和linger.ms
(默认0ms),提高吞吐量;compression.type
(如snappy
、gzip
),减少网络带宽消耗。通过以上步骤,可在Debian系统上完成Kafka的网络配置,并验证其基本功能。根据实际业务需求(如集群部署、高可用性),还需进一步调整配置参数。