使用MongoDB进行Elastic Beanstalk部署

Chr*_*ien 3 deployment mongodb amazon-web-services elasticsearch amazon-elastic-beanstalk

非常感谢有关如何使用以下堆栈正确部署Elastic Beanstalk的资源建议:

  • MongoDB的
  • Rails(Puma)
  • Sidekiq/Redis的
  • Elasticsearch

我是否需要在ebextension文件中设置所有这些内容?或者是在AWS中手动设置,然后在某处正确地将它们路由到一起?

Mar*_*k B 6

您绝对不希望在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 Service

您可能希望设置每个服务,然后只需将每个服务的连接信息添加到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为您提供的网址"

然后在创建与这些服务的连接时,在应用程序中读取这些环境变量.

此外,您将不得不学习如何设置VPN和安全组以启用所有连接.例如,您需要将Elastic Beanstalk服务器放在一个安全组中,将MongoDB服务器放在另一个组中.然后,您必须配置MongoDB安全组以允许从MongoDB端口上的beanstalk组进行访问.它与ElastiCache类似.我认为对于Elasticsearch,您必须创建一个可以访问Elasticsearch API的IAM角色,然后将该角色分配给您的Beanstalk服务器.

当然,还有为MongoDB集群设置Linux服务器,配置集群,故障转移,自动备份,日志存档,定期安全更新等的管理任务.我知道您拥有所有这些AWS信誉,但您应该权衡将所有内容移至AWS,而不是将花费时间的所有管理任务的成本.如果你是免费获得它们,Elastic Beanstalk,Elasticsearch和ElasticCache是​​不费吹灰之力的,但是我的MongoLab法案必须要相当高,以证明自己设置所有这些并自行管理它.