【问题标题】:Dealing with AWS Elastic Beanstalk Multi-container databases and persistent storage处理 AWS Elastic Beanstalk 多容器数据库和持久存储
【发布时间】:2016-04-22 19:24:04
【问题描述】:

我是 Elastic Beanstalk、EC2 和 Docker 的新手,过去几周我一直在研究和使用它。我有几个问题很难在其他地方找到答案。

我喜欢的一件事是我能够运行 eb local run 来引导将在生产中运行的本地环境。在涉及数据库之前,这似乎运作良好。

1) 据我了解,Elastic Beanstalk 会生成运行内部容器的实例,如果 Elastic Beanstalk 生成多个实例,这可能会导致拥有多个数据库?这是正确的吗?

2) 在生产环境中使用 AWS RDS,然后在本地拥有一个外部数据库容器会更好吗?

3)在持久化数据方面,我读到 EBS 只能挂载到一个 EC2 实例,人们如何处理存储用户文件,或者他们是否将他们的应用程序直接推送到 S3 等服务?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-ec2 docker-compose


    【解决方案1】:

    我不知道这是否在任何地方说明,但我相当确定 AWS 不打算让您使用 EB 的多容器来运行数据库或任何应该在您的系统上只运行一次的东西。正如他们的示例所示,您可以更好地控制前端服务器将是什么。

    如果你想运行数据库,或者存储文件,你要么迁移到 AWS ECS,在那里你可以更好地控制它,要么使用多个 EB 环境(例如,创建一个工作层、单实例环境来运行数据库)

    我喜欢的一件事是我能够运行 eb local run 来引导将在生产中运行的本地环境。在涉及数据库之前,这似乎运作良好。

    我没有使用eb local run,而是使用 docker-compose,它允许我在本地正确运行适当的环境,包括我的数据库。是的,你可能需要在 docker-compose 文件和 Dockerrun 文件之间复制一些信息,但是一旦你设置了它,你就会看到它有多么强大。因为您仍在共享 Dockerfile,您仍然可以假设一旦部署,事情将以足够相似的方式运行。

    1) 据我了解,Elastic Beanstalk 会生成运行内部容器的实例,如果 Elastic Beanstalk 生成多个实例,这可能会导致拥有多个数据库?这是正确的吗?

    是的,我认为这是正确的。 EB 假设您将使用 RDS 或 dynamodb 或其他已经集中和管理的东西。

    2) 在生产环境中使用 AWS RDS,然后在本地拥有一个外部数据库容器会更好吗?

    是的,顺便说一下,我发现手动实例化它是一种更好的做法,而不是让 EB 管理数据库的创建,以便在您终止 EB 环境后它保持持久性。

    3)在持久化数据方面,我读到 EBS 只能挂载到一个 EC2 实例,人们如何处理存储用户文件,或者他们是否将他们的应用程序直接推送到 S3 等服务?

    是的,出于多种原因,使用 S3 是可行的方法,但主要是因为 AWS 进行管理,并且您可以在无需担心的情况下进行扩展。事实上,您希望您的客户端直接在 S3 上获取甚至发布文件,因此您的服务器不必做任何工作(注意服务器可能需要对 URL 进行签名,仅此而已)。

    如果您确实对 S3 有问题(无论出于何种原因),那么您还将(与数据库一样)使用 EBS 创建第二个单实例 EB 环境,以确保您拥有一个单实例。但与 S3 解决方案相比,它的规模不会很大,而且实际上会比使用 S3 更昂贵。

    【讨论】:

      猜你喜欢
      • 2019-10-09
      • 2017-07-26
      • 2017-08-10
      • 2015-11-03
      • 2014-03-22
      • 2019-02-20
      • 2015-06-14
      • 2021-11-25
      • 2021-08-18
      相关资源
      最近更新 更多