亚马逊AWS官方博客

在 AWS 上轻松升级您即将到达支持终止日期的 Microsoft 2008 R2 工作负载 | AWS 数据库博客

许多 IT 组织运行 Microsoft Windows Server 2008 R2 操作系统和 Microsoft SQL Server 2008 R2 数据库系统的已经超过 10 年。而相应产品即将达到支持终止 (EOS) 日期(SQL Server 是 2019 年 7 月,Windows Server 是 2020 年 1 月)。因此,组织急需将这些系统升级到受支持的版本,以避免安全性和合规性风险,这一点至关重要。为了快速启动升级,我们已经为您备好了有助于升级的 AWS Systems Manager 文档。这些资料可以帮助您顺利升级 Windows Server 2008 R2 和具有 Service Pack 3 的 SQL Server 2008 R2。

本博文提供了有关使用 AWS Systems Manager 自动在 AWS 上升级即将达到支持终止日期的 Windows Server 2008 R2 和 SQL Server 2008 R2 实例的指南。该指南可帮助您使用低风险方法将这些版本升级至较新的受支持版本。

此外,Microsoft 会在 SQL Server 2008 R2 的扩展支持期间提供技术支持,包括安全更新。

此升级涉及以下 AWS 服务和功能:

  • AWS Systems Manager – AWS 提供的强大且统一的界面,可用于集中管理 AWS 资源。使用 AWS Systems Manager 的核心在于使用 AWS SSM Agent 和 AWS Systems Manager 文档。
  • AWS Systems Manager Agent (SSM Agent) – 在您的 Amazon EC2 实例上运行的 Amazon 软件。SSM Agent 处理来自云端 Systems Manager 服务的请求,并按请求中指定的信息配置您的计算机。SSM Agent 使用 EC2 消息传递将状态和执行信息发回给 Systems Manager 服务。
  • AWS Systems Manager 文档 – 本博文用到了两份 AWS Systems Manager Automation 文档。有关 AWS Systems Manager 文档的详细信息,请参阅 AWS 管理工具博客上的博文 Writing your own AWS Systems Manager documents

这些自动化文档提供了两种升级方法。一种可以帮您将 Windows Server 2008 R2 升级到 Windows Server 2012 R2。另一种可以帮您将 Windows Server 2012 R2 上的 SQL Server 2008 R2 升级到 SQL Server 2016。接下来我们会介绍这两种方法。

有关从 Windows Server 2008 R2 升级到 Windows Server 2012 R2 的更多详细信息,请参阅 System Manager 文档中的 AWSEC2-CloneInstanceAndUpgradeWindows 页面。

有关从 Windows Server 2012 R2 上的 SQL Server 2008 R2 升级到 SQL Server 2016 的更多详细信息,请参阅 System Manager 文档中的 AWSEC2-CloneInstanceAndUpgradeSQLServer 页面。

升级选项

下面我们来深入探究这两份 AWS Systems Manager Automation 文档:

AWSEC2-CloneInstanceAndUpgradeWindows

下图展示了 AWSEC2-CloneInstanceAndUpgradeWindows 脚本执行的操作。

此脚本通过您账户中的 Windows Server 2008 R2 实例创建一个 Amazon 系统映像 (AMI),然后将 AMI 升级到 Windows Server 2012 R2。升级操作涉及到多个步骤,可能需要两个小时才能完成。自动化操作通过实例创建 AMI,然后在您指定的 VPC 和子网中启动新创建的 AMI。自动化工作流执行从 Windows Server 2008 R2 到 Windows Server 2012 R2 的就地升级。该工作流还会更新或安装升级后的实例所需的 AWS 驱动程序。升级后,该工作流会创建新的 AMI,然后终止已升级的实例。

AWSEC2-CloneInstanceAndUpgradeSQLServer

此脚本通过您的账户中运行 SQL Server 2008 R2 SP3 的 Amazon EC2 Windows 实例创建一个 AMI,然后将此 AMI 升级到 SQL Server 2016 SP2。升级过程涉及到多个步骤,可能需要两个小时才能完成。自动化操作通过实例创建 AMI,然后在您指定的子网中启动新的 AMI。随后,自动化流程会执行 SQL Server 2008 R2 到 SQL Server 2016 的就地升级。升级完成后,自动化操作首先新建一个 AMI,然后终止升级后的实例。

您可以通过在 VPC 中启动新的 AMI 来测试应用程序功能。测试完成后,在执行其他升级之前,请先安排应用程序停机时间,然后完全切换到升级后的实例。

最终结果将得到一个 AMI,即升级后的实例 AMI。

这个过程涉及到两个 AMI:

  • 第一个 AMI – 这是当前正在运行的实例(尚未升级)的 AMI。我们使用此 AMI 启动另一个实例来运行就地升级过程。除非您明确选择保持原始实例继续运行,否则在此过程结束时,我们会从您的账户中删除此 AMI。此设置由参数 KeepPreUpgradeImageBackUp 处理(默认值为 False,表示我们会删除 AMI)
  • 第二个 AMI – 这是整个自动化操作过程的最终结果。第二个 AMI 是自动化操作过程的结果,其中包括 SQL Server 2016 引擎,而非原始的 SQL Server 2008 R2 引擎。您可以通过在 VPC 中启动新的 AMI 来测试应用程序功能。测试完成后,在执行其他升级之前,请先安排应用程序停机时间,然后完全切换到升级后的实例。

1.    需要的 IAM 角色

在开始自动化操作过程之前,您需要一个具备正确 IAM 策略IAM 角色,以允许 AWS Systems Manager 在您的账户中的 Amazon EC2 和 AMI 实例上执行自动化操作。对于此示例,所创建的角色应与附加的 AMI 策略 AmazonEC2RoleforSSM 同名。

有关创建 IAM 角色的指南,请参阅 IAM 文档中的创建向 AWS 服务委派权限的角色

2.     其他先决条件

在开始升级过程之前,请确认您已满足 AWS Systems Manager 的先决条件。您可以在 Systems Manager 文档的创建向 AWS 服务委派权限的角色中查阅相关信息。

3.     AWS Systems Manager Automation 执行选项

您可以通过多种方法执行自动化操作,下面列出了一些选项。

Simple execution (简单执行):

如果要更新单个实例并且不想逐步执行每个自动化操作步骤并审计结果,请使用此方法。本博文稍后将详细介绍此选项。

Rate control (速率控制):

如果要将升级应用于多个实例,请使用此选项。您可以使用以下设置执行此操作。

参数(同样在 Multi-Account and Region [多账户和区域] 中设置)

此设置定义了自动化操作的延伸方式。

Targets (目标)(同样在 Multi-Account and Region [多账户和区域] 中设置)

Parameter Values (参数值)

对于参数值,请使用自动化文档参数中定义的值。

Resource Group (资源组)

在 AWS 中,资源就是您可以使用的一种实体。示例包括 Amazon EC2 实例、AWS CloudFormation 堆栈或 Amazon S3 存储桶。如果您使用多个资源,那么可能会发现将它们作为一个组进行管理非常有用,这样可以避免在处理每项任务时从一个 AWS 服务转到另一个 AWS 服务。在某些情况下,您可能需要管理大量相关资源,例如构成应用程序层的 EC2 实例。在这些情况下,您可能需要一次性对这些资源执行批量操作。

Tags (标签)

标签 使您能够以不同方式对 AWS 资源进行分类,例如按用途、拥有者或环境进行分类。在您拥有许多相同类型的资源时,这非常有用 – 您可以根据分配给资源的标签快速识别特定资源。例如,您可以为您账户下的 Amazon EC2 实例定义一组标签,以帮助您跟踪每个实例的成本中心和环境。

Rate Control (速率控制)(同样在 Multi-Account and Region [多账户和区域] 中设置)

设置速率控制参数可以根据目标计数或队列百分比来定义应用自动化操作的队列数量。

Multi-Account and Region (多账户和区域)

Accounts and organizational units (OUs) (账户和组织部门 [OU])

在这里,您可以指定要对其运行自动化操作的多个账户。

AWS Regions (AWS 区域)

在这里,您可以指定要在其中运行自动化操作的多个 AWS 区域。

Manual Execution (手动执行)

此选项类似于 Simple execution (简单执行),但允许您逐步执行每个自动化操作步骤并审计结果。

将 Windows 2008 R2 升级到 2012 R2

本节重点介绍如何使用 AWSEC2-CloneInstanceAndUpgradeWindows 脚本

要使此流程正常工作,需要满足许多先决条件。如需相关条件列表,请参阅 Systems Manager 文档中的 AWSEC2-CloneInstanceAndUpgradeWindows

出于本示例的目的,我的 AWS 账户中驻留有一个 Window 2008 R2 实例。下图显示我的实例也安装了 SQL Server 2008 R2 SP3,并带有 AdventureWorks 示例数据库。在自动化操作完成后,AWS Systems Manager 会将操作系统升级到 Server 2012 R2。SQL Server 2008 R2 将保持原样。

现在,开始升级吧!

4.     在 AWS 管理控制台内打开 AWS Systems Manager

出于本博文的目的,我使用了专用的 AWS Systems Manager 界面。

在导航窗格中,选择自动化

选择 Execute Automation (执行自动化),表示采用自动化操作流程。

利用系统提供的搜索筛选器,筛选出自动化文档 AWSEC2-CloneInstanceAndUpgradeWindows


该文档的描述字段提供了自动化文档的概述。

5.     逐步实施简单执行

InstanceID

这是您为实例所提供的 ID,用于应用自动化操作。

InstanceProfile

这是用于针对 Amazon EC2 和 AWS AMI 执行 AWS Systems Manager Automation 的 IAM 角色。有关更多信息,请参阅 Systems Manager 文档中的任务 2:为 Systems Manager 创建实例配置文件

SubnetId

这是升级过程中使用的子网,也是您的源 EC2 实例所在的位置。验证子网是否具有与 AWS 服务(包括 Amazon S3)以及 Microsoft(用于下载补丁程序)之间的出站连接。

KeepPreUpgradedBackUp

(可选)如果此参数设置为 True,则自动化操作会保留从实例创建的映像。默认值为 False。

RebootInstanceBeforeTakingImage

(可选)默认值为 False(不重启)。如果此参数设置为 True,则 AWS Systems Manager 会在为升级创建 AMI 之前重启实例。

输入以下参数以运行自动化操作。

可共享的执行链接:

自动化操作开始后,您可以监控其进度。

自动化操作完成

自动化操作完成后,您可以看到的输出结果是 AMI ID (getUpgradeImageDetails.ImageId : ami-01f63*******)。您可以启动 AMI,此时即可看到 Windows 已升级完毕。

自动化操作不一定会运行所有步骤。步骤会根据自动化操作和实例的行为有条件地进行选择。因此,AWS Systems Manager 可能会跳过一些不必要的步骤。

此外,一些步骤可能会超时。AWS Systems Manager 会尝试升级并安装所有最新的补丁。但是,有时补丁会根据给定步骤的可定义超时设置超时。在这种情况下,AWS Systems Manager Automation 将继续执行下一步,确保内部操作系统升级到 2012 R2。

输出结果

对于这项自动化操作,您会在输出结果中得到新创建的 AWS AMI 名称和 ImageID。从这里,您可以启动 Amazon EC2 实例并查看升级,如下所示。要了解如何从 AWS AMI 创建 Amazon EC2 实例,请参阅知识中心文章如何从自定义 Amazon 系统映像 (AMI) 启动 EC2 实例?


将 SQL Server 2008 R2 升级到 SQL Server 2016

本节重点介绍如何使用 AWSEC2-CloneInstanceAndUpgradeSQLServer 脚本。

下图显示了 AWSEC2-CloneInstanceAndUpgradeSQLServer 脚本执行的操作。

要使此流程正常工作,需要满足许多先决条件。如需相关条件列表,请参阅 Systems Manager 文档中的 AWSEC2-CloneInstanceAndUpgradeSQLServer

满足这些先决条件后,请使用以下步骤将 SQL Server 2008 R2 数据库引擎升级到 SQL Server 2016。在此示例中,有一个名为 SQLServer2008r2-Source 的 SQL Server 2008 R2 源服务器。它运行 SQL Server 2008 R2 数据库引擎、Windows 2012 R2 操作系统。此服务器使用 AWS Systems Manager 的自动化文档升级其数据库引擎。

如果尚未安装,请下载 SQL Server 2016 的 .iso 文件并将其安装到源服务器上。装入此文件后,复制所有组件文件并将其存放到您选择的任何卷上。完成后,获取卷的 Amazon EBS 快照并将快照 ID 复制到剪贴板以供稍后使用。要查看创建 EBS 快照所涉及的步骤,请参阅 EBS 文档中的创建 Amazon EBS 快照

此特定示例具有名为 SSM-EC2-Profile-Role 的角色,该角色具有附加的 AmazonEc2RoleSSM 策略。该角色又附加到此实例。这让 Systems Manager 服务可以与 EC2 实例进行通信,并在将其添加到 AWS Systems Manager 服务中之后,在其上运行命令。

在将实例配置文件附加到 EC2 实例后,确认您可以在 AWS Systems Manager 服务的托管实例下看到它。如果您没有看到任何托管实例,请等待几分钟,之后应该就会看到。否则,请再次确认已满足 AWS Systems Manager 先决条件。

如下所示,该实例现已显示为一个托管实例(这意味着您可以对其运行命令)。

确认您的托管实例列表后,导航到 AWS Systems Manager 中的自动化选项卡,并选择 Execute Automation (执行自动化):

要搜索 AWSEC2-CloneInstanceAndUpgradeSQLServer 文档,请转到搜索栏,选择 Document name prefix (文档名称前缀),选择“等于”,然后粘贴文档名称 (AWSEC2-CloneInstanceAndUpgradeSQLServer)。务必注意,此名称区分大小写,因此请务必确保其名称正确无误。

找到文档后,选中该文档,然后选择下一步

您需要以下参数才能保证此升级过程成功完成:

  • InstanceId

类型:字符串

描述:(必需)运行 Windows Server 2012 R2(或更高版本)或 SQL Server 2008 R2(或更高版本)的实例。

  • IamInstanceProfile

类型:字符串

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

  • SnapshotId

类型:字符串

描述:(必需)SQL Server 2016 安装介质的快照 ID。

  • SubnetId

类型:字符串

描述:(必需)指定升级过程所用的子网。验证子网是否具有与 AWS 服务(包括 Amazon S3)和 Microsoft(用于下载补丁程序)之间的出站连接。

  • KeepPreUpgradeImageBackUp

类型:字符串

描述:(可选)如果此参数设置为 True,则自动化操作不会删除在升级之前从实例创建的 AMI。如果将其设置为 True,则必须删除 AMI。默认情况下,AMI 将被删除。

  • RebootInstanceBeforeTakingImage

类型:字符串

描述:(可选)如果此参数设置为 True,则自动化操作会先重启实例,然后再创建升级前的 AMI。默认情况下,自动化操作在升级之前不会重启实例。

设置好上述参数后,填充以下部分并选择下一步

执行过程开始后,向下滚动并查看进度页面,监控文档每个步骤的进度。

Execution Status (执行状态) 显示为成功之后,选择“输出”列表以查看 AMI 信息。在这里您可以看到 AMI ID。您现在可以使用它来为您选择的 VPC 启动 SQL Server 2016 实例。

导航回 EC2 控制台并选择 AMI 选项卡。在这里,您可以看到新的 AMI,您稍候可以启动它来验证是否已成功安装 SQL Server 2016。

要启动新的 AMI,请选中它并选择启动

选择所需的 AMI 实例类型,选择要将设备部署到的 VPC 和子网,然后选择所需的存储。由于您是从 AMI 启动这个新的 EC2 实例,因此 AMI 中显示的卷将显示为可以包含在您启动的新 EC2 实例中的选项。您可以删除新实例的任何卷,也可以为其添加任何卷。

在选择好要存储的内容后,添加标签,将安全组或组添加到实例,最后启动实例。

新启动的服务器的标签名称是 SQLServer2016。选中该服务器并建立连接,以确认实例上的新数据库引擎已经是 SQL Server 2016。

启动 SQL Server Management Studio 后,连接到给定服务器的默认实例(或指定实例)。在这里,您可以通过在查询窗口中运行以下查询来验证引擎是否确实已升级。

SELECT @@VERSION

您可以通过两种方法确认引擎是否已升级。第一种方法是在对象资源管理器中查看特定内部版本号(内部版本号 13.0.5026)。另一种方法是确定上面的查询所得到的输出是“Microsoft SQL Server 2016…”

至此,您已在 AWS Systems Manager 中成功完成 AWSEC2-CloneInstanceAndUpgradeSQLServer 自动化文档。希望本文能为您提供有用的信息,帮助您顺利完成升级过程。

小结

在本博文中,我们使用两份 AWS Systems Manager 文档(AWSEC2-CloneInstanceAndUpgradeWindows 和 AWSEC2 -CloneInstanceAndUpgradeSQLServer)帮助您自动执行 AWS 环境中的 Windows Server 2008 R2 和 SQL Server 2008 R2 实例升级过程。完成自动化操作步骤后,即会创建 AWS AMI。此方法使您可以灵活地使用升级后的服务器。

欢迎您在评论中提出反馈意见或疑问。

 


本篇作者

Stefan Minhas 是Amazon Web Services 的一位高级顾问。他是美洲应用交付实践领域的 Microsoft 主题专家,他在更广泛的专业服务社区中为专业技能的开发与发展提供指导和技术支持。

 

 

 

Bini Berhe 是Amazon Web Services 的一位高级解决方案架构师。他与 AWS 客户合作,为在 AWS 上运行 Microsoft 工作负载提供指导和技术帮助。