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

相关推荐
哈哈哈笑什么3 小时前
分布式高并发Springcloud系统下的数据图同步断点续传方案【订单/商品/用户等】
分布式·后端·spring cloud
LDG_AGI4 小时前
【推荐系统】深度学习训练框架(十三):模型输入——《特征索引》与《特征向量》的边界
人工智能·pytorch·分布式·深度学习·算法·机器学习
回家路上绕了弯5 小时前
多线程开发最佳实践:从安全到高效的进阶指南
分布式·后端
Empty_7775 小时前
K8S-daemonset控制器
云原生·容器·kubernetes
少许极端5 小时前
Redis入门指南:从零到分布式缓存(一)
redis·分布式·缓存·微服务
todoitbo5 小时前
openEuler 云原生实战:Docker Compose 部署 Nextcloud 企业级私有云
docker·云原生·容器·openeuler
爬山算法5 小时前
Redis(161)如何使用Redis实现分布式锁?
数据库·redis·分布式
边缘计算社区6 小时前
云边协同推理再突破:新型分布式解码框架吞吐量提升近 10%
分布式
一条懒鱼6666 小时前
K8S-daemonset控制器
云原生·容器·kubernetes
大猫子的技术日记6 小时前
[后端杂货铺]深入理解分布式事务与锁:从隔离级别到传播行为
分布式·后端·事务