扫码阅读
手机扫码阅读

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

100 2024-07-18

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

文章摘要

Grab在Kubernetes上优化Kafka设置以提高容错性

Grab对其在Kubernetes上运行的Apache Kafka集群做出了重大更新,以增强容错能力,消除Broker意外终止时的人工干预需求。这些改进是对初始设计的缺陷的回应,包括集成AWS节点终止处理程序(NTH),使用负载均衡器控制器进行目标组映射,以及切换到ELB卷以提高存储性能。

原始设置和面临的挑战

Grab的Coban实时数据平台已经在EKS上通过Strimzi运行Apache Kafka两年。之前的设置在AWS意外终止EKS节点时存在问题,导致客户端遇到错误,Broker没有优雅降级,且不能在新节点上重新启动。这需要工程师手动干预以保持Kafka集群运行。

解决方案

为了最小化Kafka客户端的中断,Grab团队引入了AWS节点终止处理程序(NTH),采用队列处理器模式,以便更广泛地捕获事件,并通过SIGTERM信号实现Kafka进程的优雅关闭。同时,通过AWS负载均衡器控制器(LBC)动态映射NLB目标组,提高了网络连接的稳定性,并通过调整健康检查频率及Pod就绪门控制器,加快了NLB目标组健康状态的标记速度。

为了确保新配置的Kafka工作节点能够正确启动并访问数据存储卷,团队选择使用弹性块存储(EBS)卷。这带来了多项好处,包括降低成本、解耦卷大小与实例规格、加快同步速度、支持快照备份以及在不停机的情况下增加容量。他们还从存储优化型EC2实例切换到通用型或内存优化型实例。

未来计划

这些改进使得EC2实例的退役和工作节点的轮换可以在无需人工干预的情况下进行,提高了效率并减少了出错的可能性。未来,Grab计划进一步改进,包括使用NTH Webhook主动启动新实例,并通过Slack通知NTH发起的操作,以及推出Karpenter以取代Kubernetes Cluster Autoscaler。

声明:本文为InfoQ翻译,未经许可禁止转载。

想要了解更多内容?

为一线互联网公司核心技术人员提供优质内容。科技圈的观察者,前沿技术的传播者。

98 篇文章
浏览 13.7K
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设 白皮书上线