我有一个基础设施,使用亚马逊弹性豆茎来部署我的应用程序。我需要扩展我的应用程序,添加一些EB不支持的点实例。
因此,我使用spot实例从启动配置创建了第二个自动缩放。自动缩放使用由beanstrak创建的相同负载均衡器。
为了使用我的应用程序的最后一个版本升级实例,我将用户数据从原始启动配置(使用beanstik创建)复制到使用spot实例(由我创建)的启动配置。
这项工作很好,但是:
>
如何更新从第二次自动缩放中出现的点实例,当豆茎使用新版本的应用程序更新由他管理的实例时?
有没有另一种方法可以如此简单和优雅地使用spot实例并享受豆茎的好处?
更新
自2019年以来,弹性豆茎增加了对现场实例的支持…参见:https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2019-11-25-spot.html
我自己也问过这个问题,并在弹性豆茎中找到了一种内置溶液。这里描述如下:
我个人会对给定的实例类型使用按需价格,因为这个价格是您愿意支付的上限。这减少了定价过高的可能性,从而减少了实例的终止。
对于生产系统来说,这可能不是最好的方法,因为不可能在多个按需实例和额外数量的现货实例之间进行拆分,并且由于其他人以高出价购买整个市场,因此可能没有现货实例可用。
对于生产用例,我会研究https://github.com/AutoSpotting/AutoSpotting,它主动管理所有自动扩展组,并试图满足最低价格和可配置的按需实例数量或百分比之间的平衡。
自2019年11月25日起,AWS原生支持将Spot实例与Beanstek一起使用。
可以在控制台中启用Spot实例,方法是转到所需的Elastic Beanstrak环境,然后选择配置
您还可以在那里设置选项,例如按需与现货百分比和要使用的实例类型。
更多信息可以在豆茎自动缩放组支持页面中找到
在Spotinst,我们正在为我们的客户处理这种困境。
由于弹性豆茎创建了一整套服务(负载均衡器、ASG、Route 53接入点等),因此管理其中的点并不是一项简单的任务。
经过大量研究,我们发现删除ASG总是容易出错,因为保持配置不变变得复杂。相反,我们只需复制ASG,让我们的Elastigroup和ASG与所有仅影响Elastigroup的缩放策略并存,ASG配置更新也在那里提供。
通过在Elastigroup中运行实例,您可以实现具有完整SLA的托管Spot实例。
在Elastigroup中运行Spot实例的一些好处包括:
1)每当新实例启动时,我们的算法就价格和可用性为最佳现货市场做出实时选择。
2)当中断发生时,我们会提前15分钟预测,并采取一切必要措施确保(并确保)您的团队的容量。
3)在极端情况下,没有一个市场有现货可用性,我们只是回到按需实例。