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

相关推荐
泡泡里的月亮36 分钟前
【docker】Windows10启动Docker Desktop - WSL update failed
运维·docker·语言模型·容器
7年老菜鸡4 小时前
docker构建镜像时总会有部分文件没有被更新,解决办法
运维·docker·容器
viperrrrrrrrrr74 小时前
大数据学习(67)- Flume、Sqoop、Kafka、DataX对比
大数据·学习·kafka·sqoop·flume·datax
Clank的游戏栈4 小时前
游戏服务器分区的分布式部署
服务器·分布式·游戏
安替-AnTi5 小时前
Free QWQ - 世界首个免费无限制分布式 QwQ API
分布式·免费·qwen·开源大模型
程序员Realeo6 小时前
Kubernetes集群版本升级
云原生·容器·kubernetes
宋发元6 小时前
分布式全局ID生成方案
分布式
nanzhuhe8 小时前
jmeter分布式原理及实例
分布式·jmeter