在aws spot实例上调用异步命令(PHP)

时间:2012-05-27 17:28:54

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

我一直在研究某些工作的AWS点实例,但是没有一个静态集群可以在SQS上工作,而是通过我的主服务器上的cronjob(或排序)进行维护,以确保正在完成的服务器和作业的数量等我希望让服务器创建和拆除我必须完成的工作。

现在我了解如何启动指定某个AMI的新点实例,并且我在这个AMI上有一个PHP脚本,例如/ home / ubuntu /称为do_job.php,但它需要一些参数(就像它来自一个SQS消息)。

在我的服务器生成器中,有一个很好的方法,一旦我确认它实际上正在运行而不锁定我的spawner,就会调用异步命令到新的spot实例吗?

也许我从错误的角度看待这个问题?我在aws集群中有点像菜鸟,所以我可能会在这里咆哮错误的树...

1 个答案:

答案 0 :(得分:0)

我以为我会跟进这个问题。

没有简单的方法可以做到这一点。目前最简单的方法是在服务器上安装基本的Apache或lightttp或任何网络服务器,获取它的内部公共DNS,并通过异步cURL方法从产生的EC2实例中调用它,或者不是。

更可接受的类似方法是使用类似SQS的MQ并在作业服务器上创建可见性锁定。当您在工作服务器或正在运行的任何现场/按需实例上处理MQ以处理信息时,您可以设置脚本运行长度的可见性。您可以使用一个简单的调度程序来执行此操作,该调度程序使得信息处理转换为后台进程,同时您的调度程序进入while()循环,每次检测到后台进程仍在运行时重置Message的可见性。这允许单个服务器完整的消息。

为了使其发挥作用,您必须根据Amazon Cloudwatch指标中的MessagesVisible的大小和深度进行扩展,以告知您队列中可见的消息数量和已有一段时间。最好对此指标设置一个延迟期:

  • 每60秒检查一次指标
  • 每10分钟平均大于10条可见消息会扩大服务器的数量。

这是扩展作业集群的一种更可接受的方式。