我正在尝试在 AWS Opsworks 上设置 Rails 堆栈,并且我想使用 mongodb 作为数据库。
我认为您可以通过创建一个新的自定义层并将您的厨师收据添加到相关的生命周期挂钩来进行设置,但我不确定将哪些收据放在哪里。
任何人都可以帮助如何通过厨师将 mongodb 添加到 AWS Opsworks?
我看到有一个社区 mongodb 食谱,但据我所知,它与 Opsworks 不兼容。
有没有人有任何设置的经验?
请任何人都可以帮助解决这个问题。
非常感谢瑞克
我正在尝试在 AWS Opsworks 上设置 Rails 堆栈,并且我想使用 mongodb 作为数据库。
我认为您可以通过创建一个新的自定义层并将您的厨师收据添加到相关的生命周期挂钩来进行设置,但我不确定将哪些收据放在哪里。
任何人都可以帮助如何通过厨师将 mongodb 添加到 AWS Opsworks?
我看到有一个社区 mongodb 食谱,但据我所知,它与 Opsworks 不兼容。
有没有人有任何设置的经验?
请任何人都可以帮助解决这个问题。
非常感谢瑞克
几个月前,我尝试在 OpsWorks 中设置 MongoDB 3 节点副本集。我将分享一点我的经验:
1) 如何安装单个 MongoDB:使用EDelight Chef MongoDB Cookbook 可以轻松安装单个 mongodb 。只需将其作为子模块添加到您的自定义 opsworks chef 存储库中即可。
为了让它工作,创建一个自定义层并将其命名为 MongoDB 并执行以下配方
这将安装最新版本的 MongoDB。
注意:我使用了 Ubuntu 实例。
2) MongoDB 最佳实践 如果您与 MongoDB 工程师或客户服务代表交谈,他们都会告诉您推荐的 MongoDB 设置是 3 节点副本集。这意味着一个主副本和两个只读副本有望在不同的可用区中。此外,理想的设置将具有大量 RAM,举个例子:您可以在 AWS 市场上找到的 MongoDB 提供的最小实例是标准大型实例:
您还必须考虑在 RAID10 上使用 EBS,也许是保留 IOPS...
有关更多信息,请参阅白皮书MongoDB on AWS。
3) 安全考虑 理想情况下,您只希望应用程序实例访问数据库实例。在 AWS 中,您可以创建一个具有自定义规则的安全组,并将 EC2 实例分配给您刚刚创建的组......对于 OpsWorks 而言,情况并非如此,因为它强制您拥有限制非常宽松的默认安全组。AWS 将始终采用宽松的权限而不是更严格的权限。
4) 时间和金钱注意事项 如果推荐的设置是使用大型实例的 3 节点副本集,那么您至少需要 600 美元(按需)来购买数据库,并且这不会增加预留的 IOPS、EBS 等。自动化此设置是可能的,但并不简单。这需要时间或该主题的专家才能让您继续前进。如果你有资源和人员来处理这个问题,那就去吧。如果您是一个小型开发团队的一员,他们希望编写更多代码并减少操作,请继续阅读。
5) 找到可靠的托管解决方案 起初,我不愿意使用提供 MongoDB 作为服务的第三方公司的想法。在对不同的选项(托管、AWS Marketplace、OpsWorks、直接安装 EC2)进行大量评估后,我得出结论,对于我们的小团队来说,最好的办法是使用 MongoLab 或 MongoHQ。他们托管和管理各种规模和价格的 MongoDB 实例。他们甚至让您选择托管(AWS、Rackspace 等)、区域和可用区。如果你只看硬件,价格会更贵,但就像我之前提到的,你不仅要考虑价格,还要考虑 MongoDB 所需的运行时间。
我去过那里,做过,最后没有使用 OpsWorks 来托管 MongodDB。希望这将为您节省一些时间和头痛。
我刚刚在 github 上测试了这个 repo,它适用于 MongoDB / OpsWorks。转到 OpsWorks > 层 > 在“自定义厨师食谱”部分中,引用此 github 链接“ https://github.com/Cyclic/cookbooks ”,然后将“yum::default”添加到设置生命周期事件。然后将 "mongodb::10gen_repo" "mongodb::default" 和 "mongodb::10gen_remrepo" 添加到 Setup 生命周期事件中