gpt4 book ai didi

python - EC2 自动缩放 Python 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 01:06:23 26 4
gpt4 key购买 nike

我想在 EC2 上运行 python 脚本。 python 脚本需要加载一个.pickle 文件。该脚本从 Amazon 队列 (SQS) 中获取文档并对其进行处理。

我的问题:自动缩放到底是如何工作的?那些需要分别执行文件版本的单独实例(或虚拟服务器)?如果是这样,我该如何在那个实例上执行文件?创建一个在启动时自动执行脚本的 AMI 镜像?我找到了一种方法,只需使用图像启动实例并发送脚本以使用 user_data 参数运行,但这如何在自动缩放上工作?就像我说的,那些也是独立的实例吗?还是这只是一个在纵向扩展时需要更多 CPU 能力和内存的实例?

我正在创建一个 Python 脚本,它使用我在 cronjob 中运行的 boto 的自动缩放界面 ( http://boto.readthedocs.org/en/latest/autoscale_tut.html )。它需要每天多次检查 SQS,并根据队列消息的数量增加或减少实例。这是正确的方法吗?

最佳答案

Erik,这听起来像是在正确的轨道上。我认为结合 EC2 中内置自动缩放过程的一些想法可能会对您有所帮助:

  • 是的,我会构建一个主 AMI,其中包含您需要的所有内容。自动缩放通常通过“缩小/缩小”(添加更多/更少实例)而不是“向上/向下”缩放(放大/缩小实例类型)来工作。这有助于为您提供更大的弹性,并且在调整大小后不会因重新启动而停机。
  • 正如您对用户数据字段所做的那样,您可以在该 AMI 中构建一个在预热时运行特定更新或操作的引导脚本,或者简单地构建一个检索脚本,该脚本将伸出手来下载脚本(可能来自 S3)然后被执行。 [如果您将内置 IAM 角色用于 S3 存储桶的安全性,则无需在 AMI 中嵌入用于此下载的 key 。]
  • 如果您的自动缩放组中的所有内容都在负载均衡器后面工作,那么您应该在新实例运行状况良好时将其附加到 ELB(或您自己的 HAproxy 实例)。

因此,您基本上只是在模拟 AWS 自动缩放的工作流程,同时还注入(inject)了您自己的 Bootstrap :

放大:

  • 生成新实例
  • 检查健康
  • 附加到 ELB
  • 检查 HTTP 健康状况(或您设置的任何其他健康状况检查)并让流量进入。

按比例缩小:

  • 从 ELB 中移除
  • 终止实例

我首选的启动引导的方法是加载一个简单的脚本来下载第二个 shell 脚本,使用用户数据字段。我通常用 bash 来做,但世界上没有理由它不能是 python 脚本。但通过这种方式,引导脚本是隔离的(并且不会卡在 AMI 中),因此我可以自由更新或调整它,而无需重新执行 AMI。

内置于 AMI /root/scripts/bootstrap-me.sh 中的脚本可以简单地包含:

#!/bin/bash 

/usr/bin/aws s3 cp s3://my.bucket/my-init-script.py ./
/usr/bin/python my-init-script.py
/usr/bin/aws s3 cp s3://my.bucket/here-is-my.pickle ./

然后您的 my-init-script.py 可以包含您需要的任何基于 python 的逻辑,包括执行您刚刚获取的 .pickle 文件。

任何时候你手动或自动触发自动缩放(扩展)你应该只传递用户数据来执行你的bootstrap-me.sh shell脚本,新实例应该能够加入农场。

关于python - EC2 自动缩放 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30155752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com