【问题标题】:Is this the correct situation for AWS auto scaling group?这是 AWS Auto Scaling 组的正确情况吗?
【发布时间】:2020-12-29 10:23:22
【问题描述】:

我一直在关注有关 AWS Auto Scaling 组的教程,但没有一篇提到可能需要使用它的所有原因。所以我想知道我的需求是否适合它,或者我是否需要其他东西。

我想使用 testNg 在不同的 ec2 实例上运行 X 个并行测试。是否可以使用 Auto Scaling Group 在 X 次测试运行之前动态创建这些实例,然后在完成后删除它们?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 autoscaling


    【解决方案1】:

    对于您的情况,由于您知道测试所需的 EC2 实例数量,因此更适合:

    • 启动 EC2 实例
    • 开始测试
    • 在 EC2 实例完成测试后终止它们

    此外,由于测试不是关键业务活动,您可以通过将 EC2 实例作为 Spot 实例启动来节省资金,这可以节省高达 90% 的成本(通常是 50-70%)。它们的启动时间稍长,如果需要容量,AWS 可能会“收回”这些实例。您可以通过在多个可用区和/或跨不同实例类型启动实例来减少“收回”实例的机会。

    【讨论】:

    • 为了做到这一点,我还需要执行以下操作。我希望能够在我的本地计算机上运行一个脚本,该脚本可以创建所有 ec2 实例,并将我需要的这个文件传输到每个实例上的同一目录。这一切都可以在 bash 或 AWS cli 中完成吗?
    • 您当然可以从 AWS CLI 启动实例。然后我建议您通过用户数据提供一个启动脚本,该脚本下载所需的文件(例如从 S3)并触发测试过程。见:Running commands on your Linux instance at launch - Amazon Elastic Compute Cloud
    • 好的,我会检查的。谢谢!
    【解决方案2】:

    我不太了解 testng 或它可能具有的任何潜在 AWS 集成,但我不确定 Auto Scaling 是这里的最佳选择。虽然它允许您启动一组实例(将最小/最大容量都设置为 N),但您必须处理运行状况检查和其他 ASG 特定功能。

    我可能会使用EC2 Fleet。除了将一组 EC2 实例作为一个单元进行管理外,它还提供一些有用的成本选项,让您可以在按需和现货以及您愿意支付的最高价格之间进行选择。

    另一个可能的选择是AWS Batch

    如果这些都不符合要求,那么您可以使用 RunInstances API 简单地启动 N 个实例。使用 userdata 脚本启动每个脚本,允许其获取测试脚本、运行脚本,然后关闭/终止。

    【讨论】:

    • 虽然该实例的测试完成后,似乎不可能终止 ec2 实例。不确定自动缩放是否也可以做到这一点。我只是不希望在测试完成时运行实例
    • 每个 Fleet 启动的实例可能会在其脚本运行后自行终止,但您必须对此进行测试(无论哪种方式,我都没有看到明确的文档)。另外,已添加到我的答案中。
    猜你喜欢
    • 2018-03-25
    • 2020-10-05
    • 2017-07-24
    • 1970-01-01
    • 2018-07-27
    • 2020-07-22
    • 2014-02-26
    • 2014-04-20
    • 2015-10-05
    相关资源
    最近更新 更多