我有一个使用亚马逊弹性beantalk部署我的应用程序的基础设施。 我需要扩展我的应用程序,添加一些EB不支持的竞价型实例。
因此,我从具有竞价型实例的启动配置中创建了第二个自动缩放。 自动缩放使用beantalk创建的相同负载均衡器。
要使用我的应用程序的最新版本启动实例,我将用户数据从原始启动配置(由beantalk创建)复制到具有竞价型实例(由我创建)的启动配置。
这很好,但是:
当beantalk用新版本的应用程序更新他管理的实例时,如何更新第二次自动缩放后出现的竞价型实例?
还有另一种既方便又优雅的方式来使用竞价型实例并享受beantalk的好处吗?
答案 0 :(得分:9)
我自己问了这个问题,并在弹性beantalk中找到了一个内置解决方案。 here的描述如下:
- 在.ebextensions文件夹下添加一个文件,对于我们的设置,我们将该文件命名为spot_instance.config(.config扩展名为 重要),将下面可用的内容粘贴到文件中 https://gist.github.com/rahulmamgain/93f2ad23c9934a5da5bc878f49c91d64
- 可以通过弹性beantalk环境配置设置EC2_SPOT_PRICE的值。禁用现货的使用 实例,只需从环境设置中删除变量即可。
- 如果环境已经存在并且上述设置已更新,则较旧的自动伸缩组将被销毁,而新的 已创建。
- 然后,环境提交对竞价型实例的请求,该请求可以在EC2仪表板上的“竞价型实例”选项卡下看到。
- 请求完成后,实例将被添加到新集群和自动扩展组中。
- 您可以使用Spot Advisor工具确定正在使用的实例的最佳价格。
- 价格为原始价格的30%似乎不错。
我个人只会使用给定实例类型的按需价格,因为该价格是您愿意支付的价格的上限。这样可以降低价格过高的可能性,从而减少实例的终止。
对于生产系统而言,这可能不是最佳方法,因为无法在多个按需实例与其他数量的现货实例之间进行分割,并且可能很少有现货实例可供使用。有人正在以高出价购买整个市场。
对于生产用例,我将研究https://github.com/cristim/autospotting,它会主动管理您的所有自动伸缩组,并尝试在最低价格和按需配置的数量或百分比的按需实例之间取得平衡。 >
答案 1 :(得分:1)
在Spotinst,我们正在为客户解决这一难题。
当Elastic Beanstalk创建捆绑在一起的一整套服务(负载平衡器,ASG,Route 53接入点等)时,在其中管理Spots并不是一项简单的任务。
经过大量研究,我们认为删除ASG总是容易出错,因为保持完整的配置变得很复杂。取而代之的是,我们只复制ASG,让我们的Elastigroup和ASG与所有扩展策略并存,这些扩展策略仅影响Elastigroup,ASG配置更新也在那里提供。
借助在Elastigroup内部运行的实例,您可以获得具有完整SLA的托管Spot实例。
在Elastigroup中运行竞价型实例的一些好处包括:
1)无论何时出现新实例,我们的算法都会在价格和可用性方面为最佳现货市场做出实时选择。
2)发生中断时,我们会提前15分钟进行预测,并采取所有必要步骤以确保(并确保)您团队的能力。
3)在没有市场提供现货的极端情况下,我们只是退回按需实例。
答案 2 :(得分:1)
截至2019年11月25日,AWS natively supports using Spot Instances with Beanstalk。
可以在控制台中启用Spot实例,方法是转到所需的Elastic Beanstalk环境,然后选择配置> 容量,然后更改 Fleet组成 >到“ 已启用Spot实例”。
您还可以在其中设置选项,例如按需与竞价百分比以及要使用的实例类型。
答案 3 :(得分:0)
由于AWS明确指出Beanstalk不支持现成的现货实例,因此您需要进行一些修改。我的客户想要混合环境(按需+现场)和完整现场。我为客户创建的内容如下(我只能访问GUI):
对于混合环境:
完整的环境信息: