安装

  1. 安装 Java(推荐 JDK 17)
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
  1. 下载 Kafka
cd /opt
sudo wget wget https://dlcdn.apache.org/kafka/3.9.1/kafka_2.13-3.9.1.tgz
sudo tar -xzf kafka_2.13-3.9.1.tgz
sudo mv kafka_2.13-3.9.1 kafka
  1. 创建存储目录
cd kafka
mkdir -p /opt/kafka/data
  1. 初始化 KRaft 模式
# 生成唯一 cluster ID
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
# 格式化存储目录
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
  1. 修改配置(可选优化)
vim config/kraft/server.properties
num.partitions=1
auto.create.topics.enable=true
log.retention.hours=1
log.segment.bytes=10485760
num.network.threads=1
num.io.threads=1
queued.max.requests=10
  1. 内存优化
export KAFKA_HEAP_OPTS="-Xmx256M -Xms256M"
  1. 启动服务
bin/kafka-server-start.sh config/kraft/server.properties

SASL认证

vim config/kraft/server.properties

修改以下内容

listeners=SASL_PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
advertised.listeners=SASL_PLAINTEXT://服务IP:9092

controller.listener.names=CONTROLLER

listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL

sasl.enabled.mechanisms=PLAIN
sasl.mechanism.inter.broker.protocol=PLAIN

listener.name.sasl_plaintext.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
    username="username" \
    password="password" \
    user_admin="admin123" \
    user_test="test123";

添加系统服务

  1. 配置文件
vim /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka Server (KRaft Mode)
After=network.target

[Service]
Type=simple
User=root
Group=root
Environment="JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64"
Environment="KAFKA_HEAP_OPTS=-Xmx200M -Xms200M -Duser.timezone=Asia/Shanghai"
Environment="TZ=Asia/Shanghai"

ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
Restart=on-failure
RestartSec=5

# 限制资源(可选,1核1G机推荐)
LimitNOFILE=65536
LimitNPROC=4096
TimeoutStopSec=30

[Install]
WantedBy=multi-user.target
  1. 加载服务文件并启用自启动
sudo systemctl daemon-reload
sudo systemctl enable kafka
  1. 启动 / 停止 / 查看状态
# 启动 Kafka
sudo systemctl start kafka

# 查看状态(包括日志最后几行)
sudo systemctl status kafka -l

# 停止
sudo systemctl stop kafka

# 重启
sudo systemctl restart kafka

感谢大家的阅读, 如有疑问可以加我微信