Kafka 安装
macOS
shell
# Homebrew
brew install kafka
# 启动(KRaft 模式,自动初始化 cluster ID)
kafka-server-start.sh /opt/homebrew/etc/kafka/server.properties
# 或使用 brew services
brew services start kafka配置文件:/opt/homebrew/etc/kafka/server.properties(Apple Silicon)或 /usr/local/etc/kafka/server.properties(Intel)
Ubuntu / Debian
shell
# 安装 JDK 17+
sudo apt update
sudo apt install -y openjdk-17-jdk
# 下载 Kafka
wget https://dlcdn.apache.org/kafka/4.0.0/kafka_2.13-4.0.0.tgz
tar -xzf kafka_2.13-4.0.0.tgz
sudo mv kafka_2.13-4.0.0 /opt/kafka
# 创建数据目录
sudo mkdir -p /data/kafka
sudo chown -R $USER:$USER /data/kafka /opt/kafka单节点 KRaft 模式
Kafka 4.0 默认使用 KRaft 模式,无需 ZooKeeper:
shell
# 1. 生成 Cluster UUID
KAFKA_CLUSTER_ID=$(kafka-storage.sh random-uuid)
echo $KAFKA_CLUSTER_ID
# 2. 格式化存储目录
kafka-storage.sh format -t $KAFKA_CLUSTER_ID \
-c /opt/kafka/config/kraft/server.properties
# 3. 启动 Kafka
kafka-server-start.sh /opt/kafka/config/kraft/server.properties单节点 KRaft 配置同时担当 Controller 和 Broker 双重角色,用于开发和测试。
Docker
shell
# KRaft 单机运行
docker run -d --name kafka \
-p 9092:9092 \
-e KAFKA_NODE_ID=1 \
-e KAFKA_PROCESS_ROLES="broker,controller" \
-e KAFKA_CONTROLLER_QUORUM_VOTERS="1@localhost:9093" \
-e KAFKA_LISTENERS="PLAINTEXT://:9092,CONTROLLER://:9093" \
-e KAFKA_ADVERTISED_LISTENERS="PLAINTEXT://localhost:9092" \
-e KAFKA_CONTROLLER_LISTENER_NAMES="CONTROLLER" \
-e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP="CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT" \
apache/kafka:4.0.0yaml
# docker-compose.yml
version: '3.8'
services:
kafka:
image: apache/kafka:4.0.0
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:9093"
KAFKA_LISTENERS: "PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093"
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://localhost:9092"
KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT"
volumes:
- kafka-data:/var/lib/kafka/data
volumes:
kafka-data:验证安装
shell
# 检查 Broker 是否正常运行
kafka-broker-api-versions.sh --bootstrap-server localhost:9092
# 创建测试 Topic
kafka-topics.sh --create --topic test --partitions 3 --replication-factor 1 \
--bootstrap-server localhost:9092
# 生产测试消息
echo "hello kafka" | kafka-console-producer.sh --topic test \
--bootstrap-server localhost:9092
# 消费测试消息
kafka-console-consumer.sh --topic test --from-beginning --max-messages 1 \
--bootstrap-server localhost:9092