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

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

已注册实例的生命周期

重要

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

注意

仅 Linux 堆栈支持此功能。

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

State diagram showing registered instance lifecycle with stages and transitions.

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

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

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

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

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

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

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

注意

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

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

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

注册

代理发送注册请求后, AWS OpsWorks Stacks 通过向实例发送安装命令并将其置于注册状态来启动实例生命周期。在实例确认 Setup 命令后,它将移至 Running Setup 状态。

Running Setup

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

注意

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

注册

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

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

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

注意

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

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

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

分配

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

  • 如果设置成功,则实例将变为 “联机” 状态并且 AWS OpsWorks 堆栈会在堆栈中的每个实例上触发配置生命周期事件,以通知它们有新实例。

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

注意

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

设置失败

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

  • 如果安装成功,则分配的实例将变为以下在线状态 AWS OpsWorks 堆栈会在堆栈中的每个实例上触发配置生命周期事件,以通知它们有新实例。

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

已注册

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

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

分配

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

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

在线

该实例现在是至少一个图层的成员,并且被当作普通图层对待 AWS OpsWorks 堆栈实例。它可以无限期地保持该状态。

如果您在实例处于联机状态时取消分配该实例, 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