本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWSSupport-MigrateXenToNitroLinux
描述
AWSSupport-MigrateXenToNitroLinux运行手册将亚马逊弹性计算云 (Amazon EC2) Linux Xen 实例克隆、准备和迁移到 Nitro 实例类型。此运行手册为操作类型提供了两个选项:
-
Clone&Migrate— 此选项的工作流程包括初步检查、测试和 Clone&Migrate阶段。工作流程使用AWSSupport-CloneXenEC2InstanceAndMigrateToNitro运行手册运行。 -
FullMigration– 此选项运行Clone&Migrate工作流程,然后执行 替换 Amazon EBS 根卷的额外步骤。
重要
使用此运行手册会给您的账户带来亚马逊 EC2实例的运行时间、亚马逊弹性区块存储 (Amazon EBS) 存储卷的创建以及 AMIs。 有关更多详情,请参阅亚马逊 EC2 定价和亚马
初步检查
在继续迁移之前,自动化会执行以下初步检查。如果任何检查失败,自动化将结束。此阶段只是 Clone&Migrate 工作流程的一部分。
-
检查目标实例是否已经是 Nitro 实例类型。
-
检查竞价型实例购买选项是否用于目标实例。
-
检查实例存储卷是否附加到目标实例。
-
验证目标实例操作系统 (OS) 是否为 Linux。
-
检查目标实例是否是 Amazon A EC2 uto Scaling 组的一部分。如果它是自动扩缩组的一部分,自动化操作将验证该实例是否处于
standby状态。 -
验证实例是否由管理。 AWS Systems Manager
测试
自动化会创建一个 Amazon Machine Image (AMI) 从目标实例启动测试实例,并从新创建的实例启动测试实例 AMI。 此阶段只是工作Clone&Migrate流程的一部分。
如果测试实例通过了所有状态检查,则自动化将暂停,并通过 Amazon Simple Notification Service (Amazon SNS) 通知请求指定委托人批准。如果提供了批准,则自动化会终止测试实例,停止目标实例,并继续迁移,同时新创建的 AMI 在Clone&Migrate工作流程结束时取消注册。
注意
在提供批准之前,我们建议您确认目标实例上运行的所有应用程序均已正常关闭。
克隆和迁移
自动化创造了另一个 AMI 从目标实例,然后启动一个新实例以更改为 Nitro 实例类型。在继续迁移之前,自动化会完成以下先决条件。如果任何检查失败,自动化将结束。此阶段也只是 Clone&Migrate 工作流程的一部分。
-
开启增强联网 (ENA) 属性。
-
安装最新版本的 ENA 驱动程序(如果尚未安装),或者将 ENA 驱动程序版本更新至最新版本。为确保最佳网络性能,如果出现以下情况,则需要更新到最新的 ENA 驱动程序版本 Nitro 实例类型是第 6 代。
-
验证 NVMe 模块是否已安装。如果模块安装完毕,自动化将验证该模块是否加载到
initramfs中。 -
使用区块设备名称(
/dev/sd*或/dev/xvd*)分析/etc/fstab条目并将其替换为相应的条目 UUIDs。在修改配置之前,自动化会在路径/etc/fstab*上创建文件的备份。 -
关闭可预测的接口命名,方法是将
net.ifnames=0选项添加到/etc/default/grub文件(如果存在)中的GRUB_CMDLINE_LINUX行,或添加到/boot/grub/menu.lst中的内核。 -
如果
/etc/udev/rules.d/70-persistent-net.rules文件存在,则将其移除。在移除文件之前,自动化会在路径/etc/udev/rules.d/上创建文件的备份。
验证所有要求后,实例类型更改为 Nitro 您指定的实例类型。自动化会等待新创建的实例在启动后通过所有状态检查 Nitro 实例类型。然后,自动化会等待指定负责人的批准后再创建 AMI 成功推出的 Nitro 实例。如果批准被拒绝,自动化将结束,从而让新创建的实例保持运行状态,目标实例将保持停止状态。
替换根 Amazon EBS 卷
如果您选择FullMigration作为OperationType,则自动化会将目标 Amazon EC2 实例迁移到 Nitro 您指定的实例类型。Automation 会请求指定委托人的批准,以将目标 Amazon EC2 实例的 Amazon EBS 根卷替换为克隆的 EC2 亚马逊实例的根卷。成功迁移后,克隆的 Amazon EC2 实例将终止。如果自动化失败,则原始的 Amazon EBS 根卷将附加到目标亚马逊 EC2 实例。如果连接到目标 Amazon EC2 实例的 Amazon EBS 根卷具有应用aws:前缀的标签,则不支持该FullMigration操作。
开始之前
目标实例必须具有出站互联网访问权限。这是为了访问驱动程序和依赖项的存储库,比如 kernel-devel, gcc, patch, rpm-build, wget, dracut, make, linux-headers,以及 unzip。 如果需要,可以使用 Package 管理器。
需要使用 Amazon SNS 主题才能发送批准和更新的通知。有关如何创建 Amazon SNS 主题的更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的创建 Amazon SNS 主题。
此运行手册支持以下操作系统:
-
RHEL 7.x-8.5
-
Amazon Linux (2018.03)、Amazon Linux 2
-
Debian 服务器
-
Ubuntu Server 18.04 LTS、20.04 LTS 和 20.10 STR
-
SUSE Linux Enterprise Server (SUSE12SP5, SUSE15SP2)
文档类型
自动化
所有者
Amazon
平台
Linux
参数
-
AutomationAssumeRole
类型:字符串
描述:(可选)允许 Systems Manager Automation 代表您执行操作 AWS Identity and Access Management (IAM) 角色的 Amazon 资源名称(ARN)。如果未指定角色,Systems Manager Automation 将使用启动此运行手册的用户的权限。
-
确认
类型:字符串
描述:(必需)阅读此自动化运行手册所执行操作的完整详细信息,然后输入
Yes, I understand and acknowledge以继续使用运行手册。 -
ApproverIAM
类型:字符串
描述:(必填)可以批准自动化的 IAM 角色、用户或用户名。 ARNs 您可以指定最多 10 个 批准者。
-
DeleteResourcesOnFailure
类型:布尔值
描述:(可选)确定新创建的实例是否和 AMI 因为如果自动化失败,则会删除迁移。
有效值:True | False
默认值:True
-
MinimumRequiredApprovals
类型:字符串
描述:(可选)在请求批准时继续运行自动化所需的最低批准数。
有效值:1-10
默认值:1
-
NitroInstanceType
类型:字符串
描述:(必填) Nitro 您要将实例更改为的实例类型。支持的实例类型包括 M5、M6、C5、C6、R5、R6 和 T3。
默认:m5.xlarge
-
OperationType
类型:字符串
描述:(必需)希望执行的操作。
FullMigration选项执行的任务与Clone&Migrate的相同,还会替换目标实例的根卷。迁移过程结束后,目标实例的根卷将替换为来自新创建实例的根卷。FullMigration操作不支持逻辑卷管理器 (LVM) 定义的根卷。有效值:克隆并迁移 | FullMigration
-
SNSTopicArn
类型:字符串
说明:(必需)用于批准通知的 Amazon SNS 主题的 ARN。Amazon SNS 主题用于在自动化期间发送所需的批准通知。
-
TargetInstanceId
类型:字符串
描述:(必填)要迁移的 Amazon EC2 实例的 ID。
所需的 IAM 权限
AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。
-
ssm:DescribeAutomationExecutions -
ssm:StartAutomationExecution -
ssm:DescribeInstanceInformation -
ssm:DescribeAutomationStepExecutions -
ssm:SendCommand -
ssm:GetAutomationExecution -
ssm:ListCommands -
ssm:ListCommandInvocations -
ec2:DescribeInstances -
ec2:DescribeInstanceTypeOfferings -
ec2:DescribeInstanceTypes -
ec2:DescribeImages -
ec2:CreateImage -
ec2:RunInstances -
ec2:DescribeInstanceStatus -
ec2:DeregisterImage -
ec2:DeleteSnapshot -
ec2:TerminateInstances -
ec2:StartInstances -
ec2:DescribeKeyPairs -
ec2:StopInstances -
kms:CreateGrant* -
kms:ReEncrypt -
ec2:ModifyInstanceAttribute -
autoscaling:DescribeAutoScalingInstances -
iam:passRole -
iam:ListRoles
文档步骤
-
startOfPreliminaryChecksBranch- 分支到初步检查工作流程。 -
getTargetInstanceProperties- 从目标实例收集详细信息。 -
checkIfNitroInstanceTypeIsSupportedInAZ-确定目标的 Amazon EC2 实例类型是否在与目标实例相同的可用区中受支持。 -
getXenInstanceTypeDetails- 收集有关源实例类型的详细信息。 -
checkIfInstanceHypervisorIsNitroAlready-检查目标实例是否已作为一个实例运行 Nitro 实例类型。 -
checkIfTargetInstanceLifecycleIsSpot- 检查目标实例的购买选项是否为 Spot。 -
checkIfOperatingSystemIsLinux- 检查目标实例操作系统是否为 Linux。 -
verifySSMConnectivityForTargetInstance- 验证目标实例是否由 Systems Manager 管理。 -
checkIfEphemeralVolumeAreSupported- 检查目标实例的当前实例类型是否支持实例存储卷。 -
verifyIfTargetInstanceHasEphemeralVolumesAttached- 检查目标实例是否包含附加的实例存储卷。 -
checkIfRootVolumeIsEBS- 检查目标实例的根卷类型是否为 EBS。 -
checkIfTargetInstanceIsInASG- 检查目标实例是否是自动扩缩组的一部分。 -
endOfPreliminaryChecksBranch- 初步检查分支结束。 -
startOfTestBranch- 分支到测试工作流程。 -
createTestImage-创建测试 AMI 目标实例的。 -
launchTestInstanceInSameSubnet-从测试中启动测试实例 AMI 使用与目标实例相同的配置。 -
cleanupTestInstance- 终止测试实例。 -
endOfTestBranch- 测试分支结束。 -
checkIfTestingBranchSucceeded- 检查测试分支的状态。 -
approvalToStopTargetInstance- 等待指定委托人的批准才能停止目标实例。 -
stopTargetEC2Instance- 停止目标实例。 -
forceStopTargetEC2Instance- 只有在上一步未能停止目标实例时才强制停止该实例。 -
startOfCloneAndMigrateBranch-分支到 Clone&Migrate 工作流程。 -
createBackupImage-创建一个 AMI 要用作备份的目标实例。 -
launchInstanceInSameSubnet-从备份中启动新实例 AMI 使用与源实例相同的配置。 -
waitForClonedInstanceToPassStatusChecks- 等待新创建的实例通过所有状态检查。 -
verifySSMConnectivityForClonedInstance- 验证新创建的实例是否由 Systems Manager 管理。 -
checkAndInstallENADrivers- 检查新创建的实例上是否安装了 ENA 驱动程序,并在需要时安装驱动程序。 -
checkAndAddNVMEDrivers-检查新创建的实例上是否安装了 NVMe 驱动程序,并在需要时安装驱动程序。 -
checkAndModifyFSTABEntries-检查中是否使用了设备名称,/etc/fstab并在需要时将其替 UUIDs 换为。 -
stopClonedInstance- 停止新创建的实例。 -
forceStopClonedInstance- 只有在上一步未能停止实例时才强制停止新创建的实例。 -
checkENAAttributeForClonedInstance- 检查是否为新创建的实例启用了增强联网属性。 -
setNitroInstanceTypeForClonedInstance-将新创建的实例的实例类型更改为 Nitro 您指定的实例类型。 -
startClonedInstance- 启动您已更改其实例类型的新创建实例。 -
approvalForCreatingImageAfterDriversInstallation-如果实例成功启动为 Nitro 实例类型,自动化将等待所需委托人的批准。如果提供了批准,AMI 是为了用作金牌而创建的 AMI. -
createImageAfterDriversInstallation-创建一个 AMI 可用作金牌 AMI. -
endOfCloneAndMigrateBranch-结束 Clone&Migrate 分支。 -
cleanupTestImage-注销 AMI 为测试而创建。 -
failureHandling- 检查您是否选择在出现故障时终止资源。 -
onFailureTerminateClonedInstance- 在自动化失败时终止新创建的实例。 -
onFailurecleanupTestImage-注销 AMI 为测试而创建。 -
onFailureApprovalToStartTargetInstance- 在自动化失败时等待指定主体的批准以启动目标实例。 -
onFailureStartTargetInstance- 在自动化失败时启动目标实例。
所需的 IAM 权限
AutomationAssumeRole 参数需要执行以下操作才能成功使用运行手册。
-
ssm:DescribeAutomationExecutions -
ssm:DescribeInstanceInformation -
ssm:DescribeAutomationStepExecutions -
ssm:SendCommand -
ssm:GetAutomationExecution -
ssm:ListCommands -
ssm:ListCommandInvocations -
ec2:DescribeInstances -
ec2:DescribeInstanceTypeOfferings -
ec2:DescribeInstanceTypes -
ec2:DescribeImages -
ec2:CreateImage -
ec2:RunInstances -
ec2:DescribeInstanceStatus -
ec2:DeregisterImage -
ec2:DeleteSnapshot -
ec2:TerminateInstances -
ec2:StartInstances -
ec2:DescribeKeyPairs -
ec2:StopInstances -
kms:CreateGrant* -
kms:ReEncrypt -
ec2:ModifyInstanceAttribute -
ec2:DetachVolume -
ec2:AttachVolume -
ec2:DescribeVolumes -
autoscaling:DescribeAutoScalingInstances -
iam:PassRole -
ec2:CreateTags -
cloudformation:DescribeStackResources
文档步骤
FullMigration 工作流程运行的步骤与 Clone&Migrate 工作流运行的相同,另外还执行以下步骤:
-
checkConcurrency-验证此运行手册中是否只有一个针对您指定的 Amazon EC2 实例的自动化。如果运行手册发现另一个针对同一实例的自动化正在进行,自动化将结束。 -
getTargetInstanceProperties- 从目标实例收集详细信息。 -
checkRootVolumeTags-确定目标 Amazon EC2 实例的根卷是否包含任何 AWS 预留标签。 -
cloneTargetInstanceAndMigrateToNitro- 使用AWS-CloneXenInstanceToNitro运行手册启动儿童自动化。 -
branchOnTheOperationType- 根据您为OperationType参数指定的值进行分支。 -
getClonedInstanceId- 从子自动化中检索新启动的实例的 ID。 -
checkIfRootVolumeIsBasedOnLVM- 确定根分区是否由 LVM 管理。 -
branchOnTheRootVolumeLVMStatus- 如果从主体收到了要求的最低限度批准,自动化将继续执行根卷替换。 -
manualInstructionsInCaseOfLVM- 如果根卷由 LVM 管理,自动化将发送包含如何手动替换根卷说明的输出。 -
startOfReplaceRootEBSVolumeBranch- 启动“替换根 EBS 卷”分支工作流。 -
checkIfTargetInstanceIsManagedByCFN-确定目标实例是否由 AWS CloudFormation 堆栈管理。 -
branchOnCFNStackStatus-基于CloudFormation 堆栈状态的分支。 -
approvalForRootVolumesReplacement(WithCFN)-如果目标实例是由启动的 CloudFormation,则在新启动的实例成功启动后,自动化将等待批准 Nitro 实例类型。获得批准后,目标实例的 Amazon EBS 卷将替换为新启动实例的根卷。 -
approvalForRootVolumesReplacement-在新启动的实例成功启动后等待批准 Nitro 实例类型。获得批准后,目标实例的 Amazon EBS 卷将替换为新启动实例的根卷。 -
assertIfTargetEC2InstanceIsStillStopped- 在更换根卷之前,验证目标实例是否处于stopped状态。 -
stopTargetInstanceForRootVolumeReplacement- 如果目标实例正在运行,则自动化会在替换根卷之前停止该实例。 -
forceStopTargetInstanceForRootVolumeReplacement- 在上一步失败时强制停止目标实例。 -
stopClonedInstanceForRootVolumeReplacement- 停止新创建的实例后再替换 Amazon EBS 卷。 -
forceStopClonedInstanceForRootVolumeReplacement- 在上一步失败时强制停止新创建的实例。 -
getBlockDeviceMappings- 检索目标实例和新创建实例的块设备映射。 -
replaceRootEbsVolumes- 将目标实例的根卷替换为新创建实例的根卷。 -
EndOfReplaceRootEBSVolumeBranch- 结束“替换根 EBS 卷”分支工作流。 -
checkENAAttributeForTargetInstance-检查目标 Amazon EC2 实例的增强联网 (ENA) 属性是否已开启。 -
enableENAAttributeForTargetInstance-如果需要,可为目标 Amazon EC2 实例开启 ENA 属性。 -
setNitroInstanceTypeForTargetInstance-将目标实例更改为 Nitro 您指定的实例类型。 -
replicateRootVolumeTags-从目标亚马逊实例复制根 Amazon EBS 卷上的标签。 EC2 -
startTargetInstance-更改 EC2 实例类型后启动目标 Amazon 实例。 -
onFailureStopTargetEC2Instance-如果目标 Amazon EC2 实例启动失败,则将其停止 Nitro 实例类型。 -
onFailureForceStopTargetEC2Instance-如果上一步失败,则强制停止目标 Amazon EC2 实例。 -
OnFailureRevertOriginalInstanceType-如果目标 EC2实例启动失败,则将目标 Amazon 实例恢复为原始实例类型 Nitro 实例类型。 -
onFailureRollbackRootVolumeReplacement- 必要时还原replaceRootEbsVolumes步骤所做的所有更改。 -
onFailureApprovalToStartTargetInstance-在回退之前的更改后,等待指定委托人的批准才能启动目标 Amazon EC2 实例。 -
onFailureStartTargetInstance-启动目标 Amazon EC2 实例。 -
terminateClonedEC2Instance-更换根 Amazon EBS 卷后,终止克隆的 Amazon EC2 实例。