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

相关推荐
毕设源码-赖学姐8 分钟前
【开题答辩全过程】以基于Hadoop的电商数据分析系统为例,包含答辩的问题和答案
大数据·hadoop·分布式·1024程序员节
ink@re30 分钟前
消息队列集群——RabbitMQ
分布式·rabbitmq·1024程序员节
回忆是昨天里的海42 分钟前
k8s部署容器化应用-tomcat
云原生·容器·kubernetes·1024程序员节
Shannon Law1 小时前
Docker连接超时的解决方法
docker·容器
逻极4 小时前
HarmonyOS 5 鸿蒙多设备适配与分布式开发指南
分布式·华为·harmonyos·鸿蒙
helloworddm6 小时前
Orleans + Kubernetes + Istio 服务网格集成深度解析
容器·kubernetes·istio
lastHertz6 小时前
Docker 占用导致 C 盘空间不足的排查与解决
运维·docker·容器
专家大圣6 小时前
Docker+Redis监控新方案:cpolar让远程管理“零配置”
网络·redis·docker·容器·内网穿透
chen_note10 小时前
Dockerfile及其部署镜像步骤
docker·容器·镜像·dockerfile
Jy_062210 小时前
K8s中,deployment 是如何从 yaml 文件最终部署成功 pod 的
云原生·容器·kubernetes