跳至主要內容

kafka安装

fastbee2025年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可视化

可视化软件下载地址:

gitlab下载kafka-console-ui

gitlee下载kafka-console-ui

按照官方文档下载后,运行下面的脚本

打开地址 http://localhost:7766/,点击 运维-> 切换集群 ->新增集群