13594780322

加密货币,让财富增值再简单不过!

安全地从 Amazon MSK 提供的集群中移除 Kafka 代理 大数据博客

安全地从 Amazon MSK 提供的集群中移除 Kafka 代理 大数据博客

发表时间:2026-01-27

浏览次数:10

从Amazon MSK托管集群安全移除Kafka代理

关键要点

今天,我们宣布了在Amazon托管Apache Kafka流媒体服务Amazon MSK的托管集群中移除代理的功能,让您可以安全移除多个代理,而不会影响可用性、数据持久性或您数据流应用程序的中断。这一功能使得您能够减少集群的存储和计算容量,进而优化成本。

我们今天推出了在Amazon托管Apache Kafka流媒体服务Amazon MSK托管集群中进行代理移除的能力,允许您从您的集群中移除多个代理。现在,您可以通过移除一组代理来降低集群的存储和计算能力,而不会对可用性、数据持久性或数据流应用程序造成影响。Amazon MSK是一个完全托管的Apache Kafka服务,旨在帮助开发人员轻松构建和运行高可用性、安全且可扩展的流应用程序。管理员可以通过减少代理数量和调整集群容量来优化Amazon MSK集群成本,从而满足流数据需求的变化,而不影响集群的性能、可用性或数据持久性。

您可以使用Amazon MSK作为构建各种实时流应用程序和高性能事件驱动架构的核心基础。随着商业需求和流量模式的变化,集群的容量通常会进行调整以优化成本。Amazon MSK为管理员提供了灵活性和弹性,以便对MSK集群进行适当调整。您可以增加代理数量或代理大小以应对峰值事件期间的流量激增,或者减少集群中代理的实例大小以降低容量。然而,之前要减少代理数量,您必须耗费大量精力将其迁移到另一个集群。

凭借代理移除功能,您现在可以从托管集群中移除多个代理,以满足流工作负载的不同需求。在代理移除期间及之后,集群将继续处理客户端应用程序的读写请求。MSK执行必要的验证以防止数据持久性风险,并优雅地从集群中移除代理。通过使用代理移除功能,您可以精确地调整MSK集群的容量,消除需要更改集群中每个代理实例类型或迁移到其他集群以减少代理数量的需求。

虎跃加速器最新版入口

代理移除功能的运作方式

在执行代理移除操作之前,您必须使一些代理适合移除,通过将所有分区迁移到其他代理。您可以使用Kafka管理员API或Cruise Control将分区迁移到您打算保留在集群中的其他代理。

您可以选择要移除的代理,并使用Kafka工具将分区从这些代理移动到其他代理。另外,您可以有一些不托管任何分区的代理。然后,请使用AWS管理控制台中的编辑代理数量功能,或使用Amazon MSK API[UpdateBrokerCount](https//docsawsamazoncom/msk/10/apireference/clustersclusterarnnodescounthtml)。以下是如何使用此新功能的详细信息:

特性说明每次操作移除的最大代理数每个可用区AZ最多只能移除一个代理。目标代理节点数量集群中的目标代理节点数量必须是客户端子网参数中可用区数量的倍数。引导代理字符串如果被移除的代理存在于引导代理字符串中,MSK将执行必要的路由以确保客户端与集群的连接未被中断。重新添加代理随时可以使用AWS控制台或[UpdateBrokerCount](https//docsawsamazoncom/msk/10/apireference/clustersclusterarnnodescounthtml)API将代理添加回集群。兼容性代理移除支持Kafka版本281及以上。如果您有低版本集群,必须先升级到281版本。实例类型限制不支持t3small实例类型。成本及存储一旦代理移除操作成功完成,您将不再产生已移除代理的费用,同时,它们相关的本地存储也会被移除。

移除代理前的注意事项

从现有的Apache Kafka集群中移除代理是一个关键操作,需要仔细规划以避免服务中断。在决定该移除多少代理时,您需根据可用性、持久性、本地数据保留和分区数量等要求来确定您的集群最小代理数量。以下是一些您应考虑的内容:

查看Amazon CloudWatch的BytesInPerSec和BytesOutPerSec指标,观察一个月内的峰值负载。使用这些数据和MSK规模计算Excel文件来判断您需要多少代理以处理峰值负载。如果Excel文件中列出的代理数量高于移除代理后剩余的代理数量,切勿进行此操作。这意味着移除代理会导致集群中代理数量过少,可能会对集群或应用程序的可用性产生影响。检查UserPartitionExists指标,确保您在集群中每个AZ至少有一个空代理。如果没有,请确保在执行操作之前从每个AZ至少一台代理中移除分区。如果您在每个AZ中有超过一个没有用户分区的代理,MSK将在移除操作期间随机选择其中一个。查看PartitionCount指标,以了解集群中存在的分区数量。检查每代理分区限制。如果服务检测到集群中的任何代理超过了分区限制,将不允许移除代理。在这种情况下,请检查是否可以删除任何未使用的主题以释放代理资源。检查Excel文件中估算的存储是否超过当前集群的配置存储。如超过,请首先在该集群上配置额外存储。如果您遭遇每代理存储的限制,则可考虑使用MSK分层存储或删除未使用的主题。否则,请避免将分区移至少数几个代理,这可能导致磁盘容量不足的问题。如果您计划移除的代理托管分区,请确保这些分区被重新分配到集群中的其他代理。使用kafkareassignpartitionssh工具或Cruise Control发起分区重新分配。监控重新分配的进度直至完成。请忽略amazonmskcanary、amazonmskcanarystate这些内部主题,因为它们由服务管理,MSK将在执行操作时自动移除。在开始移除流程之前,请验证集群状态是否为“活动”。在您迁移这些分区后,检查生产环境中工作负载的性能。我们建议您在移除代理之前监控一周,以确保集群中的其他代理能够安全处理您的流量模式。如果在移除代理后您的应用程序或集群可用性受到任何影响,您可以使用UpdateBrokerCountAPI添加与之前移除的代理数量相同的代理,然后将分区重新分配到新添加的代理。我们建议您在非生产环境中测试整个过程,以识别并解决任何问题,然后再在生产环境中做出更改。

结论

Amazon MSK的新代理移除功能提供了一种安全的方法来减少您托管的Apache Kafka集群的容量。通过允许您在不影响可用性、数据持久性或打断流应用程序的情况下移除代理,此功能使您能够根据不断变化的商业需求和流量模式优化成本并合理调整MSK集群。通过仔细计划和遵循推荐的最佳实践,您可以自信地利用此功能,更有效地管理您的MSK资源。

立即开始利用Amazon MSK中的代理移除功能。请查看文档,并遵循逐步指南,在非生产环境中测试该过程。一旦您对工作流程感到满意,请计划并执行在生产MSK集群中的代理移除,以优化成本并使您的流媒体基础设施与不断发展的工作负载需求保持一致。

关于作者

Vidhi Taneja 是AWS的Amazon Managed Streaming for Apache Kafka Amazon MSK首席产品经理。她热衷于帮助客户构建大规模流应用程序并从实时数据中获取价值。在加入AWS之前,Vidhi曾在Apple、Goldman Sachs和Nutanix担任产品管理和工程角色。她持有卡内基梅隆大学的硕士学位。

Anusha Dasarakothapalli 是AWS的Amazon Managed Streaming for Apache KafkaAmazon MSK首席软件工程师。她2015年与Amazon开始了自己的软件工程事业,曾参与S3Glacier和S3 Glacier Deep Archive等产品的开发,2022年转型至MSK。她的主要关注领域是流技术、分布式系统和存储。

Masudur Rahaman Sayem 是AWS的流数据架构师。他与全球AWS客户合作,设计和构建数据流架构以解决现实世界中的商业问题。他专注于优化使用流数据服务和NoSQL的解决方案,并对分布式计算充满热情。

安全地从 Amazon MSK 提供的集群中移除 Kafka 代理 大数据博客