执行自动升级 - Amazon Elastic Compute Cloud

执行自动升级

您可以使用 AWS Systems Manager Automation 运行手册在 AWS 上执行 Windows 和 SQL Server 实例的自动升级。

将在自动升级过程中使用以下 AWS 服务:

  • AWS Systems Manager。AWS Systems Manager 是一个功能强大的统一界面,可以集中管理您的 AWS 资源。有关更多信息,请参阅 AWS Systems Manager 用户指南

  • AWS Systems Manager 代理(SSM Agent)是一个 Amazon 软件,可以在 Amazon EC2 实例、本地服务器或虚拟机 (VM) 上安装和配置。SSM Agent 让 Systems Manager 可以更新、管理和配置这些资源。代理在AWS云中处理 Systems Manager 服务的请求,然后按照请求中的指定运行它们。有关更多信息,请参阅 AWS Systems Manager 用户指南中的使用 SSM Agent

  • AWS Systems Manager SSM 运行手册。SSM 运行手册定义 Systems Manager 对您的托管实例执行的操作。SSM 运行手册使用 JavaScript Object Notation (JSON) 或 YAML,并包括您指定的步骤和参数。本主题使用两个 Systems Manager SSM 自动化运行手册。有关更多信息,请参阅 AWS Systems Manager 用户指南中的 AWS Systems Manager Automation 运行手册参考

执行选项

在 Systems Manager 控制台上选择自动化时,请选择执行。在选择 Automation 文档后,将提示您选择自动化执行选项。您可以从以下选项中进行选择。在本主题后面提供的途径步骤中,我们使用简单执行选项。

简单执行

如果要更新单个实例,但不希望执行每个自动化步骤以审核结果,请选择该选项。在下面的升级步骤中更详细地介绍了该选项。

速率控制

如果要将升级应用于多个实例,请选择该选项。您可以定义以下设置。

  • 参数

    该设置(也会在“多账户和区域”设置中设置)定义了如何完成自动化。

  • 目标

    选择要将自动化应用到的目标。也会在“多账户和区域”设置中设置该设置。

  • 参数值

    使用自动化文档参数中定义的值。

  • 资源组

    在AWS中,资源是您可以使用的实体。示例包括 Amazon EC2 实例、AWS CloudFormation 堆栈或 Amazon S3 存储桶。如果您使用多个资源,这样做可能会很有帮助:将它们作为一个组进行管理,而不是在每个任务中将资源从一个AWS服务移动到另一个服务。在某些情况下,您可能希望管理大量相关的资源,例如,构成应用程序层的 EC2 实例。在这种情况下,您可能需要同时对这些资源执行批量操作。

  • 标签

    标签帮助您按不同的方式对 AWS 资源进行分类,例如,按用途、所有者或环境进行分类。如果您具有很多相同类型的资源,这种分类是非常有用的。您可以使用分配的标签快速识别特定的资源。

  • 速率控制

    也会在“多账户和区域”设置中设置速率控制。在设置速率控制参数时,您可以按目标数或队列百分比定义要将自动化应用到的队列数量。

多账户和区域

除了在“速率控制”中指定的参数(也会在“多账户和区域”设置中使用)以外,还具有两个其他设置:

  • 账户和组织单位 (OU)

    指定要在其中运行自动化的多个账户。

  • AWS 区域

    指定要在其中运行自动化的多个 AWS 区域。

手动执行

该选项类似于简单执行,但允许您逐个执行每个自动化步骤并审核结果。

升级 Windows Server

AWSEC2-CloneInstanceAndUpgradeWindows 运行手册从您的账户中的 Windows Server 实例中创建 Amazon Machine Image (AMI),并将该 AMI 升级到所选的支持版本。该多步骤过程最多可能需要两小时才能完成。

要将 Windows Server 2008 R2 实例升级到 Windows Server 2016 或 2019,将执行两次就地升级,先从 Windows Server 2008 R2 升级到 Windows Server 2012 R2,然后从 Windows Server 2012 R2 升级到 Windows Server 2016 或 2019。不支持将 Windows Server 2008 R2 直接升级到 Windows Server 2016 或 2019。

在该工作流程中,自动化从实例中创建一个 AMI,然后在您提供的子网中启动新的 AMI。自动化工作流程执行从 Windows Server 2008 R2、2012 R2 或 2016 到选定版本(Windows Server 2012 R2、2016 或 2019)的就地升级。该工作流程还会更新或安装升级的实例所需的 AWS 驱动程序。在升级完成后,该工作流程创建新的 AMI 并终止升级的实例。如果从 Windows Server 2008 R2 升级到 Windows Server 2016 或 2019,自动化工作流程将创建两个 AMI,因为执行两次就地升级。

在自动升级过程中包含两个 AMI:

  • 当前运行的实例。第一个 AMI 是当前运行的实例,不会升级该实例。该 AMI 用于启动另一个实例以运行就地升级。在该过程完成后,将从您的账户中删除该 AMI,除非您明确要求保留原始实例。该设置是由 KeepPreUpgradeImageBackUp 参数处理的(默认值为 false,这表示默认删除该 AMI)。

  • 升级的 AMI。该 AMI 是自动化过程的结果。

最终结果是一个 AMI,它是升级的 AMI 实例。

在升级完成后,您可以在 Amazon VPC 中启动新的 AMI 以测试应用程序功能。在测试后,在执行另一个升级之前,请计划应用程序停机,然后再完全切换到升级的实例。

Windows Server 自动升级路径

Systems Manager Automation 运行手册 AWSEC2-CloneInstanceAndUpgradeWindows 支持以下升级路径:

  • Windows Server 2008 R2 至 Windows Server 2012 R2

  • Windows Server 2012 R2 至 Windows Server 2016

  • Windows Server 2012 R2 至 Windows Server 2019

  • Windows Server 2016 至 Windows Server 2019

先决条件

要使用 AWS Systems Manager Automation 文档自动进行 Windows Server 升级,您必须执行以下任务:

  • 使用指定的 IAM 策略创建 IAM 角色,以允许 Systems Manager 在 Amazon EC2 实例上执行自动化任务,并验证您是否满足使用 Systems Manager 的先决条件。有关更多信息,请参阅 AWS Identity and Access Management 用户指南中的创建向 AWS 服务委派权限的角色

  • 选择您希望如何运行自动化的选项。执行选项包括简单执行速率控制多账户和区域以及手动执行。有关这些选项的详细信息,请参阅 执行选项

  • 验证实例上是否安装了 SSM Agent。有关更多信息,请参阅在 Amazon EC2 实例中为 Windows Server 安装和配置 SSM Agent

  • 必须在您的实例上安装 Windows PowerShell 3.0 或更高版本。

  • 对于加入到某个 Microsoft Active Directory 域的实例,建议指定一个没有连接到您的域控制器的 SubnetId,以帮助避免主机名冲突。

  • 指定的 SubnetId 必须是一个公有子网,且自动分配公有 IPv4 地址设置为 true。有关更多信息,请参阅 Amazon VPC 用户指南 中的修改子网的公有 IPv4 寻址属性

  • 此 Automation 仅适用于 Windows Server 2008 R2、2012 R2 和 2016 实例。

  • 此 Automation 仅适用于具有未加密 Amazon EBS 根卷的 Amazon EC2 实例。如果指定的实例具有加密的根卷,自动化将失败。

  • 验证实例的启动盘具有 20 GB 的可用磁盘空间。

  • 如果实例未使用 AWS 提供的 Windows 许可证,请指定包含 Windows Server 2012 R2 安装介质的 Amazon EBS 快照 ID。要实现此目的,应按照以下步骤进行:

    1. 验证 Amazon EC2 实例运行的是否是 Windows Server 2012 或更高版本。

    2. 在运行实例的同一可用区中创建一个 6GB 的 Amazon EBS 卷。将卷附加到实例。例如,将其附加为驱动器 D。

    3. 例如,右键单击 ISO 并将其挂载为实例的驱动器 E。

    4. 将 ISO 的内容从驱动器 E:\ 复制到驱动器 D:\

    5. 为上面步骤 2 中创建的 6GB 卷创建 Amazon EBS 快照。

Windows Server 升级限制

此自动化程序不支持升级 Windows 域控制器、集群或 Windows 桌面操作系统。此外,该自动化程序不支持安装了以下角色的 Windows Server 的 Amazon EC2 实例:

  • 远程桌面会话主机 (RDSH)

  • 远程桌面连接代理 (RDCB)

  • 远程桌面虚拟化主机 (RDVH)

  • 远程桌面 Web 访问 (RDWA)

执行 Windows Server 自动升级的步骤

请按照以下步骤使用 AWSEC2-CloneInstanceAndUpgradeWindows 自动化运行手册升级您的 Windows Server 实例。

  1. AWS管理控制台打开 Systems Manager。

  2. 从左侧导航窗格中,在 Change Management(变更管理)下,选择 Automation

  3. 选择执行自动化

  4. 搜索名为 AWSEC2-CloneInstanceAndUpgradeWindows 的自动化文档。

  5. 在显示该文档名称时,选择该文档。在选择该文档时,将显示文档详细信息。

  6. 选择 Execute automation(执行自动化)以输入此文档的参数。在页面顶部选择简单执行

  7. 根据以下准则输入请求的参数。

    • InstanceID

      类型:字符串

      (必需)运行 Windows Server 2008 R2、2012 R2 或 2016 并安装了 SSM Agent 的实例。

    • InstanceProfile.

      类型:字符串

      (必需)IAM 实例配置文件。这是用于针对 Amazon EC2 实例和 AWS AMI 执行 Systems Manager 自动化的 IAM 角色。有关更多信息,请参阅 AWS Systems Manager 用户指南中的为 Systems Manager 创建 IAM 实例配置文件

    • TargetWindowsVersion

      类型:字符串

      (必需)选择目标 Windows 版本。

    • SubnetId

      类型:字符串

      (必需)这是执行升级过程的子网以及源 EC2 实例所在的位置。验证子网是否具有到 AWS 服务(包括 Amazon S3)和 Microsoft 的出站连接(以下载补丁)。

    • KeepPreUpgradedBackUp

      类型:字符串

      (可选)如果该参数设置为 true,自动化将保留从实例中创建的映像。默认设置为 false

    • RebootInstanceBeforeTakingImage

      类型:字符串

      (可选)默认值为 false(无重新引导)。如果该参数设置为 true,Systems Manager 将在创建升级 AMI 之前重新引导实例。

  8. 在输入这些参数后,选择执行。在自动化开始时,您可以监控执行进度。

  9. 在自动化完成时,您将看到 AMI ID。您可以启动 AMI 以验证是否升级了 Windows 操作系统。

    注意

    自动化不需要运行所有步骤。根据自动化和实例行为,可以有条件地执行这些步骤。Systems Manager 可能会跳过一些不需要的步骤。

    此外,一些步骤可能会超时。Systems Manager 尝试升级并安装所有最新的补丁。不过,根据给定步骤的可定义超时设置,补丁有时会超时。在发生这种情况时,Systems Manager Automation 继续执行下一步,以确保将内部操作系统升级到目标 Windows Server 版本。

  10. 在自动化完成后,您可以使用 AMI ID 启动 Amazon EC2 实例以检查升级。有关如何从 AWS AMI 中创建 Amazon EC2 实例的更多信息,请参阅如何从自定义 Amazon Machine Image (AMI) 中启动 EC2 实例?

升级 SQL Server

AWSEC2-CloneInstanceAndUpgradeSQLServer 脚本从您账户中的运行 SQL Server 的 Amazon EC2 实例中创建一个 AMI,然后将该 AMI 升级到 SQL Server 的较高版本。该多步骤过程最多可能需要两小时才能完成。

在该工作流程中,自动化从实例中创建一个 AMI,然后在您提供的子网中启动新的 AMI。接下来,自动化执行 SQL Server 的就地升级。在升级完成后,自动化创建新的 AMI,然后再终止升级的实例。

在自动升级过程中包含两个 AMI:

  • 当前运行的实例。第一个 AMI 是当前运行的实例,不会升级该实例。该 AMI 用于启动另一个实例以运行就地升级。在该过程完成后,将从您的账户中删除该 AMI,除非您明确要求保留原始实例。该设置是由 KeepPreUpgradeImageBackUp 参数处理的(默认值为 false,这表示默认删除该 AMI)。

  • 升级的 AMI。该 AMI 是自动化过程的结果。

最终结果是一个 AMI,它是升级的 AMI 实例。

在升级完成后,您可以在 Amazon VPC 中启动新的 AMI 以测试应用程序功能。在测试后,在执行另一个升级之前,请计划应用程序停机,然后再完全切换到升级的实例。

SQL Server 自动升级路径

AWSEC2-CloneInstanceAndUpgradeSQLServer 自动化运行手册支持以下升级路径:

  • SQL Server 2008 到 SQL Server 2017、2016 或 2014

  • SQL Server 2008 R2 到 SQL Server 2017、2016 或 2014

  • SQL Server 2012 到 SQL Server 2019、2017、2016 或 2014

  • SQL Server 2014 到 SQL Server 2019、2017 或 2016

  • SQL Server 2016 到 SQL Server 2019 或 2017

  • SQL Server 2017 到 SQL Server 2019

先决条件

要使用 AWS Systems Manager Automation 文档自动进行 SQL Server 升级,您必须执行以下任务:

  • 使用指定的 IAM 策略创建 IAM 角色,以允许 Systems Manager 在 Amazon EC2 实例上执行自动化任务,并验证您是否满足使用 Systems Manager 的先决条件。有关更多信息,请参阅 AWS Identity and Access Management 用户指南中的创建向 AWS 服务委派权限的角色

  • 选择您希望如何运行自动化的选项。执行选项包括简单执行速率控制多账户和区域以及手动执行。有关这些选项的详细信息,请参阅 执行选项

  • Amazon EC2 实例必须使用 Windows Server 2008 R2 或更高版本和 SQL Server 2008 或更高版本。

  • 验证实例上是否安装了 SSM Agent。有关更多信息,请参阅在 Amazon EC2 实例中为 Windows Server 安装和配置 SSM Agent

  • 验证实例的实例启动盘具有 20 GB 的可用磁盘空间。

  • 对于使用自带许可 (BYOL) SQL Server 版本的实例,以下额外的先决条件适用:

    • 提供包含目标 SQL Server 安装介质的 Amazon EBS 快照 ID。要实现此目的,应按照以下步骤进行:

      1. 验证 Amazon EC2 实例运行的是否是 Windows Server 2008 R2 或更高版本。

      2. 在运行实例的同一可用区中创建一个 6GB 的 Amazon EBS 卷。将卷附加到实例。例如,将其附加为驱动器 D。

      3. 例如,右键单击 ISO 并将其挂载为实例的驱动器 E。

      4. 将 ISO 的内容从驱动器 E:\ 复制到驱动器 D:\

      5. 为步骤 2 中创建的 6GB 卷创建 Amazon EBS 快照。

SQL Server 自动升级限制

使用 AWSEC2-CloneInstanceAndUpgradeSQLServer 运行手册执行自动升级时适用以下限制:

  • 只能在使用 Windows 身份验证的 SQL Server 上执行升级。

  • 验证实例上没有待处理的安全补丁更新。打开控制面板,然后选择检查更新

  • 不支持 HA 和镜像模式下的 SQL Server 部署。

执行 SQL Server 自动升级的步骤

请按照以下步骤使用 AWSEC2-CloneInstanceAndUpgradeSQLServer 自动化运行手册升级您的 SQL Server。

  1. 如果尚未挂载,请下载 SQL Server 2016 .iso 文件并将其挂载到源服务器中。

  2. 在挂载该 .iso 文件后,复制所有组件文件,并将其放在所选的任何卷上。

  3. 拍摄该卷的 Amazon EBS 快照,并将快照 ID 复制到剪贴板以供以后使用。有关创建 EBS 快照的更多信息,请参阅 Amazon Elastic Compute Cloud 用户指南 中的创建 EBS 快照

  4. 将实例配置文件附加到 Amazon EC2 源实例。这允许 Systems Manager 与 EC2 实例通信,并在将其添加到 AWS Systems Manager 服务后在其中运行命令。对于该示例,我们将角色命名为 SSM-EC2-Profile-Role 并将 AmazonSSMManagedInstanceCore 策略附加到该角色。请参阅 AWS Systems Manager 用户指南中的为 Systems Manager 创建 IAM 实例配置文件

  5. 在 AWS Systems Manager 控制台的左侧导航窗格中,选择托管实例。验证您的 EC2 实例是否位于托管实例列表中。如果在几分钟后没有看到您的实例,请参阅 AWS Systems Manager 用户指南中的我的实例在哪里?

  6. 在左侧导航窗格中,在 Change Management(变更管理)下,选择 Automation

  7. 选择执行自动化

  8. 搜索名为 AWSEC2-CloneInstanceAndUpgradeSQLServer 的自动化文档。

  9. 选择 AWSEC2-CloneInstanceAndUpgradeSQLServer SSM 文档,然后选择 Next(下一步)。

  10. 确保选择了简单执行选项。

  11. 根据以下准则输入请求的参数。

    • InstanceId

      类型:字符串

      (必需)运行 SQL Server 2008 R2(或更高版本)的实例。

    • IamInstanceProfile

      类型:字符串

      (必需)IAM 实例配置文件。

    • SQLServerSnapshotId

      类型:字符串

      (必需)目标 SQL Server 安装介质的快照 ID。对于包含 SQL Server 许可证的实例,此参数不是必需的。

    • SubnetId

      类型:字符串

      (必需)这是执行升级过程的子网以及源 EC2 实例所在的位置。验证子网是否具有到 AWS 服务(包括 Amazon S3)和 Microsoft 的出站连接(以下载补丁)。

    • KeepPreUpgradedBackUp

      类型:字符串

      (可选)如果该参数设置为 true,自动化将保留从实例中创建的映像。默认设置为 false

    • RebootInstanceBeforeTakingImage

      类型:字符串

      (可选)默认值为 false(无重新引导)。如果该参数设置为 true,Systems Manager 将在创建升级 AMI 之前重新引导实例。

    • TargetSQLVersion

      类型:字符串

      (可选)目标 SQL Server 版本。默认为 2016

  12. 在输入这些参数后,选择执行。在自动化开始时,您可以监控执行进度。

  13. Execution status(执行状态)显示为 Success(成功)时,展开 Outputs(输出)以查看 AMI 信息。您可以使用 AMI ID 为所选的 VPC 启动 SQL Server 实例。

  14. 打开 Amazon EC2 控制台。在左侧导航窗格中,选择 AMI。将会看到新的 AMI。

  15. 要验证是否成功安装了新的 SQL Server 版本,请选择新的 AMI,然后选择 Launch(启动)。

  16. 为该 AMI 选择所需的实例类型、要部署到的 VPC 和子网以及要使用的存储。由于您从 AMI 中启动新的实例,因此,将以选项形式向您提供这些卷以包含在启动的新 EC2 实例中。您可以删除其中的任何卷,也可以添加卷。

  17. 添加标签以帮助您识别实例。

  18. 将一个或多个安全组添加到实例中。

  19. 选择 Launch Instance

  20. 选择实例的标签名称,然后在操作下拉列表中选择连接

  21. 验证 SQL Server 新版本是否为新实例上的数据库引擎。