在 AWS 上自动缩放 Cassandra 集群

Autoscaling a Cassandra cluster on AWS

我一直在尝试在 Amazon EC2 实例上自动扩展具有复制因子 3 和一致性级别 1 的 3 节点 Cassandra 集群。尽管有负载均衡器,其中一个自动缩放节点的利用率为零 CPU,而另一个自动缩放节点上有相当大的流量。

我已经尝试了 4 次以上来使用 RF3CL1 自动缩放一个 3 节点,并且其中一个自动缩放节点上的 CPU 利用率仍然为零。总体 CPU 利用率有所下降,但其中一个自动缩放节点从自动缩放点开始一直处于空闲状态。

请注意,在自动缩放时启动的两个节点由相同的启动配置启动。这两个节点在各个方面都具有相同的配置。有一个触发节点的警报,并且根据该警报设置缩放策略。

能否有一个bash脚本可以运行在用户数据上?

例如,改变键空间?

谁能告诉我这种行为背后的原因是什么?

AWS 自动缩放和负载均衡不适合 Cassandra。 Cassandra 有自己的内置集群,带有种子节点来发现集群的其他成员,因此不需要 ELB。自动缩放可能会把你搞砸,因为数据必须在节点之间重新平衡。

https://d0.awsstatic.com/whitepapers/Cassandra_on_AWS.pdf

是的,Cassandra 不需要 ELB。

所以你创建了一个单节点 Cassandra,并创建了一些键空间。然后,您将 Cassandra 扩展到三个节点。您发现一个新节点在访问现有密钥空间时处于空闲状态。这种理解是否正确?您是否将现有密钥空间的复制因子更改为 3?如果不是,现有键空间的数据仍将有 1 个副本。

在添加新节点时,Cassandra会自动平衡一些代币给新节点。这可能就是您在其中一个新节点上看到负载的原因,它恰好获得了一些具有键空间数据的令牌。