AWS OpsWorks 堆栈 - AWS OpsWorks

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS OpsWorks 堆栈

重要

这些区域有: AWS OpsWorks Stacks 该服务已于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请联系 AWS Support 团队开启 AWS re: post 或通过 AWS 高级支持

基于云的计算通常涉及AWS资源组,例如 Amazon EC2 实例和 Amazon Relational Database Service (RDS) 实例,这些实例必须共同创建和管理。例如,Web 应用程序通常需要应用程序服务器、数据库服务器、负载均衡器等。该组实例通常称为堆栈;一个简单的应用程序服务器堆栈可能像下面这样:

Diagram showing users connecting to app servers through internet and load balancer, with a shared database.

除了创建实例和安装必要的软件包外,您通常需要通过某种方式向应用程序服务器分发应用程序、监控堆栈的性能、管理安全性和权限,等等。

AWS OpsWorks Stacks 提供了一种简单而灵活的方式来创建和管理堆栈和应用程序。

以下是基本应用服务器堆栈的样子 AWS OpsWorks 堆栈。它由一组在 Elastic Load Balancing 负载均衡器后面运行的应用程序服务器和一个后端 Amazon RDS 数据库服务器组成。

AWS OpsWorks stack with load balancer, application servers, and Amazon RDS instance.

尽管相对简单,但此堆栈显示了所有密钥 AWS OpsWorks 堆栈功能。下面介绍了这些功能是如何结合在一起的。

堆栈

堆栈是核心 AWS OpsWorks 堆栈组件。它基本上是一个容器,用于存放AWS资源(Amazon 实例EC2、Amazon RDS 数据库实例等),这些资源具有共同的用途,应该一起进行逻辑管理。堆栈可帮助您将这些资源作为一个组进行管理,还可以定义一些默认配置设置,例如实例的操作系统和AWS区域。如果要将某些堆栈组件与用户直接交互隔开,则可以在中运行堆栈VPC。

图层

可通过添加一个或多个 来定义堆栈的组成。层代表一组用于特定目的(例如为应用程序提供服务或托管数据库服务器)的 Amazon EC2 实例。

您可以通过修改包的默认配置、添加 Chef 配方来执行诸如安装附加软件包等任务的方式自定义或扩展层。

对于所有堆栈, AWS OpsWorks 堆栈包括服务图层,它们代表以下AWS服务。

  • Amazon Relational Database Service

  • Elastic Load Balancing

  • Amazon Elastic Container Service

层让您能够完全控制安装哪些软件包、如何配置它们以及如何部署应用程序等。

食谱和 LifeCycle 活动

层依靠 Chef 配方来处理诸如在实例上安装软件包、部署应用程序、运行脚本等任务。关键之一 AWS OpsWorks Stacks 功能是一组生命周期事件(设置、配置、部署、取消部署和关闭),它们会在适当的时间在每个实例上自动运行一组指定的配方。

每个层都可以有一组配方分配给每个生命周期事件,它们会为该事件和该层处理各种任务。例如,在属于 Web 服务器层的实例完成启动后, AWS OpsWorks Stacks 执行以下操作。

  1. 运行该层的 Setup 配方,这会执行诸如安装和配置 Web 服务器之类的任务。

  2. 运行该层的 Deploy 配方,这会将该层的应用程序从存储库部署到实例并执行相关任务,如重启服务等。

  3. 在堆栈中的每个实例上运行 Configure 配方,以便每个实例可根据需要调整其配置来容纳新实例。

    例如,在运行负载均衡器的实例上,Configure 配方可以修改该负载均衡器的配置以包括新实例。

如果一个实例属于多个图层, AWS OpsWorks 例如,Stacks 会运行每个层的配方,因此您可以拥有一个支持PHP应用程序服务器和 “我的SQL数据库” 服务器的实例。

如果您已经实现了配方,则可以将每个食谱分配给相应的图层和事件 AWS OpsWorks Stacks 会在适当的时间自动为你运行它们。您也可以随时手动运行配方。

实例

实例代表单个计算资源,例如 Amazon EC2 实例。它定义资源的基本配置,如操作系统和大小。其他配置设置,例如弹性 IP 地址或 Amazon EBS 卷,由实例的层定义。层的配方通过执行诸如安装和配置软件包和部署应用程序等任务来完成配置。

您可以使用 … AWS OpsWorks 堆叠以创建实例并将其添加到图层中。当你启动实例时, AWS OpsWorks Stacks 使用由EC2实例及其层指定的配置设置启动 Amazon 实例。在 Amazon EC2 实例完成启动后, AWS OpsWorks Stacks 会安装一个代理来处理实例与服务之间的通信,并运行相应的配方以响应生命周期事件。

AWS OpsWorks 堆栈支持以下实例类型,其特点是它们的启动和停止方式。

  • 全天候实例 手动启动并运行到您停止它们为止。

  • 基于时间的实例由以下人员运行 AWS OpsWorks 按指定的每日和每周计划堆叠。

    它们允许您的堆栈自动调整实例的数量以顺应可预测的使用模式。

  • 基于负载的实例由自动启动和停止 AWS OpsWorks 堆栈,基于指定的负载指标,例如CPU利用率。

    它们允许您的堆栈自动调整实例的数量以顺应传入流量的变化。基于负载的实例仅可用于基于 Linux 的堆栈。

AWS OpsWorks 堆栈支持实例自动修复。如果代理停止与服务通信, AWS OpsWorks 堆栈会自动停止并重启实例。

您还可以将基于 Linux 的计算资源合并到在之外创建的堆栈中 AWS OpsWorks 堆栈。

  • 您使用亚马逊EC2控制台直接创建的亚马逊EC2实例CLI,或API。

  • 您自己的硬件上运行的本地 实例,包括虚拟机上运行的实例。

在您注册了其中一个实例后,它就会变成 AWS OpsWorks 堆叠实例,你可以用与创建实例的方式大致相同的方式对其进行管理 AWS OpsWorks 堆栈。

应用程序

您将应用程序和相关文件存储在存储库中,如 Amazon S3 存储桶。每个应用程序都由一个应用程序表示,该应用程序指定应用程序类型并包含将应用程序从存储库部署到您的实例所需的信息,例如存储库URL和密码。部署应用程序时, AWS OpsWorks 堆栈会触发 Deploy 事件,该事件会在堆栈的实例上运行 Deploy 配方。

您可以通过下列方式来部署应用程序:

  • 自动-当您启动实例时, AWS OpsWorks Stacks 会自动运行实例的 Deploy 配方。

  • 手动 - 如果您有新的应用程序或打算更新现有应用程序,可以手动运行在线实例的 Deploy 配方。

你通常有 AWS OpsWorks 堆栈在整个堆栈上运行 Deploy 配方,这允许其他层的实例适当地修改其配置。不过,您可以将部署限制为一个实例子集,例如,如果您要测试新的应用程序以便将其部署到每个应用程序服务器实例的话。

自定义您的堆栈

AWS OpsWorks Stacks 提供了多种自定义图层以满足您的特定要求的方法:

  • 你可以修改方式 AWS OpsWorks Stacks 通过覆盖代表各种配置设置的属性,甚至覆盖用于创建配置文件的模板来配置软件包。

  • 您可以扩展现有层,方法是提供您自己的配方来执行诸如运行脚本或安装和配置非标准软件包等任务。

所有堆栈都可以包含一个或多个层,最开始只有最低限度的一组配方。您通过实施配方向层添加功能以处理诸如安装软件包、部署应用程序等任务。您将您的自定义配方和相关文件打包为一个或多个说明书,并将说明书存储在诸如 Amazon S3 或 Git 等的存储库中。

你可以手动运行食谱,但是 AWS OpsWorks Stacks 还支持一组五个生命周期事件,从而实现流程自动化:

  • Setup 发生在成功启动后的新实例上。

  • Configure 发生在堆栈的所有实例上 (在实例上线或离线时)。

  • Deploy 发生在部署应用程序时。

  • Undeploy 发生在删除应用程序时。

  • Shutdown 发生在停止实例时。

每个层可以有任意数量的配方分配给每个事件。当层的实例上发生生命周期事件时, AWS OpsWorks Stacks 会运行相关的配方。例如,当应用程序服务器实例上发生 Deploy 事件时, AWS OpsWorks Stacks 运行图层的 Deploy 配方来下载应用程序或执行相关任务。

资源管理

您可以将其他AWS资源(例如弹性 IP 地址)合并到堆栈中。您可以使用 AWS OpsWorks 堆栈控制台或API向堆栈注册资源,将注册的资源附加到实例或将其与实例分离,以及将资源从一个实例移动到另一个实例。

安全性和权限

AWS OpsWorks 堆栈与集成 AWS Identity and Access Management (IAM) 提供控制用户访问方式的强大方法 AWS OpsWorks 堆栈,包括以下堆栈:

  • 个人用户如何与每个堆栈进行交互,例如他们能否创建堆栈资源(例如层和实例),或者他们是否可以使用SSH或RDP连接到堆栈的 Amazon EC2 实例。

  • 操作方法 AWS OpsWorks 堆栈可以代表您与 Amazon EC2 实例等AWS资源进行交互。

  • 应用程序是如何运行的 AWS OpsWorks 堆栈实例可以访问诸如 Amazon S3 存储桶之类的AWS资源。

  • 如何管理用户的公SSH钥和RDP密码以及如何连接到实例。

监控和日志记录

AWS OpsWorks Stacks 提供了多种功能,可帮助您监控堆栈并解决堆栈和任何配方的问题。对于所有堆栈:

  • AWS OpsWorks Stacks 为 Linux 堆栈提供了一组自定义 CloudWatch 指标,为了方便起见,在 “监控” 页面上对这些指标进行了汇总。

    AWS OpsWorks 堆栈支持 Windows 堆栈的标准 CloudWatch 指标。您可以使用 CloudWatch 控制台对其进行监控。

  • CloudTrail 日志,用于记录由或代表API拨打的电话 AWS OpsWorks 在您的AWS账户中堆叠。

  • 事件日志,其中列出您的堆栈中的所有事件。

  • Chef 日志,其中详细记录每个实例上每个生命周期事件的细节,例如,运行了哪些配方以及发生了哪些错误。

基于 Linux 的堆栈也可以包含一个 Ganglia 主层,您可以使用它来收集和显示您的堆栈中实例的详细监控数据。

CLISDK、和 AWS CloudFormation 模板

除了控制台, AWS OpsWorks Stacks 还支持命令行界面 (CLI) 以及SDKs可用于执行任何操作的多种语言。请考虑以下功能:

你也可以使用 AWS CloudFormation 用于配置堆栈的模板。有关一些示例,请参阅AWS OpsWorks 代码片段