本文介绍如何恢复即将被回收的抢占式实例内的数据。
抢占式实例存在中断回收机制,在被完全回收前,实例会进入锁定状态,并触发中断事件。当您接收到抢占式实例的中断通知后,您可以通过以下操作为实例创建自定义镜像,并基于已创建的镜像新建抢占式实例,以实现实例内的数据恢复。
注意
本文以调用RunInstances接口创建并自动启动抢占式实例为例。您也可以参考购买抢占式实例,通过云服务器控制台创建抢占式实例。
请求示例
以下代码适用于创建一台实例计费方式采用按量计费 PostPaid
、抢占策略采用系统自动出价 SpotAsPriceGo
的通用型g2i抢占式实例。
GET /?Action=RunInstances&Version=2020-04-01&ZoneId=cn-beijing-a&ImageId=image3tgt71djf14bwbh7****&InstanceTypeId=ecs.g2i.xlarge&InstanceName=instance-test&InstanceChargeType=PostPaid&SpotStrategy=SpotAsPriceGo&Count=1&Password=password@123&NetworkInterfaces.1.SubnetId=subnet-3thbjdy3rh4bwbh8****&NetworkInterfaces.1.SecurityGroupIds.1=sg3thbinrkp94bwbha****&Volumes.1.VolumeType=PTSSD&Volumes.1.Size=40 HTTP/1.1 Host: open.volcengineapi.com Region: cn-beijing Service: ecs
返回示例
返回 InstanceIds
表示抢占式实例创建成功。
"Result": { "InstanceIds": [ "i-3tigy72q3u3vj0******" ] }
火山引擎会提前5分钟通过站内信、短信或邮件发送即将中断抢占式实例的通知,同时会生成系统事件。本文介绍调用DescribeSystemEvents接口查看抢占式实例的事件信息。
请求示例
GET /?Action=DescribeSystemEvents&Version=2020-04-01&ResourceIds.1=i-3tigy72q3u3vj0****** HTTP/1.1 Host: open.volcengineapi.com Region: cn-beijing ServiceName: ecs
返回示例
若返回结果中包含状态为 Scheduled
的 SpotInstanceInterruption.Delete
事件,表示该抢占式实例即将中断。
"Result": { "SystemEvents": [ { "Id": "t-3ti9101aju3vj0******", "CreatedAt": "2022-06-15T16:34:34+08:00", "UpdatedAt": "2022-06-15T16:34:49+08:00", "ResourceId": "i-3tigy72q3u3vj0******", "Type": "SpotInstanceInterruption.Delete", "Status": "Scheduled", "OperatedEndAt":"2021-07-10T18:11:46+08:00" } ], "NextToken": "bHpwdXJja2RxemU1eG5sb3NzdGcW1-RCEq******" }
接收到实例中断消息后,调用CreateImage接口为当前实例创建自定义镜像。
请求示例
GET /?Action=CreateImage&Version=2020-04-01&InstanceId=i-3tigy72q3u3vj0******&ImageName=image-1 HTTP/1.1 Host: open.volcengineapi.com Region: cn-beijing ServiceName: ecs
返回示例
返回 ImageId
表示自定义镜像创建成功。
{ "Result": { "ImageId": "image-3teco18f1w5a71******" } }
创建自定义镜像后,您可以调用DescribeImages接口查看镜像的状态。镜像状态变为可用(available),则执行下一步操作。
GET /?Action=DescribeImages&Version=2020-04-01&ImageIds.1=image-3teco18f1w5a71****** HTTP/1.1 Host: open.volcengineapi.com Region: cn-beijing Service: ecs
调用RunInstances接口,使用步骤三得到的自定义镜像重新创建一台抢占式实例,具体参数请参考步骤一,其中:
ImageId
需替换为新的镜像ID。ZoneId
建议与源实例保持一致。