Kafka集群部署 (KRaft模式集群)

90 篇文章 6 订阅
64 篇文章 4 订阅
  • KRaft 模式是 Kafka 在 3.0 版本中引入的新模式。KRaft 模式使用了 Raft 共识算法来管理 Kafka 集群元数据。Raft 算法是一种分布式共识算法,具有高可用性、可扩展性和安全性等优势。
  • 在 KRaft 模式下,Kafka 集群中的每个 Broker 都具有和 Zookeeper 类似的角色。每个 Broker 都参与管理 Kafka 集群元数据,包括分区分配、副本分配、元数据快照等。

Zookeeper 模式和KRaft 模式 对比

特性KRaft 模式Zookeeper 模式
使用共识算法RaftZookeeper
可用性
扩展性
安全性
复杂度

KRaft 模式的优势

KRaft 模式具有以下优势:
  • 更简单:KRaft 模式将 Kafka 集群元数据管理整合到了 Kafka 中,因此不需要使用外部服务,这使得 Kafka 集群的部署和管理更加简单。
    更高效:KRaft 模式使用了 Raft 算法来管理 Kafka 集群元数据,Raft 算法具有更高的效率,因此 Kafka 集群的性能可以得到提升。
    更可靠:KRaft 模式使用了 Raft 算法来管理 Kafka 集群元数据,Raft 算法具有更高的可靠性,因此 Kafka 集群的稳定性可以得到提升。

helm安装

helm repo add bitnami https://charts.bitnami.com/bitnami
helm pull  bitnami/kafka --untar
helm install kafka kafka --values ./kafka/values.yaml  \
    --set replicaCount=1 \
    --set kafka.kafkaConfigOverrides=transaction.state.log.replication.factor=1 \
    --set kafka.kafkaConfigOverrides=transaction.state.log.min.isr=1 \
    --set kafka.kafkaConfigOverrides=default.replication.factor=1 \
    --set kafka.kafkaConfigOverrides=num.io.threads=2 \
    --set kafka.kafkaConfigOverrides=num.network.threads=2 \
    --set kafka.kafkaConfigOverrides=inter.broker.protocol.version=3.5.1 \
    --set kafka.kafkaConfigOverrides=offsets.topic.replication.factor=1 \
    --set kafka.kafkaConfigOverrides=transaction.state.log.num.partitions=50

最后得到

    kafka-controller-0.kafka-controller-headless.openim-dev.svc.cluster.local:9092
    kafka-controller-1.kafka-controller-headless.openim-dev.svc.cluster.local:9092
    kafka-controller-2.kafka-controller-headless.openim-dev.svc.cluster.local:9092

The CLIENT listener for Kafka client connections from within your cluster have been configured with the following security settings:
    - SASL authentication

To connect a client to your Kafka, you need to create the 'client.properties' configuration files with the content below:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="user1" \
    password="$(kubectl get secret kafka-user-passwords --namespace openim-dev -o jsonpath='{.data.client-passwords}' | base64 -d | cut -d , -f 1)";

在安装一个kafka-web

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kafka-ui
  labels:
    app: kafka-ui
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kafka-ui
  template:
    metadata:
      labels:
        app: kafka-ui
    spec:
      containers:
      - name: kafka-ui
        image: provectuslabs/kafka-ui:latest
        env:
        - name: KAFKA_CLUSTERS_0_NAME
          value: '可以自定义名字 Kafka Cluster'
        - name: KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS
          value: 'kafka-controller-0:9092,kafka-controller-1:9092,kafka-controller-2:9092'
        - name: KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL
          value: 'SASL_PLAINTEXT'
        - name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM
          value: 'PLAIN'
        - name: KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG
          value: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="user1" password="19fJTxgwnD";'
        resources:
          requests:
            memory: "256Mi"
            cpu: "100m"
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: kafka-ui
spec:
  selector:
    app: kafka-ui
  type: NodePort
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080

在这里插入图片描述
在这里插入图片描述

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值