92

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

我对一个可以自动扩展以处理任何大量并发 Web 请求(从每分钟 1000 个请求到 1000 万转)的系统感兴趣,包括一个可以自动扩展的数据库层。

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

堆栈系统将在我们从 Heroku 迁移的 rails 应用程序上托管一些高流量的 ruby​​,还有一些 python/django 应用程序和一些 PHP 应用程序。

提前致谢。

4

9 回答 9

74

我想知道使用 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 万转)的系统感兴趣,包括一个也可以自动扩展的数据库层。

在底层,OpsWorks 和 Elastic Beanstalk 使用 EC2 + CloudWatch + Auto Scaling,它能够处理您所说的负载。RDS 为可扩展的基于 SQL 的数据库提供支持。

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

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

堆栈系统将在我们从 Heroku 迁移的 rails 应用程序上托管一些高流量的 ruby​​,还有一些 python/django 应用程序和一些 PHP 应用程序。

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

于 2014-01-27T00:56:37.197 回答
27

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 管理控制台运行 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 为 Cloudformation 运行 aws cli。

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

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

于 2016-01-19T16:22:08.693 回答
10

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

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

于 2015-07-28T09:59:52.187 回答
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

于 2014-02-22T05:23:09.653 回答
3

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

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

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

但就我个人而言,我喜欢 CloudFormation 和 OpsWorks,因为它们都将其全部功能用于它们的用途。

使用 CloudFormation 创建您的环境,然后您可以从云形成脚本调用 Opsworks 来启动您的机器。然后您将拥有 Opsworks 堆栈来管理它。例如,使用 Opsworks 在 linux box 中添加一个用户,或者使用 chef recipes 修补你的 box。您也可以写下厨师食谱以进行部署。否则,您可以使用 CodeDeploy 专门构建进行部署。

于 2016-06-12T11:04:16.050 回答
2

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

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

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

于 2016-08-03T09:19:14.883 回答
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 解决方案(或混合解决方案)。

两者都是为以简单的方式自动缩放而设计的,可能是一个非常便宜的解决方案。

于 2016-11-03T08:48:59.567 回答
0

如果您需要部署需要更新其 EC2 实例的应用程序,则应使用 OpsWorks 代替 CloudFormation。如果您的应用程序使用大量 AWS 资源和服务,包括 EC2,请结合使用 CloudFormation 和 OpsWorks

如果您的应用程序需要其他 AWS 资源,例如数据库或存储服务。在这种情况下,使用 CloudFormation 将 Elastic Beanstalk 与其他资源一起部署。

于 2021-03-23T21:33:39.497 回答
-1

只需使用 terraform 和 ECS 或 EKS。

opsworks、elastic beanstalk 和 cloudformation 现在都是老技术了。-)

于 2018-07-16T16:15:54.480 回答