在EC2上部署Cassandra?

Stu*_*art 6 ruby-on-rails heroku amazon-ec2 cassandra

我知道Cassandra仍处于测试阶段,但我想玩它.这绝不是一个生产项目; 这只是为了娱乐和学习一点点.但最好的学习方法是实际部署并让人们通过它的步伐.

我想将Cassandra与Heroku一起使用,所以我想将它部署在EC2上(就像Heroku一样).什么是最好,最简单,最便宜的方式?有什么建议?

我通过谷歌看过一些,但他们警告说:EC2实例不适合生产使用.它们将数据存储在实例本身上,并在实例关闭时消失.

yfe*_*lum 4

  • 使用弹性块存储 (EBS) 实例来存储 Cassandra 日志和数据文件。您将需要更改/etc/cassandra/cassandra.yaml以指定这些文件的位置。EBS 实例在它们所连接的 EC2 实例关闭后仍然存在。

  • 您可以将其安装在一个实例上以试用该界面并试验数据模型。您还不需要设置集群。

  • 要测试集群功能,您可以尝试设置三个实例,并将所有键空间的复制因子设置为 3。但这可能是比数据模型实验更晚的实验阶段。建议的最小簇大小为 3。

  • 您应该尝试不同的机器尺寸。要试验超小实例大小,您可以使用 Rackspace 等替代供应商。如果您遇到较小实例大小的性能问题,请查看增大实例大小是否可以解决这些问题。

  • Rails 有一些 alpha Cassandra-Object-Mapping 库。您可能会发现这些不太适合您。您可以选择回馈他们,或者直接在模型中实现模型持久性代码。对于 Rails 3 应用程序,您可能需要查看 ActiveModel 接口和帮助程序模块,以便您的模型能够与 ActionPack 和其他需要 ActiveModel 兼容模型的库良好配合。

  • 这个回应确实已经过时了。首先,没有人将 EBS 与 cassandra 一起使用。说真的,不要这样做。相反,使用 ext4 创建所有临时磁盘的 LVM RAID-0 卷。使用 m1.xlarge 因为它有四个临时节点,并且 I/O 带宽是 EC2 上的最大瓶颈。确保跨可用区对节点进行条带化,以便能够承受网络分割/完整可用区中断。编写一个 cron 作业来定期执行 nodetool 快照并上传到 S3 进行备份。同样,由于 I/O 带宽是您最大的敌人,因此一旦投入生产,您更有可能扩大集群而不是增加实例大小。 (2认同)