我认为您可以通过创建新的自定义层并将您的Chef配方添加到相关的生命周期钩子来设置这个。但我不确定应该把哪些配方放在哪里。
有人能帮忙教一下如何通过Chef将MongoDB添加到AWS Opsworks吗?
我看到有一个社区MongoDB食谱,但据我所知它与Opsworks不兼容。
有人有设置这个经验吗?
请帮忙解决这个问题,非常感谢。
Rick
几个月前,我尝试在OpsWorks中设置了一个MongoDB三节点副本集。现在我想分享一下我的经验:
1) 如何安装单个MongoDB: 使用EDelight Chef MongoDB Cookbook,安装单个MongoDB非常容易。只需将其作为自定义的opsworks chef存储库的子模块添加即可。
要使它工作,请创建一个自定义层并称其为MongoDB,并执行以下操作:
这将安装最新版本的MongoDB。
注意:我使用的是Ubuntu实例。
2) MongoDB最佳实践 如果您与MongoDB工程师或客户服务代表交谈,他们都会告诉您MongoDB的推荐设置是3个节点的副本集。这意味着一个主节点和两个读取副本,最好位于不同的可用区。此外,理想的设置将具有大量的RAM,举个例子:在AWS市场中可以找到的由MongoDB提供的最小实例是标准large:
您还需要考虑在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,但最终没有使用。希望这能为您节省一些时间和麻烦。