1

我一直在研究 AWS 现场实例的一些工作,但不是拥有一个从 SQS 工作并通过我的主服务器上的 cronjob(或排序)维护的静态集群,以确保服务器和正在完成的工作的数量等我希望让服务器根据我必须做的工作创建和拆除。

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

在我的服务器生成器中,有没有一种好方法可以在我验证新的 Spot 实例实际上正在运行且不会锁定我的生成器后调用异步命令?

也许我从错误的角度来看这个?我对aws集群有点菜鸟,所以我可能在这里吠错了树......

4

1 回答 1

0

我想我会跟进这个问题。

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

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

为了让它工作,您必须根据 Amazon Cloudwatch 指标中 MessagesVisible 的大小和深度进行扩展,告诉您队列中有多少消息是可见的并且已经存在了一段时间。最好在此指标上有一个延迟期,以便:

  • 每 60 秒检查一次指标
  • 每 10 分钟,平均超过 10 条可见消息会扩展服务器。

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

于 2012-06-13T07:53:09.363 回答