最近更新时间:2023.08.01 10:44:23
首次发布时间:2022.11.03 08:26:56
在收到抢占式实例的中断通知后,您可以参考本文操作恢复实例内的数据。
抢占式实例可能会因为市场供需变化或价格因素而被强制回收,在被完全回收前,实例会进入锁定状态,并触发中断事件。当接收到抢占式实例的中断通知后,您可以通过以下操作为实例创建自定义镜像,并基于已创建镜像新建抢占式实例,以实现实例内的数据恢复。
操作流程如下所示:
说明
本文提供的示例代码仅供参考,并不能保证您的实例一定会在5分钟内完成镜像的创建与数据的恢复。建议您定期备份数据,以获得更好的使用体验。
抢占式实例会提前5分钟发送实例中断消息,但数据恢复的具体耗时取决于您实例的镜像类型与系统盘文件大小等因素。例如,系统盘文件越大,恢复时间越久。请您使用示例代码前务必自行进行评估与验证。
本文调用 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 查看镜像的状态。
GET /?Action=DescribeImages&Version=2020-04-01&ImageIds.1=image-3teco18f1w5a71****** HTTP/1.1 Host: open.volcengineapi.com Region: cn-beijing Service: ecs
镜像状态变为可用(available),则执行下一步操作。
您可以调用 RunInstances 接口,使用新的自定义镜像重新创建一台抢占式实例,具体参数请参考步骤一:创建抢占式实例,其中:
ImageId
需替换为新的镜像ID。
新实例所属可用区 ZoneId
建议与源实例保持一致。