速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Grab 改进 Kubernetes 集群中的 Kafka 设置,无需人工干预就可轮换 Broker 节点

作者:Rafal Gancarz

  • 2024-02-29
    北京
  • 本文字数:1150 字

    阅读完需:约 4 分钟

Grab 改进 Kubernetes 集群中的 Kafka 设置,无需人工干预就可轮换 Broker 节点

Grab 更新了其 Kubernetes 上的 Kafka 设置以提高容错性,并完全避免在 Kafka Broker 意外终止时需要进行人工干预。为解决最初设计的不足,Grab 的团队集成了 AWS 节点终止处理程序(Node Termination Handler,NTH),使用负载均衡器控制器进行目标组映射,并切换到 ELB 卷进行存储。


作为其 Coban 实时数据平台的一部分,Grab 已经在 Kubernetes (EKS) 上使用 Strimzi 在生产环境中运行 Apache Kafka 两年了。团队之前使用了 Strimzi(现已成为 CNCF 孵化项目),通过应用成熟的身份验证、授权和保密机制来提升 Kafka 集群的安全性。


除了由于维护或基础设施问题导致 AWS 意外终止 EKS 节点外,初始设置运行良好。在这种情况下,Kafka 客户端会突然遇到错误,因为 Broker 没有被优雅地降级。更糟糕的是,受影响的 Broker 实例无法在新配置的 EKS 工作节点上重新启动,因为 Kubernetes 仍然指向已经不存在的存储卷。因此,如果没有 Coban 工程师的干预,Kafka 集群将以降级状态运行,三个 Broker 节点中只有两个可用。


开发人员利用 AWS 节点终止处理程序(NTH)将对 Kafka 客户端的干扰降至最低,通过排空工作节点,使用 SIGTERM 信号触发 Kafka 进程优雅地关闭。Grab 团队选择使用队列处理器模式而不是实例元数据服务(IMDS)模式,因为它捕获了更广泛的事件集合,包括与可用区(AZ)和自动扩展组(ASG)有关的事件。



使用 AWS 节点终止处理程序(队列处理器)支持 Kafka 的优雅关闭(来源:Grab 工程博)


他们使用 AWS 负载均衡器控制器(LBC)动态映射网络负载均衡器(NLB)目标组来解决工作节点终止时网络连接中断的问题。工程师们通过增加健康检查频率并使用 Pod 就绪门(Pod Readiness Gate)控制器来配置 NLB,解决 NLB 将每个目标组标记为健康状态所需的时间过长的问题。


他们最后需要克服的一个最大的障碍是确保新配置的 Kafka 工作节点能够正确启动并访问数据存储卷。工程师们决定使用弹性块存储(EBS)卷而不是 NVMe 实例存储卷。使用 ESB 有许多好处,例如成本更低、将卷大小与实例规格解耦、更快的同步速度、快照备份以及在不停机的情况下增加容量。此外,他们将 EC2 实例类型从存储优化改为通用型或内存优化型。


通过对 Kubernetes 和 Strimzi 进行额外配置,能够在新集群上自动创建 EBS 卷,并在将 Kafka Pod 重定位到不同工作节点时在 EC2 实例之间附加 / 分离卷。



经过这些改进,EC2 实例退役以及任何需要对所有工作节点进行轮换的操作都可以在没有人工干预的情况下进行,这些操作变得更快速、更不容易出错。他们正在计划做进一步的改进,包括使用 NTH Webhook 主动启动新实例并通过 Slack 通知 NTH 发起的操作,以及推出 Karpenter,用以取代 Kubernetes Cluster Autoscaler。


查看英文原文


https://www.infoq.com/news/2024/02/grab-kafka-kubernetes-aws-nth/

2024-02-29 10:005445

评论

发布
暂无评论
发现更多内容

网络安全之SQL注入深入分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 SQL注入

基于RPA的自动化优先,正在成为广大组织的主流管理思维

王吉伟频道

RPA 机器人流程自动化 业务流程管理 自动化优先 业务流程自动化

浪潮云跻身中国政务大数据管理平台市场领导者位置

云计算 云计算运维

TypeScript 之模板字面量类型

冴羽

JavaScript typescript 翻译 大前端

如何对Android 11进行网络状态监听

Changing Lin

12月日更

华为云数据库GaussDB(for Influx)揭秘第二期:解密GaussDB(for Influx)的数据压缩

华为云开发者联盟

数据库 时序数据库 GaussDB(for Influx) 时序数据 数据压缩

视镜:华为云媒体质量管理最新实践

华为云开发者联盟

音视频 华为云 媒体质量 视镜

焱融 YRCloudFile 连获两项重量级认证,展现强劲存储实力!

焱融科技

云计算 分布式 云原生 高性能 文件存储

漏洞检测方法如何选?详解源代码与二进制SCA检测原理

华为云开发者联盟

安全 漏洞 软件成分分析 源代码SCA检测 二进制SCA检测

架构训练营-模块一作业

zhongwy

架构实战营

低代码实现探索(四)前端组件核心模型

零道云-混合式低代码平台

基于云的技术架构设计实践 - 第3篇

hackstoic

签约计划第二季 业务安全

愿当传播通信技术火种的普罗米修斯

融云 RongCloud

通信云 技术大会

如何处理工作与生活之间的冲突?

石云升

28天写作 职场经验 12月日更

如何建成有效的前端效能度量体系

benyasin

大前端 研发效能 研发度量 研发提效

前端领域的数据状态统一管理机制

鲸品堂

大前端

清空数组的几个方式

CRMEB

低代码平台是伪需求?不好意思,你的同行已经靠它完成转型升级了!

J2PaaS低代码平台

低代码 低代码开发 低代码开发平台 低代码平台

选课排课软件原生开发选课排课小程序模式源码开发

风行无疆

实用机器学习笔记六:数据清理

打工人!

机器学习 算法 学习笔记 12月日更 实用机器学习

复杂场景下,通信云服务商如何赋能开发者

融云 RongCloud

音视频 通信云 语音社交

风口之下,音视频应用出海的三大机遇

融云 RongCloud

音视频 通信 出海

7个连环问揭开java多线程背后的弯弯绕

华为云开发者联盟

Java 多线程 工作内存 主内存

青藤:一招制敌!微隔离,让勒索软件不再横行

青藤云安全

低代码实现探索(三)后台模型执行设计

零道云-混合式低代码平台

直播:开发者如何抵达元宇宙

融云 RongCloud

开发者 元宇宙

搭积木一样实现语音社交软件开发

融云 RongCloud

开发者 通信云 语音社交

6.《重学JAVA》--数据类型

杨鹏Geek

Java 25 周年 28天写作 12月日更

【架构实战营】模块六

衣谷

架构实战营

架构实战营:模块一作业

Geek_93ffb0

「架构实战营」

安全第二话

张老蔫

28天写作

Grab 改进 Kubernetes 集群中的 Kafka 设置,无需人工干预就可轮换 Broker 节点_AI&大模型_InfoQ精选文章