写点什么

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:005727

评论

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

SpringBoot + Docker 实现一次构建到处运行

Java你猿哥

Java Docker Spring Boot ssm 容器化部署

WorkPlus AI助理 | 将企业业务场景与ChatGPT结合

BeeWorks

Elasticsearch与Clickhouse数据存储对比 | 京东云技术团队

京东科技开发者

数据库 elasticsearch Clickhouse 企业号 5 月 PK 榜

企业研发效能度量利器,华为云发布CodeArts Board看板服务

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

1.5万字+30张图盘点程序员面试必会MySQL索引常见的11个知识点

Java你猿哥

Java MySQL 数据 ssm 索引

内部开发者平台|自建还是购买,企业应如何选择?

SEAL安全

平台工程 企业号 5 月 PK 榜 内部开发平台

基于 Log 的通用增量 Checkpoint 在美团的进展

Apache Flink

大数据 flink 实时计算

龙博机电:90后“厂二代”,靠伙伴云零代码让中小制造业实现数字化“逆袭”

联营汇聚

视频后期特效处理软件:Motion 5 最新中文激活版

真大的脸盆

Mac Mac 软件 视频特效合成 视频特效工具 特效合成

耕升 GeForce RTX 4060 Ti 系列,为玩家带来DLSS3+1080P光追游戏体验!

极客天地

2023年,Flutter3.10版本的变化有哪些?

没有用户名丶

小程序容器

有哪些好用的企业即时通讯软件值得推荐?

BeeWorks

常用的表格检测识别方法——表格结构识别方法(上)

合合技术团队

人工智能 深度学习 算法 人工智能文字识别 表格检测

低代码平台中的分布式RPC框架(约3000行代码)

canonical

开源 dubbo RPC框架

以敏捷性为目标,构建良好企业生态

智达方通

数据驱动 数据孤岛 智达方通 全面预算管理 数据分析系统

PoseiSwap IDO在Bounce上启动在即,如何参与?

鳄鱼视界

CloudQuery v2.0.0 发布 新增数据保护、数据变更、连接管理等功能

BinTools图尔兹

数据库 国产数据库 版本发布

深度学习基础入门篇-序列模型:[11]:循环神经网络 RNN、长短时记忆网络LSTM、门控循环单元GRU原理和应用详解

汀丶人工智能

人工智能 深度学习 RNN LSTM GRU

3天速成!阿里人私用的Netty速成实战手册,3天Github星标11.5k

Java你猿哥

Java 源码 Netty ssm netty内存管理

深度学习进阶篇-预训练模型[1]:预训练分词Subword、ELMo、Transformer模型原理;结构;技巧以及应用详解

汀丶人工智能

人工智能 深度学习 预训练模型 Transformer ELMo

混沌演练实践(二)-支付加挂链路演练 | 京东云技术团队

京东科技开发者

微服务 混沌工程 混沌工程实践 企业号 5 月 PK 榜

升级正当时,高性价比的影驰 GeForce RTX™ 4060 Ti 8G开箱评测

极客天地

Flutter三棵树系列之详解各种Key | 京东云技术团队

京东科技开发者

flutter key 企业号 5 月 PK 榜 localkey

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