我是Elastic Beanstalk,EC2和Docker的新手,并且在过去的几周中研究并使用了它。我有一些问题很难找到其他地方的答案。
我喜欢的一件事是,我能够eb local run
启动生产环境中要运行的本地环境。在涉及数据库之前,这似乎工作得很好。
1)据我了解,Elastic Beanstalk产生了在其中运行容器的实例,如果Elastic Beanstalk产生了多个实例,这可能导致具有多个数据库?这样对吗?
2)在生产中使用AWS RDS并在本地拥有一个外部数据库容器会更好吗?
3)关于持久数据,我读到EBS只能安装到一个EC2实例,人们如何处理存储用户文件,或者他们将应用程序直接推送到诸如S3的服务?
我不知道是否在任何地方都声明了这一点,但是我可以肯定,AWS不打算让您使用EB的多容器来运行数据库或任何只能在系统上运行一次的东西。如他们的示例所示,您可以更好地控制前端服务器。
如果要运行数据库或存储文件,则可以移至可以更好地控制它的AWS ECS,或者使用多个EB环境(例如,创建用于运行数据库的工作层,单实例环境)
我喜欢的一件事是,我能够运行eb local run来启动将在生产环境中运行的本地环境。在涉及数据库之前,这似乎工作得很好。
我没有eb local run
使用过docker-compose,而是使用了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要贵得多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句