已注册实例的生命周期 - AWS OpsWorks

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

已注册实例的生命周期

重要

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

注意

仅 Linux 堆栈支持此功能。

已注册实例的生命周期从代理安装并开始运行之后开始。此时,它会指示 AWS OpsWorks Stacks 在堆栈中注册实例。以下状态示意图概述了密钥生命周期元素。

State diagram showing registered instance lifecycle with stages and transitions.

每个状态对应于一个实例状态。边缘代表以下 AWS OpsWorks Stacks 命令之一。以下各节讨论了相关详细信息。

  • 设置:此命令对应于设置生命周期事件并运行实例的配置配方。

  • 配置:此命令对应于配置生命周期事件。

    AWS OpsWorks 当实例进入或离开在线状态时,堆栈会在堆栈中的每个实例上触发此事件。这些实例运行其 Configure 配方,这会进行任何所需的更改以适应新实例。

  • 关机:此命令对应于关机生命周期事件,可运行该实例的关机配方。

    这些配方执行某些任务 (如关闭服务),但不会停止该实例。

  • 取消注册:此命令会取消注册实例,且不对应于生命周期事件。

注意

为简便起见,该示意图不显示 Deregistering 和 Deleted 状态。您可以从示意图中的任何状态取消注册某实例,这会向该实例发送 Deregister 命令并将其移至 Deregistering 状态。

  • 如果您注销在线实例, AWS OpsWorks Stacks 会向堆栈中的其余实例发送 Configure 命令,通知它们该实例即将离线。

  • 确认 Deregister 命令后,该实例仍在运行,但它处于 Deleted 状态且不再是该堆栈的一部分。如果您想再次将该实例合并到堆栈中,则必须重新注册。

注册

代理发送注册请求后, AWS OpsWorks Stacks 会向实例发送安装命令,使其处于 Registing 状态,从而启动实例生命周期。在实例确认 Setup 命令后,它将移至 Running Setup 状态。

Running Setup

Running Setup 状态运行该实例的 Setup 配方。Setup 的工作原理取决于前面的状态。

注意

如果您在实例处于 “运行设置” 状态时取消其分配, AWS OpsWorks Stacks 会发送关机命令,该命令会运行实例的关闭配方,但不会停止实例。该实例移至 取消分配 状态。

注册

在注册过程中,安装程序会创建一个 AWS OpsWorks Stacks 实例来表示堆栈中的注册实例,并在该实例上运行一组核心安装配方。

初始设置执行的一个关键更改是覆盖该实例的主机文件。通过注册实例,您将用户管理移交给 AWS OpsWorks Stacks,后者必须拥有自己的主机文件以控制 SSH 登录权限。初始设置还会创建或修改多个文件,并且在 Ubuntu 系统中修改包源并安装一组软件包。有关更多信息,请参阅 初始设置配置更改

在注册期间,该进程将调用 IAM AttachUserPolicy,它是作为先决条件创建的附加到 IAM 用户的权限的一部分。如果 AttachUserPolicy 不存在(很可能是因为您运行的是旧版本的 AWS CLI),则该过程将回退到调用 PutUserPolicy

注意

为了保持一致性, AWS OpsWorks Stacks 会运行所有核心安装配方。然而,某些配方仅在实例已分配给至少一个层后才执行部分或全部任务,因此,它们不一定会影响初始设置。

  • 如果设置成功,该实例将移至 已注册 状态。

  • 如果设置失败,该实例将移至 设置失败 状态。

分配

该实例至少有一个已分配的层。 AWS OpsWorks Stacks 运行每个图层的设置配方,包括您分配给图层设置事件的任何自定义配方。

  • 如果设置成功,该实例将移至 Online 状态,并且 AWS OpsWorks Stacks 将在堆栈中的每个实例上触发 Configure 生命周期事件以向它们通知新实例。

  • 如果设置失败,该实例将移至 Setup Failed 状态。

注意

此设置过程将再次运行核心配方。但是,Chef 配方是幂等的,因此它们不会重复已执行的任何任务。

设置失败

如果处于 分配 状态的实例的设置过程失败,您可以通过使用 Setup 堆栈命令重试,手动重新运行该实例的 Setup 配方。

  • 如果设置成功,分配的实例将移至 在线 状态,并且 AWS OpsWorks Stacks 将在堆栈中的每个实例上触发 Configure 生命周期事件以向它们通知新实例。

  • 如果设置尝试失败,该实例将返回到 Setup Failed 状态。

已注册

处于 “已注册” 状态的实例是堆栈的一部分,由 AWS OpsWorks 堆栈管理,但未分配给层。它们可以无限期地保持该状态。

如果您将实例分配给一个或多个图层, AWS OpsWorks Stacks 会向该实例发送安装命令,然后它会进入分配状态。

分配

在实例确认 Setup 命令后,它将移至 Running Setup 状态。

如果您在实例处于 “分配” 状态时取消分配该实例, AWS OpsWorks Stacks 会终止安装过程并发送 Shutdown 命令。该实例移至 取消分配 状态。

在线

该实例现在是至少一个层的成员,并且被视为常规 AWS OpsWorks Stacks 实例。它可以无限期地保持该状态。

如果您在实例处于联机状态时取消分配该实例, AWS OpsWorks Stacks 会向该实例发送关机命令,并向堆栈的其余实例发送配置命令。该实例移至 取消分配 状态。

设置失败

Setup 命令失败。

  • 您可以通过运行 Setup 堆栈命令进行重试。

    该实例恢复为 Running Setup 状态。

  • 如果您取消分配实例, AWS OpsWorks Stacks 会向该实例发送关闭命令。

    该实例移至 取消分配 状态。

取消分配

完成 Shutdown 命令后,该实例不再分配给任何层,并恢复为 已注册 状态。

注意

如果某实例被分配给多个层,则取消分配将适用于每个层;您无法取消分配已分配层的子集。如果您想要一组不同的已分配层,则取消分配该实例,然后重新分配所需层。

初始设置配置更改

初始设置会在所有已注册实例上创建或修改以下文件和目录。

创建的文件
/etc/apt/apt.conf.d/99-no-pipelining /etc/aws/ /etc/init.d/opsworks-agent /etc/motd /etc/motd.opsworks-static /etc/sudoers.d/opsworks /etc/sudoers.d/opsworks-agent /etc/sysctl.d/70-opsworks-defaults.conf /opt/aws/opsworks/ /usr/sbin/opsworks-agent-cli /var/lib/aws/ /var/log/aws/ /vol/
修改的文件
/etc/apt/apt.conf.d/99-no-pipelining /etc/crontab /etc/default/monit /etc/group /etc/gshadow /etc/monit/monitrc /etc/passwd /etc/security/limits.conf (removing limits only for EC2 micro instances) /etc/shadow /etc/sudoers

初始设置还在 Amazon EC2 微型实例上创建一个交换文件。

初始设置对 Ubuntu 系统进行以下更改。

软件包源

初始设置将对软件包源进行如下更改。

  • deb http://archive.ubuntu.com/ubuntu/ ${code_name} main universe

    到:deb-src http://archive.ubuntu.com/ubuntu/ ${code_name} main universe

  • deb http://archive.ubuntu.com/ubuntu/ ${code_name}-updates main universe

    到:deb-src http://archive.ubuntu.com/ubuntu/ ${code_name}-updates main universe

  • deb http://archive.ubuntu.com/ubuntu ${code_name}-security main universe

    到:deb-src http://archive.ubuntu.com/ubuntu ${code_name}-security main universe

  • deb http://archive.ubuntu.com/ubuntu/ ${code_name}-updates multiverse

    到:deb-src http://archive.ubuntu.com/ubuntu/ ${code_name}-updates multiverse

  • deb http://archive.ubuntu.com/ubuntu ${code_name}-security multiverse

    到:deb-src http://archive.ubuntu.com/ubuntu ${code_name}-security multiverse

  • deb http://archive.ubuntu.com/ubuntu/ ${code_name} multiverse

    到:deb-src http://archive.ubuntu.com/ubuntu/ ${code_name} multiverse

  • deb http://security.ubuntu.com/ubuntu ${code_name}-security multiverse

    到:deb-src http://security.ubuntu.com/ubuntu ${code_name}-security multiverse

软件包

初始设置卸载 landscape 并安装以下软件包。

autofs libicu-dev libopenssl-ruby
libssl-dev libxml2-dev libxslt-dev
libyaml-dev monit ntpd
procps ruby ruby-dev
rubygems screen sqlite
vim xfs