到目前为止,我已经使用 AWS 几十年了,我开始使用竞价实例的原因有很多,包括专业原因,例如测试我开发的软件等。我主要使用使用 RDP 连接的 Windows Server 2022 实例。
我已经为自己构建了一组脚本,以便在我需要时根据快照生成新实例,并在我不需要它们时自动将它们保存回快照中。
在过去一年左右的时间里,一切进展顺利。我遇到过几次突然关闭的情况,我一直认为这是因为服务器需要更多资源来提供给愿意支付更多费用或使用按需实例的用户。
在过去两个月里,我遇到了几次断网的情况,有时是连续发生的。有时在短时间内发生多次,然后几周内完全没有发生。
我尝试将现货请求的价格提高到尽可能高,只是为了测试目的,但一段时间后它仍然会下降。如果我查看定价历史,一切都很低,我会看到一条非常稳定和平坦的线,表明价格没有波动。每次我更详细地研究它时,我都会看到:
- 详细信息EC2 中的实例: 我会看见
State transition reason / User initiated
- 详细信息EC2 中的现货请求: 我会看见
Status failed, bad-parameters
- 但在云踪我所看到的却讲述了一个不同的故事。在日志中我会看到:
// most of this is redacted but here are some relevant parts:
"invokedBy": "spot.amazonaws.com",
"eventType": "AwsApiCall",
"managementEvent": true,
"eventCategory": "Management"
所以云踪基本上是告诉我它不是由用户启动的,这告诉我问题不在我的实例上。因为一开始我以为我的 Windows Server 实例可能只是崩溃了,所以它显示“用户启动”,但事实并非如此。
这非常烦人,是的,我猜解决方案是使用按需实例,但是我在 AWS 上花了很多钱,所以想继续使用现货实例。
有人有过类似的经历吗?有人能帮忙进一步调试这个问题吗?
谢谢!
答案1
“妥善处理 Spot 实例中断的最佳方法是设计具有容错能力的应用程序。要实现这一点,您可以利用 Spot 实例中断通知。我们建议您每 5 秒检查一次这些中断通知。
“中断通知以 EventBridge 事件和 Spot 实例上的实例元数据中的项目的形式提供。将尽最大努力发出中断通知。“
答案2
AWS 可以随时关闭竞价型实例,且无需提前通知。如果有人想要一个按需实例,而又没有可用容量,则无论出价多少,都会关闭竞价型实例。
如果您无法忍受实例关闭,请使用按需实例。