通过AWS OpsWorks设置MongoDB

11
我想在AWS Opsworks上设置Rails堆栈,并且希望使用MongoDB作为数据库。
我认为您可以通过创建新的自定义层并将您的Chef配方添加到相关的生命周期钩子来设置这个。但我不确定应该把哪些配方放在哪里。
有人能帮忙教一下如何通过Chef将MongoDB添加到AWS Opsworks吗?
我看到有一个社区MongoDB食谱,但据我所知它与Opsworks不兼容。
有人有设置这个经验吗?
请帮忙解决这个问题,非常感谢。
Rick

你最终为此做了什么? - gmaniac
2个回答

5

几个月前,我尝试在OpsWorks中设置了一个MongoDB三节点副本集。现在我想分享一下我的经验:

1) 如何安装单个MongoDB: 使用EDelight Chef MongoDB Cookbook,安装单个MongoDB非常容易。只需将其作为自定义的opsworks chef存储库的子模块添加即可。

要使它工作,请创建一个自定义层并称其为MongoDB,并执行以下操作:

  • SETUP: mongodb:10gen_repo
  • CONFIGURE: mongodb:default

这将安装最新版本的MongoDB。

注意:我使用的是Ubuntu实例。

2) MongoDB最佳实践 如果您与MongoDB工程师或客户服务代表交谈,他们都会告诉您MongoDB的推荐设置是3个节点的副本集。这意味着一个主节点和两个读取副本,最好位于不同的可用区。此外,理想的设置将具有大量的RAM,举个例子:在AWS市场中可以找到的由MongoDB提供的最小实例是标准large:

MongoDB instance on AWS marketplace

您还需要考虑在RAID10上使用EBS,可能是预留的IOPS...

请参阅白皮书MongoDB on AWS了解更多信息。

3) 安全性考虑 理想情况下,您只希望应用程序实例访问DB实例。在AWS中,您可以创建具有自定义规则的安全组,并将EC2实例分配给您刚刚创建的组...但是,在OpsWorks中并非如此,因为它会强制您拥有具有非常松散限制的默认安全组。AWS始终采用较宽松权限而不是较严格的权限。

4) 时间和金钱考虑 如果推荐的设置是使用大型实例的3个节点副本集,则至少需要$600(按需)来购买DB,这还没有包括保留的IOPS、EBS等。自动化此设置是可能的,但并不简单。它需要时间或该领域的专家才能使其正常运行。如果您有资源和人员来处理这个问题,请继续。如果您是一个小型开发团队的一部分,希望编码更多,操作更少,请继续阅读。

5) 寻找可靠的托管解决方案 起初,我对使用提供MongoDB服务的第三方公司的想法有所犹豫。经过对不同选项(托管、AWS Marketplace、OpsWorks、直接EC2安装)进行深入评估后,我得出结论,对于我们的小团队,最好的选择是使用MongoLab或MongoHQ。他们提供各种规模和价格的MongoDB实例的托管和管理服务。他们甚至可以让您选择托管(AWS、Rackspace等)、区域和AZ。从硬件成本来看,价格可能会更昂贵,但正如我之前提到的,您必须考虑MongoDB所需的操作时间,而不仅仅是价格。

我曾经尝试使用OpsWorks来托管MongodDB,但最终没有使用。希望这能为您节省一些时间和麻烦。


1
我刚在GitHub上测试了这个仓库,它适用于MongoDB / OpsWorks。前往OpsWorks > Layers,在“自定义Chef配方”部分引用此GitHub链接 "https://github.com/Cyclic/cookbooks",然后将"yum::default"添加到设置生命周期事件中。然后将"mongodb::10gen_repo"、"mongodb::default"和"mongodb::10gen_remrepo"添加到设置生命周期事件中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接