使用阿里云CLI跨地域迁移ECS实例

随着ECS实例的不断迭代,较早创建的ECS实例可能出现无法新增资源补给等问题,可能会影响您对云上业务的运维。阿里云的自定义镜像功能可以帮助您迁移源ECS实例的数据至新创建的目标ECS实例,以保障云上业务的运维效率。本文为您介绍如何使用阿里云CLI创建并复制自定义镜像,实现跨地域迁移ECS实例。

方案概览

使用阿里云CLI通过自定义镜像跨地域迁移ECS实例数据,大致可分为以下五个步骤:

  1. 创建镜像:为源ECS实例创建自定义镜像,使用该镜像创建的新实例,会包含您已配置的自定义项,省去您重复自定义实例的时间。

  2. 复制镜像:复制镜像后,您可以在目标地域获得不同ID的新镜像,其标签、资源组、加密属性等配置以复制镜像时的输入参数为准。

  3. 新建实例:使用自定义镜像在目标地域中新建目标ECS实例。

  4. 检查实例:检查新创建的目标ECS实例的相关数据情况,确保实例数据迁移后,业务功能仍可流畅运行。

  5. 释放资源:迁移完成后,结合自身的实际需求,可以选择释放或删除源ECS实例的相关资源,避免资源持续产生费用。

注意事项

数据迁移前,请您仔细阅读以下注意事项。

  • 在创建自定义镜像期间,系统会对ECS实例的各个云盘自动创建快照,快照将产生一定的费用。有关快照费用的详细信息,请参见快照计费

  • 部分包含本地盘的实例无法创建快照,此类实例不支持通过本文的操作完成实例的数据迁移。

  • 源ECS实例的网络类型可以是经典网络或专有网络VPC。

  • 新建目标ECS实例时,仅支持创建VPC网络类型的ECS实例。

  • 新建目标ECS实例时,仅支持选择当前可用区下有库存的实例规格。

    说明

    如果您需要跨地域和可用区迁移实例数据,建议您提前自行做好资源所属地域和可用区的规划工作。

  • 由于是通过自定义镜像完成的实例数据迁移操作,因此数据迁移后,新创建的目标ECS实例中云盘数据与源ECS实例中的云盘数据保持一致,但新创建的目标ECS实例的实例元数据会重新生成,与源ECS实例中的实例元数据相比较会发生变化。关于实例元数据的更多信息,请参见ECS实例元数据概述

    由于实例元数据会发生变化,在实例数据迁移之前,建议您手动排查资源关联关系,并在数据迁移后及时更新资源的关联关系。例如:

    • 集群内部通过私网IP地址互联互通,在进行实例数据迁移后,您需要替换为最新的私网IP地址。

    • 某些应用的许可证(License)与ECS实例的MAC地址绑定,在进行实例数据迁移后,这些许可证将因为ECS实例的MAC地址改变而失效,您需要重新绑定最新的MAC地址。

步骤一:为源ECS实例创建自定义镜像

通过实例创建自定义镜像前,您需要了解相关注意事项。更多信息,请参见使用实例创建自定义镜像

  1. 执行以下命令,调用CreateImage创建源ECS示例的自定义镜像:

    复制代码
    aliyun ecs CreateImage \
      --RegionId 'cn-hangzhou' \
      --ImageName Created_from_hangzhouECS \
      --InstanceId 'i-bp1g6zv0ce8oghu7****' \
      --ResourceGroupId 'rg-bp67acfmxazb4p****'
  2. 返回结果示例:

    复制代码
    {
      "ImageId": "m-bp146shijn7hujku****",
      "RequestId": "C8B26B44-0189-443E-9816-*******"
    }

步骤二:跨地域复制镜像

将源ECS实例的数据跨地域迁移至新创建的目标ECS实例,需要先通过复制镜像功能将自定义镜像复制到其他地域。

  1. 执行以下命令,调用CopyImagecn-hangzhou复制源ECS实例的自定义镜像到cn-beijing

    复制代码
    aliyun ecs CopyImage \
      --RegionId 'cn-hangzhou' \
      --DestinationImageName Copy_from_hangzhouImage \
      --ImageId 'm-bp1h46wfpjsjastc****' \
      --DestinationRegionId 'cn-beijing' \
      --ResourceGroupId 'rg-bp67acfmxazb4p****'
  2. 返回结果示例:

    复制代码
    {
      "ImageId": "m-bp1h46wfpjsjastd****",
      "RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E"
    }

步骤三:使用自定义镜像新建目标ECS实例

  1. 执行以下命令,使用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

  2. 返回结果示例:

    复制代码
    {
      "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****'
相关推荐
李广坤16 小时前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
JaguarJack1 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo1 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
爱可生开源社区2 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1772 天前
《从零搭建NestJS项目》
数据库·typescript
JaguarJack2 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理3 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
加号33 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏3 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐3 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端