Kraft模式安装Kafka(含常规、容器两种安装方式)

一、#创作灵感#

公司使用Kafka的软件项目较多,故写技术笔记巩固知识要点

二、软件环境

特别说明

**-**Docker Desktop仅仅是Windows下镜像用,如有能爬楼的服务器可不安装此软件

  • 本文以单机模式为例

三、常规方式安装

非容器化Kraft Mode(模式)安装

1、下载Kafka

参见上面的软件环境章节的下载地址

2、修改Kafka配置

Kraft模式启动

vi $KAFKA_HOME/config/kraft/server.properties

关键设置包括

Swift 复制代码
# 指定此节点是否应该成为控制平面的一部分
process.roles=controller,kafka
 
# KRaft模式下的节点ID,每个节点的ID必须唯一
node.id=1
 
# 监听器地址,用于集群内通信
listeners=PLAINTEXT://localhost:9092
 
# 控制平面监听器地址
controller.listeners=PLAINTEXT://localhost:9090
 
# 用于集群通信的安全协议以及相关的认证和授权配置
inter.broker.listener.name=CONTROLLER
 
# 控制平面的ADVERTISED.LISTENERS,用于其他节点发现
controller.listener.names=CONTROLLER
controller.advertised.listeners=PLAINTEXT://localhost:9090
 
# 用于KRaft模式的元数据复制因子,通常设置为集群中控制器的数量
metadata.max.age=300000
 
# 日志存储配置,指定日志的位置和格式
log.dirs=/tmp/kraft-logs
log.retention.hours=168
 
# 控制平面的选举配置和集群成员配置
control.plane.listener.name=CONTROLLER
control.plane.advertised.listeners=PLAINTEXT://localhost:9090
 
# 集群的初始/bootstrap状态
process.roles=controller
node.id=1
listeners=CONTROLLER://localhost:9090
inter.broker.listener.name=CONTROLLER

5、Zookeeper模式启动Kafka

Swift 复制代码
# Start the Kafka broker service
$ bin/kafka-server-start.sh config/kraft/server.properties

四、容器方式安装

容器化Kraft Mode(模式)安装

1、容器启动Kafka

- 下载镜像

下载一体化官方镜像

bash 复制代码
$ docker pull confluentinc/cp-kafka:7.0.1

- 创建ConfigMap资源

用于定义Kafka配置

TypeScript 复制代码
apiVersion: v1
kind: ConfigMap
metadata:
  name: kafka-config
data:
  config.properties: |
    process.roles=broker
    node.id=1
    listeners=PLAINTEXT://:9092
    inter.broker.listener.name=PLAINTEXT
    ...

- 创建Deployment资源

用于部署Kafka Pod

TypeScript 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: kafka
  template:
    metadata:
      labels:
        app: kafka
    spec:
      containers:
        - name: kafka
          image: confluentinc/cp-kafka:7.0.1
          ports:
            - containerPort: 9092
          env:
            - name: CONFIG_FILE
              value: "/etc/kafka/conf/config.properties"
            ...
          volumeMounts:
            - name: config-volume
              mountPath: /etc/kafka/conf
      volumes:
        - name: config-volume
          configMap:
            name: kafka-config

- 创建Service资源

用于对外暴露Kafka服务

TypeScript 复制代码
apiVersion: v1
kind: Service
metadata:
  name: kafka-service
spec:
  selector:
    app: kafka
  ports:
    - protocol: TCP
      port: 9092
      targetPort: 9092

- 应用到你的Kubernetes集群

这些YAML文件定义了Kafka的配置、部署和服务。你需要将它们保存为文件,然后使用kubectl 应用到你的Kubernetes集群

TypeScript 复制代码
kubectl apply -f configmap.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

- (或)使用镜像启动容器

bash 复制代码
# 假设打好的镜像id是fe7e6a65afa5
docker run \
--name=cp-kafka \
-p 2181:2181 \
-p 9092:9092 \
-p 19092:19092 \
-d fe7e6a65afa5

五、要点总结

  • Zookeeper Mode使用的配置是$KFAKA_HOME/config/server.properties

  • Kraft Mode使用的配置是$KFAKA_HOME/config/kraft/server.properties

  • Zookeeper Mode启动见作者的文章:Zookeeper模式安装Kafka

相关推荐
冷色系里的一抹暖调21 小时前
OpenClaw Docker部署避坑指南:服务启动成功但网页打不开?
人工智能·docker·容器·openclaw
小夏子_riotous1 天前
Docker学习路径——2、安装
linux·运维·分布式·学习·docker·容器·云计算
lhbian1 天前
PHP、C++和C语言对比:哪个更适合你?
android·数据库·spring boot·mysql·kafka
gwjcloud1 天前
Docker详解
java·docker·容器
努力搬砖的咸鱼1 天前
Label 与 Selector:Kubernetes 资源选择的核心机制
微服务·云原生·容器·架构·kubernetes
Jackyzhe1 天前
从零学习Kafka:认证机制
分布式·学习·kafka
lhbian1 天前
PHP vs Java vs Go:编程语言终极对比
java·spring boot·后端·kafka·linq
java修仙传1 天前
从手写 Redis 锁到 Redisson:我对分布式锁安全性的理解
java·数据库·redis·分布式
AutoMQ1 天前
别再每月浪费数千美元:拆解 AWS/GCP Kafka 背后的隐性账单
kafka·消息队列·aws
Warren981 天前
Windows本地部署n8n完整教程(基于Docker,新手友好)
运维·windows·python·测试工具·docker·容器·可用性测试