2013-09-05 82 views
11

我想在AWS Opsworks上设置Rails堆栈,我想将mongodb用作数据库。通过AWS设置mongodb opsworks

我认为你通过创建一个新的自定义层和增加你的厨师reciepts到相关的生命周期挂钩设置它,但我不能确定什么收据放在哪里。

任何人都可以用如何通过一个厨师AWS Opsworks添加MongoDB的帮助?

我看到有一个社区MongoDB的食谱但是从我所看到的不兼容Opsworks。

有没有人有任何设置这个经验?

请任何人都可以帮忙。

非常感谢 里克

+0

你最终为此做了什么? – gmaniac

回答

1

我只是测试在github这个回购,它适用于MongoDB的/ OpsWorks。转到OpsWorks>图层>在“自定义厨师食谱”部分中引用此github链接“https://github.com/Cyclic/cookbooks”,然后将“yum :: default”添加到安装程序生命周期事件。然后在安装程序生命周期事件中添加“mongodb :: 10gen_repo”“mongodb :: default”和“mongodb :: 10gen_remrepo”

5

我试着在几个月前在OpsWorks中设置了一个MongoDB 3节点副本集。我会分享一些我的经验:

1)如何安装单一的MongoDB: 这是可能的和容易使用EDelight Chef MongoDB Cookbook安装单个的mongodb。只需将其作为子模块添加到您的自定义opsworks厨师存储库中即可。

为了得到它的工作创建一个自定义层,并调用它的MongoDB和excecute以下食谱

  • SETUP:MongoDB的:10gen_repo
  • CONFIGURE:MongoDB的:默认

这将安装最新版本的MongoDB。

注意:我使用了Ubuntu实例。

2)MongoDB的最佳实践 如果你跟MongoDB的工程师或客户服务代表,他们都会告诉你,MongoDB的推荐的设置是一个3节点副本集。这意味着一个主副本和两个只读副本有望用于不同的可用区域。也是一个理想的设置将有很多的RAM,给你一个例子:通过MongoDB中提供的最小的情况下,你可以在AWS市场上找到的是一个标准的大:

MongoDB instance on AWS marketplace

你还必须考虑使用上RAID10 EBS,也许保留IOPS ...

请参阅白皮书MongoDB on AWS获取更多信息。

3)安全考虑 理想情况下,您只希望应用程序实例访问数据库实例。在AWS中,您可以使用自定义规则创建一个安全组,并将EC2实例分配给您刚刚创建的组......对于OpsWorks来说,这不是这样,因为它会强制您使用具有非常宽松限制的默认安全组。 AWS将始终采用宽松的权限而不是严格的权限。

4)时间和金钱的考虑 如果推荐的设置是一个3节点复制使用大量实例设置你正在寻找至少$ 600(需求)为DB,这不会增加预留IOPS,EBS , 等等。自动执行此设置可能并非易事。这将需要时间或专家在这个问题上让你走。如果你有资源和人员来处理这个问题,那就去做吧。如果你是一个小型开发团队的一部分,他们希望编写更多的代码并做更少的操作,请继续阅读。

5)找到一个可靠的托管解决方案 起初我不愿意使用提供MongoDB作为服务的第三方公司的想法。经过对不同选项(Managed,AWS Marketplace,OpsWorks,Direct EC2安装)的大量评估后,我得出结论:对于我们的小团队来说,最好的做法是使用MongoLab或MongoHQ。他们托管和管理各种规模和价格的MongoDB实例。他们甚至让你选择主机(AWS,Rackspace等),地区和AZ。如果单看硬件,明智的价格会更加昂贵,但正如我之前提到的,您不仅需要考虑价格,还需要考虑MongoDB需要的运行时间。

我一直在那里,这样做,并最终没有使用OpsWorks来承载MongodDB。希望这会为你节省一些时间和头痛。