AWS OpsWorks与AWS Beanstalk与AWS CloudFormation?


86

我想知道使用AWS OpsWorks与AWS Beanstalk和AWS CloudFormation的优缺点是什么?

我对可以自动缩放以处理大量同时Web请求(从每分钟1000个请求到1000万rpm)的系统感兴趣,包括一个可以自动缩放的数据库层。

理想情况下,我想有效地共享一些硬件资源,而不是为每个应用程序单独分配实例。过去,我主要使用EC2实例+ RDS + Cloudfront + S3

堆栈系统将在我们从Heroku迁移的Rails应用程序,一些python / django应用程序和一些PHP应用程序上托管一些高流量的红宝石。

提前致谢。


2
这个问题与Stackoverflow无关,但是在ServerFault上也不太适合...我已经提出了一个新站点来解决此类问题,如果您同意,请遵循!area51.stackexchange.com/proposals/82757/...
丹Ciborowski - MSFT

Answers:


69

我想知道使用AWS OpsWorks与AWS Beanstalk和AWS CLoudFormation的优缺点是什么?

答案是:这取决于。

AWS OpsWorks和AWS Beanstalk(据悉)只是管理基础架构的不同方法,具体取决于您的想法。CloudFormation只是模板化基础架构的一种方式。

就我个人而言,我对Elastic Beanstalk更为熟悉,但每个人都有。我更喜欢它,因为它可以通过Git进行部署。Elastic Beanstalk在后台使用CloudFormation来启动其环境是公共信息。

对于我的项目,我将两者同时使用。我使用CloudFormation来构建自定义配置的VPC环境,用于我的应用程序的S3存储桶和DynamoDB表。然后,我在自定义VPC内启动了一个Elastic Beanstalk环境,该环境知道如何与S3 / DynamoDB资源对话。

我对可以自动缩放以处理大量同时Web请求(从每分钟1000个请求到1000万rpm)的系统感兴趣,包括一个可以自动缩放的数据库层。

在后台,OpsWorks和Elastic Beanstalk使用EC2 + CloudWatch + Auto Scaling,它能够处理您正在谈论的负载。RDS为可伸缩的基于SQL的数据库提供支持。

理想情况下,我想有效地共享一些硬件资源,而不是为每个应用程序单独分配实例。过去,我主要使用EC2实例+ RDS + Cloudfront + S3

根据“某些硬件资源”的含义,您可以始终在OpsWorks或Elastic Beanstalk环境中启动独立的EC2实例。当前,Elastic Beanstalk每个环境支持一个webapp。我不记得OpsWorks支持什么。

堆栈系统将在我们从Heroku迁移的Rails应用程序,一些python / django应用程序和一些PHP应用程序上托管一些高流量的红宝石。

AWS完全支持所有这些功能。OpsWorks和Elastic Beanstalk已针对一系列开发环境进行了优化(Ruby,Python和PHP都在清单中),而EC2提供了原始服务器,您可以在其中安装所需的任何内容。


3
OpsWorks也处理git部署,尽管有所不同。在使用CLI从存储库中推送ElasticBeanstalk git部署的情况下,OpsWorks使用通过SSH(或HTTPS,如果是公共存储库)的只读访问存储库。
2014年

@Ryan如前所述,Beanstalk在后台使用Cloud形成类型模板来创建所需的基础架构。
Mohd Belal '18年

22

OpsWorks是类似于Chef的编排工具-实际上,它是从Chef-Puppet,Ansible或Saltstalk派生而来的。您可以使用Opsworks通过指定希望每个资源(服务器实例,应用程序,存储)所处的状态来指定您的网络所处的状态。还可以通过以下方式指定希望每个资源所处的状态:指定该状态的每个属性所需的值。例如,您可能希望Apache服务始终启动并运行,并在启动时以Apache作为用户,以Apache作为Linux组来启动。

CloudFormation是一个json模板(**),用于指定您要部署的资源的状态,即您要在us-east-1中将AWS EC2 micro t2实例作为VPC 192.168.1.0/24的一部分进行部署。对于EC2实例,您可以通过EC2资源的“用户数据”部分中的自定义bash脚本指定应在该资源上运行的内容。CloudFormation只是一个模板。仅当您通过AWS Management Console for CloudFormation运行模板或为Cloudformation运行aws cli命令(即aws cloudformation)时,模板才能充实我们的运行资源

ElasticBeanstalk是一个PAAS,您可以上传特定的Ruby / Rails,node.js或Python / django或Python / Flask应用程序。如果您正在运行诸如Scala,Haskell或其他任何东西,请为其创建一个Docker映像并将该Docker映像上传到Elastic Beanstalk(*)。

您可以通过运行CloudFormation的aws cli或将Opsworks创建配方上传到Elastic Beanstalk的方法,将应用程序上载到Elastic Beanstalk。您也可以通过Opsworks运行aws cli以进行Cloudformation。

(*)实际上,AWS的Ruby应用程序示例文档非常差,以至于我失去了耐心,将示例应用程序嵌入到Docker映像中,并将Docker映像上传到Elastic Beanstalk中。

(**)自2016年9月起,Cloudformation还支持YAML模板。


8

在Opsworks中,您可以通过组合基础实例可能执行的特定作业,在堆栈中共享层的“角色”以使用更少的资源。

层兼容性列表(只要正确设置了安全组):

HA Proxy : custom, db-master, and memcached.
MySQL :  custom, lb, memcached, monitoring-master, nodejs-app, php-app, rails-app, and web.
Java : custom, db-master, and memcached.
Node.js : custom, db-master, memcached, and monitoring-master
PHP : custom, db-master, memcached, monitoring-master, and rails-app.
Rails :  custom, db-master, memcached, monitoring-master, php-app.
Static :  custom, db-master, memcached.
Custom : custom, db-master, lb, memcached, monitoring-master, nodejs-app, php-app, rails-app, and web 
Ganglia :  custom, db-master, memcached, php-app, rails-app. 
Memcached :  custom, db-master, lb, monitoring-master, nodejs-app, php-app, rails-app, and web. 

参考:http : //docs.aws.amazon.com/opsworks/latest/userguide/layers.html


8

AWS Beanstalk: 它是在AWS云中部署和管理应用程序,而无需担心使用Elastic Beanstalk运行Web应用程序的基础架构。无需担心EC2或其他安装。

AWS OpsWorks AWS OpsWorks不过是一个应用程序管理服务,使新的DevOps用户可以轻松地对其整个应用程序进行建模和管理


1
我认为这个答案是不正确的。事实恰恰相反。尽管使用OpsWorks,Elastic Beanstalk只是PaaS,但使用适当的组件创建堆栈是您的全部责任。“对于新的DevOps”定义将适用于EB用户,而不适用于OpsWorks。
scaryguy16年

3

AWS CloudFormation-创建和更新您的环境。

AWS Opsworks-像我们使用Chef或Puppet一样在这样的环境中管理您的系统

AWS Beanstalk-创建,管理和部署。

但是我个人喜欢CloudFormation和OpsWorks,因为它们充分发挥了它们的作用。

使用CloudFormation创建环境,然后可以从云形成脚本调用Opsworks以启动计算机。然后,将有Opsworks堆栈来管理它。例如,通过使用Opsworks在Linux框中添加用户,或使用厨师食谱对框进行修补。您也可以写下厨师食谱以进行部署。否则,您可以使用CodeDeploy专为部署而构建。


3

AWS OpsWorks-这是AWS管理服务的一部分。它有助于使用脚本配置应用程序。它使用Chef作为该应用程序管理和操作的devops框架。有些模板可用于配置服务器,数据库,存储。还可以自定义模板以执行任何其他任务。DevOps工程师可以控制应用程序的依赖性和基础架构。

AWS Beanstalk-它提供Java,Node Js,Python,Ruby Go等语言的环境。Elastic Bean茎提供了运行应用程序的资源。开发人员不必担心基础架构,他们也无法控制基础架构。

AWS CloudFormation -CloudFormation具有示例模板,用于按顺序管理AWS资源。


0

正如许多其他人评论AWS Beanstalk一样,AWS OpsWorks和AWS Cloud Formation针对不同问题提供了不同的解决方案。

为了完成

I am interested in a system that can be auto scaled to handle any high number of simultaneous web requests (From 1000 requests per minute to 10 million rpm.), including a database layer that can be auto scalable as well.

考虑到您正在迁移过程中,我强烈建议您开始研究AWS Lambda和AWS DynamoDB解决方案(或混合解决方案)。

两者都旨在以简单的方式进行自动缩放,并且可能是非常便宜的解决方案。


-1

只需使用terraform和ECS或EKS。

opsworks,弹性beantalk和cloudformation旧技术。-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.