下面以 Debian 11/12 为例,系统地说明 Kafka 的安装与基本配置。示例基于 Kafka 3.x + Java 17,这是目前比较主流的组合。
Kafka 依赖 JVM,推荐 OpenJDK。
sudo apt update
sudo apt install -y openjdk-17-jdk
验证:
java -version
Kafka 官方不再自带 ZooKeeper(新版本推荐 KRaft 模式),下面分别说明。
cd /opt
sudo wget https://downloads.apache.org/kafka/3.7.0/kafka_2.13-3.7.0.tgz
sudo tar -xzf kafka_2.13-3.7.0.tgz
sudo mv kafka_2.13-3.7.0 kafka
/opt/kafka
├── bin
├── config
├── logs
└── libs
cd /opt/kafka
KAFKA_CLUSTER_ID=$(bin/kafka-storage.sh random-uuid)
echo $KAFKA_CLUSTER_ID
编辑:
sudo nano config/kraft/server.properties
关键配置示例:
# Broker ID
node.id=1
# 集群 ID(上面生成的)
controller.quorum.voters=1@localhost:9093
# 监听地址
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://localhost:9092
# 日志目录
log.dirs=/opt/kafka/logs
# 控制器角色
process.roles=broker,controller
controller.listener.names=CONTROLLER
listeners=PLAINTEXT://:9092,CONTROLLER://:9093
如果你是多节点,需要修改 controller.quorum.voters。
bin/kafka-storage.sh format \
-t $KAFKA_CLUSTER_ID \
-c config/kraft/server.properties
bin/kafka-server-start.sh config/kraft/server.properties
后台运行:
nohup bin/kafka-server-start.sh config/kraft/server.properties > kafka.log 2>&1 &
如果你使用的是 Kafka 2.x:
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
server.properties / kraft/server.properties| 参数 | 说明 |
|---|---|
broker.id |
每个 broker 唯一 |
listeners |
监听协议和端口 |
log.dirs |
数据目录 |
num.partitions |
默认分区数 |
offsets.topic.replication.factor |
推荐 ≥3 |
log.retention.hours |
数据保留时间 |
bin/kafka-topics.sh \
--create \
--topic test \
--bootstrap-server localhost:9092 \
--partitions 1 \
--replication-factor 1
查看:
bin/kafka-topics.sh --list --bootstrap-server localhost:9092
bin/kafka-console-producer.sh \
--topic test \
--bootstrap-server localhost:9092
bin/kafka-console-consumer.sh \
--topic test \
--from-beginning \
--bootstrap-server localhost:9092
ulimit -n
建议 ≥ 100000
编辑:
sudo nano /etc/security/limits.conf
* soft nofile 100000
* hard nofile 100000
sudo swapoff -a
我可以帮你写:
如果你需要,请告诉我:
我可以给你 完整可直接用的 systemd 配置。