thr*_*eez 14 cron jobs amazon-ec2 amazon-web-services elastic-map-reduce
我有一个在AWS EC2上运行的网站.我需要创建一个夜间作业,生成站点地图文件并将文件上传到各种浏览器.我在AWS上寻找一个允许此功能的实用程序.我考虑过以下几点:
1)生成对Web服务器的请求,以触发它执行此任务
2)在运行Web服务器的计算机上创建一个cron作业以执行此任务
3)创建另一个EC2实例并设置一个cron作业来运行该任务
还有其他选择吗?这是ElasticMapReduce的工作吗?
Eri*_*ond 16
如果我在你的鞋子里,我可能会首先尝试在退潮时每天晚上在网络服务器上运行cron作业并监控资源使用情况,以确保它不会干扰Web服务器.
如果你发现它不能很好地运行,或者你对你的架构的优雅有很高的标准(我可以欣赏它),那么你可能需要运行一个单独的实例.
我同意,每天24小时运行一个实例似乎是浪费,你只需要每晚运行一次.
这是一个方法:主计算机上的cron作业(当前是Web服务器)可以启动一个新实例来运行任务.它可以传入在实例启动时运行的用户数据脚本,并且实例可以在完成任务时将自身关闭(其中instance-initiated-shutdown-behavior设置为"terminate").
不幸的是,这忽略了您强制分离关注点的愿望,当您开始扩展到多个Web服务器时,它变得复杂,并且它需要您的Web服务器处于活动状态才能运行作业.
几个月前,我提出了一种不同的方法来运行cron计划中的实例,完全依赖于现有的AWS功能,并且不需要运行其他服务器.
基本思路是使用亚马逊的Auto Scaling,并在每晚的特定时间将群组从"0"缩放到"1".当作业完成时,实例可以自行终止,并且Auto Scaling可以在稍后清理以确保终止.
我在本文中提供了更多详细信息和一个工作示例:
使用Auto Scaling在循环计划上运行EC2实例
http://alestic.com/2011/11/ec2-schedule-instance
亚马逊刚刚发布了[1] Elastic Beanstalk的新功能.您现在可以创建一个包含cron.yaml的工作线程环境,该环境配置使用CRON语法调用URL的调度任务:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers的.html#工人periodictasks
| 归档时间: |
|
| 查看次数: |
16215 次 |
| 最近记录: |