首页 > 解决方案 > 如何在 AWS 上自动扩展 Cassandra 集群或如何根据负载动态连接到集群

问题描述

我一直在尝试在 Amazon EC2 实例上使用复制因子 3 和一致性级别 1 自动扩展 3 节点 Cassandra 集群。

我需要执行哪些步骤才能根据应用程序的负载动态地将节点添加/删除到集群中?

标签: amazon-web-servicesamazon-ec2cassandracassandra-3.0

解决方案


不幸的是,对当前负载的扩展和缩减响应并不简单,如果你有一个包含大量数据的集群,这将是不可能的:

  • 您不能同时将多个节点添加到集群中,所有操作都必须是顺序的。
  • 添加或删除节点将需要将数据流进或出节点;这将取决于您的数据大小以及您使用的 EC2 实例类型(用于网络带宽限制);此外,如果您使用实例存储或 EBS 也会有所不同(EBS 会限制您的 IOPS)
  • 您提到您正在使用 AWS 并且复制因子为 3,您是否还使用不同的可用区(AZ)?如果是这样,EC2Snitch 将努力确保它们之间的信息平衡,以便具有弹性,当您扩大和缩小规模时,您需要保持 AZ 之间的均匀分布。
  • 缩放操作将导致令牌分配的重新排列,一旦完成,您将需要进行清理(nodetool cleanup)以删除节点不再使用的数据;这个操作也需要时间。如果您因为空间不足而进行扩展,请记住这一点。

对于我们的用例,我们采取积极主动的方法取得了良好的效果,我们设置了积极的警报/监控策略以进行早期检测,因此我们可以在对性能产生任何影响之前开始扩大运营。如果您的应用程序或用例具有可预测的使用模式,也可以帮助您采取措施为高工作负载时期做好准备。


推荐阅读