随着ECS实例的不断迭代,较早创建的ECS实例可能出现无法新增资源补给等问题,可能会影响您对云上业务的运维。阿里云的自定义镜像功能可以帮助您迁移源ECS实例的数据至新创建的目标ECS实例,以保障云上业务的运维效率。本文为您介绍如何使用阿里云CLI创建并复制自定义镜像,实现跨地域迁移ECS实例。
方案概览
使用阿里云CLI通过自定义镜像跨地域迁移ECS实例数据,大致可分为以下五个步骤:
创建镜像:为源ECS实例创建自定义镜像,使用该镜像创建的新实例,会包含您已配置的自定义项,省去您重复自定义实例的时间。
复制镜像:复制镜像后,您可以在目标地域获得不同ID的新镜像,其标签、资源组、加密属性等配置以复制镜像时的输入参数为准。
新建实例:使用自定义镜像在目标地域中新建目标ECS实例。
检查实例:检查新创建的目标ECS实例的相关数据情况,确保实例数据迁移后,业务功能仍可流畅运行。
释放资源:迁移完成后,结合自身的实际需求,可以选择释放或删除源ECS实例的相关资源,避免资源持续产生费用。
注意事项
数据迁移前,请您仔细阅读以下注意事项。
在创建自定义镜像期间,系统会对ECS实例的各个云盘自动创建快照,快照将产生一定的费用。有关快照费用的详细信息,请参见快照计费。
部分包含本地盘的实例无法创建快照,此类实例不支持通过本文的操作完成实例的数据迁移。
源ECS实例的网络类型可以是经典网络或专有网络VPC。
新建目标ECS实例时,仅支持创建VPC网络类型的ECS实例。
新建目标ECS实例时,仅支持选择当前可用区下有库存的实例规格。
说明
如果您需要跨地域和可用区迁移实例数据,建议您提前自行做好资源所属地域和可用区的规划工作。
由于是通过自定义镜像完成的实例数据迁移操作,因此数据迁移后,新创建的目标ECS实例中云盘数据与源ECS实例中的云盘数据保持一致,但新创建的目标ECS实例的实例元数据会重新生成,与源ECS实例中的实例元数据相比较会发生变化。关于实例元数据的更多信息,请参见ECS实例元数据概述。
由于实例元数据会发生变化,在实例数据迁移之前,建议您手动排查资源关联关系,并在数据迁移后及时更新资源的关联关系。例如:
集群内部通过私网IP地址互联互通,在进行实例数据迁移后,您需要替换为最新的私网IP地址。
某些应用的许可证(License)与ECS实例的MAC地址绑定,在进行实例数据迁移后,这些许可证将因为ECS实例的MAC地址改变而失效,您需要重新绑定最新的MAC地址。
步骤一:为源ECS实例创建自定义镜像
通过实例创建自定义镜像前,您需要了解相关注意事项。更多信息,请参见使用实例创建自定义镜像。
执行以下命令,调用CreateImage创建源ECS示例的自定义镜像:
aliyun ecs CreateImage \ --RegionId 'cn-hangzhou' \ --ImageName Created_from_hangzhouECS \ --InstanceId 'i-bp1g6zv0ce8oghu7****' \ --ResourceGroupId 'rg-bp67acfmxazb4p****'
返回结果示例:
{ "ImageId": "m-bp146shijn7hujku****", "RequestId": "C8B26B44-0189-443E-9816-*******" }
步骤二:跨地域复制镜像
将源ECS实例的数据跨地域迁移至新创建的目标ECS实例,需要先通过复制镜像功能将自定义镜像复制到其他地域。
执行以下命令,调用CopyImage从
cn-hangzhou
复制源ECS实例的自定义镜像到cn-beijing
:aliyun ecs CopyImage \ --RegionId 'cn-hangzhou' \ --DestinationImageName Copy_from_hangzhouImage \ --ImageId 'm-bp1h46wfpjsjastc****' \ --DestinationRegionId 'cn-beijing' \ --ResourceGroupId 'rg-bp67acfmxazb4p****'
返回结果示例:
{ "ImageId": "m-bp1h46wfpjsjastd****", "RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E" }
步骤三:使用自定义镜像新建目标ECS实例
执行以下命令,使用RunInstances根据自定义镜像新建目标ECS实例:
说明示例命令中
PasswordInherit
选项设置为true
,执行命令创建实例时将使用镜像预设的密码。使用镜像预设密码后,新创建的目标ECS实例登录密码与源ECS实例的登录密码一致。您可根据需求自行选择符合的实例规格,更多参数信息,请参见自定义购买实例。
aliyun ecs RunInstances \ --region cn-beijing \ --RegionId 'cn-beijing' \ --SecurityGroupId 'sg-2zea9dbddva****' \ --VSwitchId 'vsw-2zep7vc25mjc1****' \ --ImageId 'm-bp1h46wfpjsjastd****' \ --InstanceType 'ecs.e-c1m1.large' \ --InstanceName Copy_from_hangzhouECS \ --PasswordInherit true \ --InternetChargeType PayByTraffic \ --SystemDisk.Size 40 \ --SystemDisk.Category cloud_essd \ --InstanceChargeType PostPaid \ --InternetMaxBandwidthOut 10
返回结果示例:
{ "RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****", "InstanceIdSets": { "InstanceIdSet": [ "i-bp67acfmxazb4pd2****" ] } }
步骤四:检查新创建的目标ECS实例内的数据
您需要检查新创建的目标ECS实例的相关数据情况,确保实例数据迁移后,业务功能仍可流畅运行。例如:
检查云盘数据:远程连接新创建的目标ECS实例,检查系统盘数据是否与源ECS实例一致,例如比较文件和目录结构是否一致。如果源ECS实例存在数据盘并在目标ECS实例上挂载了相应的云盘,您可以检查数据盘上的数据是否与源ECS实例一致。
运行应用程序或服务:如果您的源ECS实例上运行了特定的应用程序或服务,您可以尝试在目标ECS实例上运行相同的应用程序或服务,并验证其功能和数据操作是否与源ECS实例一致。
对比资源信息变化:
您可以执行以下命令,调用DescribeInstances,对比源ECS实例与新创建的目标ECS实例相关的资源信息变化,例如镜像信息、网络配置等。
aliyun ecs DescribeInstances --RegionId 'cn-beijing' --InstanceIds '["i-bp67acfmxazb4pd2****"]'
更新资源的关联关系:新创建的目标ECS实例的实例元数据会重新生成,与源ECS实例中的实例元数据相比会发生变化。您需要在数据迁移后及时更新资源的关联关系。更多信息,请参见实例元数据。
步骤五:释放或删除源ECS实例及相关资源
在您仔细检查新创建的目标ECS实例与源ECS实例数据没有差异,且完成了资源关联关系的更新,确保新创建的目标ECS实例内业务可以流畅运行后,结合自身的实际需求,可以选择释放或删除源ECS实例的相关资源,避免资源持续产生费用。相关操作说明如下:
释放实例、删除镜像以及删除快照的操作为单向操作,一旦操作完成,资源内的数据不可恢复。请确保您已完成所有业务数据的迁移再执行释放或删除资源的操作。
您可执行以下命令,调用DeleteInstance,释放源ECS实例。更多信息,请参见释放实例。
aliyun ecs DeleteInstance --InstanceId i-bp67acfmxazb4pd2****
您可执行以下命令,调用DeleteImage,删除创建的自定义镜像,请参见删除自定义镜像。
重要删除自定义镜像后,已使用该镜像创建的ECS实例将无法初始化系统盘。如果您的自定义镜像为免费镜像,并且您需要保留该镜像以供后续使用,建议无需删除该自定义镜像。有关镜像计费的详细信息,请参见镜像计费。
aliyun ecs DeleteImage --RegionId 'cn-hangzhou' --ImageId 'm-bp146shijn7hujku****'
您可执行以下命令,调用DeleteInstance,删除指定的快照。更多信息,请参见删除快照。
aliyun ecs DeleteSnapshot --SnapshotId 's-bp1c0doj0taqyzzl****'
相关文档
您也可在控制台中实现同地域或者跨地域下的ECS实例间的迁移。具体操作,请参见通过自定义镜像跨地域复制ECS实例。