AWS OpsWorks 堆栈 - AWS OpsWorks

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

AWS OpsWorks 堆栈

重要

该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止,新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问,请通过 re AWS : Post 或通过 Pre mium Su AWS pp ort 与 AWS Support 团队联系。

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

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

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

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

以下是 Stacks 中基本应用服务器堆栈的 AWS OpsWorks 样子。它包含一组在 Elastic Load Balancing 负载均衡器背后运行的应用程序服务器,并且带一个后端 Amazon RDS 数据库服务器。

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

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

堆栈

堆栈是堆栈的核心 AWS OpsWorks 组件。它基本上是一个容器,用于存放 AWS 资源(Amazon EC2 实例、Amazon RDS 数据库实例等),这些资源具有共同的用途,应一起进行逻辑管理。堆栈帮助您将这些资源作为一个组来管理,同时它还定义了一些默认配置设置,如实例的操作系统和 Amazon Web Services Region。如果您想要隔离一些堆栈组件以避免用户直接交互,可以在 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 应用服务器和 MySQL 数据库服务器的实例。

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

实例

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

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

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

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

  • 基于时间的实例由 AWS OpsWorks Stacks 按指定的每日和每周计划运行。

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

  • AWS OpsWorks 堆栈根据指定的@@ 负载指标(例如 CPU 利用率)自动启动和停止基于负载的实例

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

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

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

  • 直接使用 Amazon EC2 控制台、CLI 或 API 创建的 Amazon EC2 实例。

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

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

应用程序

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

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

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

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

您通常会让 AWS OpsWorks Stacks 在整个堆栈上运行 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 Stacks 控制台或 API 向堆栈注册资源,将注册的资源附加到实例或将其与实例分离,以及将资源从一个实例移动到另一个实例。

安全性和权限

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

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

  • AWS OpsWorks Stacks 如何代表您与 Amazon EC2 实例等 AWS 资源进行交互。

  • 在 AWS OpsWorks Stacks 实例上运行的应用程序如何访问 AWS 资源,例如 Amazon S3 存储桶。

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

监控和日志记录

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

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

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

  • CloudTrail 日志,用于记录您的 AWS 账户中由 Stacks 或代表 AWS OpsWorks 堆栈进行的 API 调用。

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

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

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

CLI、软件开发工具包和 AWS CloudFormation 模板

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

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