小编典典

使用MongoDB进行Elastic Beanstalk部署

elasticsearch

我们将非常感谢有关如何通过以下堆栈使用Elastic Beanstalk正确部署的资源的一些建议:

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

我需要在ebextension文件中设置所有这些东西吗?还是在AWS中手动设置内容,然后将它们正确地路由到某个地方?


阅读 300

收藏
2020-06-22

共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 =“为您提供的URL ElastiCache”

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

另外,您将必须学习有关设置VPN和安全组以使所有内容都能连接的知识。例如,您希望将Elastic
Beanstalk服务器放在一个安全组中,而将MongoDB服务器放在另一个安全组中。然后,您将必须配置MongoDB安全组,以允许来自MongoDB端口上的beantalk组的访问。ElastiCache与此类似。我认为对于Elasticsearch,您将必须创建一个可以访问Elasticsearch
API的IAM角色,然后将该角色分配给您的Beanstalk服务器。

当然,还有一些管理任务,包括为MongoDB集群设置Linux服务器,配置集群,故障转移,自动备份,日志存档,定期安全更新等。我知道您拥有所有这些AWS功劳,但是您应该权衡一下将所有内容转移到AWS以及您将花费时间的所有管理任务的成本。如果您免费获得Elastic
Beanstalk,Elasticsearch和ElasticCache,那么他们就很容易了,但是我的MongoLab账单必须相当高才能证明自己进行设置和管理。

2020-06-22