kafka安装
2025年2月19日大约 3 分钟
kafka安装
使用docker-compose方式
提前条件是安装 Docker 和 Docker Compose
services:
kafka:
image: bitnami/kafka:3.6
container_name: kafka
ports:
- "9092:9092"
environment:
- KAFKA_CFG_PROCESS_ROLES=broker,controller
- KAFKA_CFG_NODE_ID=1
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@localhost:9093
- KAFKA_CFG_LISTENERS=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
- KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_LOG_DIRS=/opt/kafka-logs
- KAFKA_CFG_NUM_PARTITIONS=1
- KAFKA_CFG_DEFAULT_REPLICATION_FACTOR=1
- KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=1
- KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1
- KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=1
- KAFKA_CFG_MIN_INSYNC_REPLICAS=1
- ALLOW_PLAINTEXT_LISTENER=yes
volumes:
- kafka-data:/opt/kafka-logs
networks:
- kafka-network
networks:
kafka-network:
driver: bridge
volumes:
kafka-data:
name: my-kafka-data
启动 Kafka 服务
在包含 docker-compose.yml
文件的目录下,运行以下命令启动 Kafka 和 Zookeeper 服务:
docker-compose up -d
验证 Kafka 安装
查看kafka日志
docker logs kafka
如果如下图所示,说明没有日志目录权限,需要授权

确认宿主机上挂载的数据卷目录的权限
sudo ls -ld /var/lib/docker/volumes/my-kafka-data/_data
调整宿主机权限
sudo chown -R 1001:1001 /var/lib/docker/volumes/my-kafka-data/_data
sudo chmod -R 755 /var/lib/docker/volumes/my-kafka-data/_data
重启kafka
docker compose -f docker-compose.yml up -d
编译方式安装kafka
kafka在JVM环境运行,集群依赖Zookeeper,我们使用的kafka版本最好 >= 2.12 ,版本内置了Zookeeper,不需要额外部署。
下面在Linux环境搭建kafka为例:
# 使用kafka2.12版本
# JDK版本 >= 1.8 ,如果还没在Linux安装JDK,需要先安装JDK,这里不做演示
# step1 直接连接下载kafka 或 下载后导入Linux
$ wget https://archive.apache.org/dist/kafka/3.6.0/kafka_2.12-3.6.0.tgz
直接下载访问链接:
# 解压下载文件
$ tar -xzf kafka_2.12-3.6.0.tgz
$ cd kafka_2.12-3.6.0
目录如下图所示

# 添加zookeeper日志目录 进入config路径,配置zookeeper.properties
dataDir=/opt/software/kafka/zookeeper #zookeeper数据目录
dataLogDir=/opt/software/kafka/zookeeper/log #zookeeper日志目录
clientPort=2181
maxClientCnxns=100
tickTimes=2000
initLimit=10
syncLimit=5
# 配置kafka broker参数,进入config路径,配置server.properties
# The id of the broker. This must be set to a unique integer for each broker.
broker.id=0
port=9092
host.name= 服务器IP地址
listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://服务器IP地址:9092
另外为了启动&停止方便,可以额外添加两个脚本
# 新建一个文件命名为:kafkaStart.sh ,kafka启动脚本,如下内容
#keeper
/opt/kafka_2.12-3.6.0/bin/zookeeper-server-start.sh -daemon /opt/kafka_2.12-3.6.0/config/zookeeper.properties
sleep 3 #等3秒后执行
#启动kafka
/opt/kafka_2.12-3.6.0/bin/kafka-server-start.sh -daemon /opt/kafka_2.12-3.6.0/config/server.properties
sleep 3
echo 'kafka started'
#新建一个文件命名为:kafkaStop.sh ,kafka停止脚本,内容如下
#关闭kafka
/opt/kafka_2.12-3.6.0/bin/kafka-server-stop.sh /opt/kafka_2.12-3.6.0/config/server.properties
sleep 3
#keeper
/opt/kafka_2.12-3.6.0/bin/zookeeper-server-stop.sh /opt/kafka_2.12-3.6.0/config/zookeeper.properties
sleep 3 #等3秒后执行
echo 'kafka stoped'
运行 kafkaStart.sh
脚本,启动kafka
kafka测试
进入 Kafka 容器
docker exec -it --user root kafka bash
创建 Kafka 主题
使用 kafka-topics.sh 命令来创建主题。假设我们创建一个名为 test-topic 的主题:
kafka-topics.sh --bootstrap-server localhost:9092 --create --topic test-topic --partitions 1 --replication-factor 1
查看现有的 Kafka 主题
kafka-topics.sh --bootstrap-server localhost:9092 --list
生产消息到 Kafka 主题
kafka-console-producer.sh --bootstrap-server localhost:9092 --topic test-topic
消费 Kafka 主题
加一个新的终端,再进容器
docker exec -it --user root kafka bash
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test-topic --from-beginning
切换之前的终端,输入任意信息,如果另一个终端能接收,说明测试成功
停止 Kafka 服务
如果需要停止 Kafka 和 Zookeeper 服务,可以在包含 docker-compose.yml
文件的目录下运行以下命令:
docker-compose down
通过以上步骤,你就可以使用 Docker 快速安装和运行 Kafka。
kafka可视化
可视化软件下载地址:
按照官方文档下载后,运行下面的脚本
打开地址 http://localhost:7766/,点击 运维-> 切换集群 ->新增集群


