最佳实践cassandra在ec2上设置大量数据

Joh*_*n Z 15 storage amazon-ec2 amazon-web-services cassandra

我正在从物理机器到ec2实例进行大规模迁移.

截至目前,我有3个x.large节点,每个节点有4个实例存储驱动器(raid-0 1.6TB).在我这样设置之后,我记得"实例存储卷上的数据仅在关联的Amazon EC2实例的生命周期内持续存在;如果停止或终止实例,实例存储卷上的任何数据都将丢失."

人们通常在这种情况下做什么?我担心,如果其中一个盒子崩溃,那么如果不是100%在另一个盒子上复制,那么所有数据都将在该盒子上丢失.

http://www.hulen.com/?p=326 我在上面的链接中读到这些人使用ephermal驱动器并使用EBS驱动器和快照定期备份内容."

在这里的这个问题:我如何备份aws ec2实例/临时存储? 人们声称您无法将ephermal数据备份到EBS快照上.

我最好选择使用几个EBS驱动器并将它们组合在一起并能够直接从它们拍摄快照吗?我知道这可能是最昂贵的解决方案,但它似乎最有意义.

任何信息都会很棒.

感谢您的时间.

Ary*_*rya 50

我在EC2上运行Cassandra超过2年.要解决您的问题,您需要在EC2上为您的Cassandra集群构建适当的可用性架构.这是一个供您考虑的项目清单:

  1. 至少考虑3个区域来设置集群;
  2. 将NetworkTopologyStrategy与EC2Snitch/EC2MultiRegionSnitch一起使用,将数据的副本传播到每个区域; 这意味着每个区域中的机器将整合您的完整数据集; 例如,strategy_options就像{us-east:3}.

以上两个提示应满足AWS中的基本可用性,如果您使用LOCAL_QUORUM发送查询,即使一个区域出现故障,您的应用程序也会正常运行.

如果您担心2个区域出现故障(请勿回忆起我在过去2年中使用过AWS),那么您还可以向群集中添加另一个区域.

有了上述内容,如果任何节点因任何原因而死亡,您可以从其他区域中的节点恢复它.毕竟,CAssandra旨在为您提供这种可用性.

关于EBS vs Ephemeral:

我一直反对在任何生产中使用EBS卷,因为它是可用性方面最糟糕的AWS服务之一.它们每年都会下降几次,它们的缺点通常会流向其他AWS服务,如ELB和RDS.它们也像附加的网络存储,因此任何读/写都必须通过网络.不要使用它们.甚至DataStax也不推荐它们:

http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/architecture/../../cassandra/architecture/architecturePlanningEC2_c.html

关于备份:

我使用了一个名为Priam(https://github.com/Netflix/Priam)的解决方案,该解决方案由Netflix编写.它可以拍摄群集的夜间快照,并将所有内容复制到S3.如果启用incremental_backups,它还会将增量备份上载到S3.如果节点出现故障,您可以使用简单的API调用在特定节点上触发恢复.它可以更快地恢复,并且不会在您的其他节点上放置大量的流负载.我还添加了一个补丁,让你做一些奇特的事情,比如在一个AWS区域内启动多个DC.

你可以在这里阅读我的设置:http: //aryanet.com/blog/shrinking-the-cassandra-cluster-to-fewer-nodes

希望以上有所帮助


Ric*_*ico 5

这真的取决于你的数据.但首先,您必须考虑Cassandra有自己的备份/复制机制.如果其中一个节点发生故障,其他节点仍将设置您的数据.复制因子越高,您的数据就越"安全",复制因子越高,您需要的Cassandra节点就越多.

如果您的数据非常关键,您必须问自己,您是否可以有效地重建数据而无需在短暂存储中进行备份?你在寻找更好的表现吗?短暂存储比EBS执行得更好,如果您的应用程序是读/写密集型的,它会很好用.在我们的例子中,我们使用Cassandra和短暂的存储空间来填充我们已经存储在Amazon S3中的数据.

如果您无法重建数据并且数据非常关键并且您不信任Cassandra,则可以始终使用EBS,从而降低性能.Cassandra的问题在于,如果群集中的所有节点都相同,它的效果最佳.所以说一些节点短暂支持并且一些节点EBS支持并不容易.除非你想用EBS支持的集群完全复制你的短暂集群,否则它不是直截了当的.

由于主从设置,您可以使用EBS支持的实例(从临时存储实例)更轻松地复制mysql或couchdb实例.例如,您可以使您的mysql主服务器在临时存储实例上运行,并且您的mysql从服务器在EBS支持的实例上运行.

关于Ephemeral与EBS的另一个讨论在这里:

如何备份aws ec2实例/临时存储?

希望能帮助到你.