ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Strimzi KRaft模式部署指南:无ZooKeeper的Kafka集群如何配置?

Strimzi KRaft模式部署指南:无ZooKeeper的Kafka集群如何配置? Strimzi KRaft模式部署指南无ZooKeeper的Kafka集群如何配置【免费下载链接】strimzi-kafka-operatorApache Kafka® running on Kubernetes项目地址: https://gitcode.com/GitHub_Trending/st/strimzi-kafka-operatorStrimzi 是运行在 Kubernetes 上的 Apache Kafka® 发行版通过 Cluster Operator 自动化管理 Kafka 集群的创建、升级与扩缩容。从 Kafka 4.0 开始KRaft 模式Kafka Raft 元数据彻底取代了 ZooKeeper 依赖Strimzi 也随之移除对 ZooKeeper 集群的支持——如今部署无 ZooKeeper 的 Kafka 集群只需两个自定义资源Kafka与KafkaNodePool。本文将带你用最少的配置完成 Strimzi KRaft 模式部署并讲清每种节点角色的取舍。一、为什么选择 KRaft 模式部署 Kafka传统 Kafka 依赖一个独立的 ZooKeeper 集群来存储元数据和协调集群状态这意味着多维护一套有状态组件。KRaft 模式把元数据管理直接内置到 Kafka 中更少组件无需部署和运维 ZooKeeper降低操作与安全风险更高效率元数据以__cluster_metadata单分区日志形式存储通过 Raft 共识协议复制更强扩展性Broker 与控制平面解耦架构更简洁需要注意的是Kafka 4.0 仅以 KRaft 模式运行因此使用 Strimzi 0.46 部署新集群时KRaft 不是可选项而是唯一路径。旧版 ZooKeeper 集群需要先迁移再升级参考 con-migrate-kraft-pre-0.39.adoc。二、核心概念两个资源搞定整个集群在 KRaft 模式下Strimzi 用两个自定义资源描述集群资源职责关键属性Kafka集群级配置version、metadataVersion、listeners、configKafkaNodePool节点池一组同角色节点roles、replicas、storage节点池通过.spec.roles声明节点扮演的角色这正是 KRaft 的精髓Controller控制平面管理集群元数据与状态Broker数据平面负责消息的读写与存储Dual-role双角色一个节点同时承担两者适合开发测试KafkaNodePool中未指定的配置会继承自Kafka资源因此集群统一配置 节点池差异化配置的组合非常灵活。官方对节点池的详细设计说明见 con-kafka-concepts-node-pools.adoc。三、三种部署模式按需选择Strimzi 在 examples/kafka/ 目录下提供了现成的 KRaft 部署示例覆盖典型场景3.1 开发测试双角色节点推荐起步示例文件kafka-with-dual-role-nodes.yaml3 个节点同时担任 Controller 和 Broker一个节点池搞定一切配置最简单kind: KafkaNodePool spec: replicas: 3 roles: - controller - broker3.2 生产环境Controller 与 Broker 分离示例文件kafka-persistent.yaml生产环境推荐专用 3 个 Controller 节点 独立的 Broker 节点池Controller 不受消息流量干扰Broker 池可独立扩缩容故障域更清晰。3.3 单机体验一个节点全都要示例文件kafka-single-node.yaml适合本地学习 KRaft 架构将副本因子调为 1 即可运行。四、快速部署步骤5 分钟跑起来1️⃣安装 Cluster Operator应用 install/cluster-operator/ 下的清单文件CRD、RBAC、ConfigMap 与 Deployment 已齐备。2️⃣获取示例文件如需克隆仓库git clone https://gitcode.com/GitHub_Trending/st/strimzi-kafka-operator3️⃣应用 KRaft 集群以双角色节点为例kubectl apply -f examples/kafka/kafka-with-dual-role-nodes.yaml4️⃣检查部署状态kubectl get pods当输出中my-cluster-pool-a-0/1/2的STATUS显示Running时集群就绪。节点 ID 从 0 开始跨所有节点池连续分配扩容/缩容规则详见 proc-deploy-kafka-cluster-kraft.adoc。五、必须了解的关键配置metadataVersionKRaft 元数据版本必须与version中的 Kafka 版本兼容两者都在Kafka资源中声明示例中使用4.3.14.3-IV0。副本因子生产环境建议显式设置default.replication.factor: 3、min.insync.replicas: 2。⚠️ 若删除min.insync.replicasCluster Operator 会强制回退为 1降低持久性。kraftMetadataJBOD 多卷存储时可用该属性指定元数据日志存放的磁盘卷说明见 con-config-storage-kraft-metadata.adoc。静态仲裁限制当前 Strimzi 使用静态 Controller 仲裁不支持动态增删/扩缩 Controller 节点池改造角色前请阅读 assembly-kraft-mode.adoc 中的限制章节。六、安全与生产建议启用 TLS官方示例均配置了plain(9092) 与tls(9093) 双监听器生产环境客户端应走 TLS 端口命名空间隔离同一命名空间内不要部署多个 Kafka 集群避免命名冲突资源配额为节点池设置resources的 requests/limits避免资源争抢Entity Operator保留entityOperator配置自动获得 Topic 与 User 管理能力七、继续深入文档与源码索引想了解什么去哪里看Kafka 完整配置属性con-config-kafka-kraft.adoc节点池配置详解con-config-node-pools.adoc节点角色变更拆池/合池con-config-node-pool-roles.adoc集群 API 模型源码api/src/main/java/io/strimzi/api/kafka/model/kafka/Cluster Operator 核心代码cluster-operator/src/main/java/更多部署示例examples/kafka/ 与 examples/security/总结Strimzi 让无 ZooKeeper 的 Kafka变得极其简单一份Kafka资源定集群一个或多个KafkaNodePool定角色kubectl apply之后即可得到完整运行的 KRaft 模式集群。开发用双角色节点起步生产用 Controller/Broker 分离架构——掌握这两套模式你已经完成了 KRaft 集群部署的核心功。【免费下载链接】strimzi-kafka-operatorApache Kafka® running on Kubernetes项目地址: https://gitcode.com/GitHub_Trending/st/strimzi-kafka-operator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表