使用 MongoDB 部署 Elastic Beanstalk
Posted
技术标签:
【中文标题】使用 MongoDB 部署 Elastic Beanstalk【英文标题】:Elastic Beanstalk Deployment with MongoDB 【发布时间】:2016-02-23 14:03:39 【问题描述】:非常感谢有关如何使用以下堆栈正确部署 Elastic Beanstalk 资源的一些建议:
MongoDB Rails (Puma) Sidekiq/Redis 弹性搜索我需要在 ebextension 文件中设置所有这些东西吗?还是在 AWS 中手动设置,然后将它们正确地路由到某个地方?
【问题讨论】:
【参考方案1】:您绝对不想在您的 Elastic Beanstalk 服务器上运行所有这些。 Elastic Beanstalk 将根据您的流量/服务器负载自动添加或删除服务器。您不希望您的数据库在被删除时位于其中一台服务器上。
Elastic Beanstalk 是一种平台即服务,非常适合运行 Web 服务器。 AWS 上还有其他服务,例如 ElastiCache(Redis/Memcached 即服务)和 Elasticsearch 即服务。还有第三方提供在 AWS 上运行的服务,例如 RedisLabs(Redis 即服务)和 MongoLab(MongoDB 即服务)。
您可以决定使用任何这些服务来减少您必须自己完成的系统管理工作量。或者,您可以手动设置 EC2 Linux 服务器(在 Elastic Beanstalk 之外)并在其上安装 Rails、MongoDB 和 ElasticSearch 之类的东西并自行管理。
对于您的情况,我建议如下:
Rails:ElasticBeanstalk MongoDB:MongoLab Redis:RedisLabs Elasticsearch:AWS Elasticsearch 服务您可能希望设置每个服务,然后只需将每个服务的连接信息添加到您的 Elastic Beanstalk 环境中,以便 Rails 可以使用它们。
编辑:
以下是在 EC2 上手动设置 MongoDB 的最佳说明:https://docs.mongodb.org/ecosystem/platforms/amazon-ec2/
对于 ElastiCache 和 Elasticsearch,您只需在 AWS 控制台中单击以预置 Redis 服务器并获取要连接的 URL。完成所有这些设置后,您只需将连接参数作为自定义环境变量放入 ElasticBeanstalk 环境中,例如:
MONGO_DB_URL="您的 MongoDB EC2 内部 IP 地址"
REDIS_URL="ElastiCache 为您提供的 url"
然后在创建与这些服务的连接时读取应用程序中的这些环境变量。
此外,您还必须了解如何设置 *** 和安全组,以使所有设备都能连接。例如,您希望 Elastic Beanstalk 服务器在一个安全组中,而 MongoDB 服务器在另一个组中。然后您必须配置 MongoDB 安全组以允许从 MongoDB 端口上的 beanstalk 组进行访问。 ElastiCache 与此类似。我认为对于 Elasticsearch,您必须创建一个可以访问 Elasticsearch API 的 IAM 角色,然后将该角色分配给您的 Beanstalk 服务器。
当然还有为您的 MongoDB 集群设置 Linux 服务器、配置集群、故障转移、自动备份、日志存档、定期安全更新等管理任务。我知道您拥有所有这些 AWS 功劳,但是您应该权衡将所有内容转移到 AWS 与您将花费时间处理的所有管理任务的成本。如果您免费获得 Elastic Beanstalk、Elasticsearch 和 ElasticCache,它们是不费吹灰之力的,但我的 MongoLab 账单必须相当高,才能证明自己设置和管理所有这些是合理的。
【讨论】:
你好@mbaird!出于成本目的,我试图远离像 mongolab/redislabs 这样的解决方案(我的团队获得了一堆年度 AWS 积分)。是否有关于如何在 EC2 上设置 mongodb 和在 elasticache 上设置 redis 然后在我的 eb 配置中将它们全部路由到一起的良好文档?一直在努力寻找合适的参考资源 感谢@mbaird 的深入回复!到目前为止,我一直在 AWS 的一个岛上,所以这对给我一些指导非常有帮助。肯定也看到你关于自我管理 mongoDB 的观点。很可能会听取您的建议! 这里是在 Amazon Linux 上设置 Elasticsearch 的指南:blog.pushapps.mobi/… 您也可以考虑使用 DynamoDB 代替 Mongo。它不完全相同,需要一些基础才能使其具有多态性,但它很适合 AWS 架构。以上是关于使用 MongoDB 部署 Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章
在 Elastic Beanstalk 上使用 mongoDB 部署 Node.Js 应用程序时出现错误
如何将 mongoDB Docker 映像部署到 Elastic Beanstalk?
将 MongoDB 与部署在 Elastic Beanstalk 上的 NodeJS 应用程序一起使用的推荐方法是啥?
在 Elastic Beanstalk Composer 更新问题中使用 MongoDB 的 Laravel