【问题标题】:Calling an asynchronous command on a aws spot isntance (PHP)在 aws spot 实例 (PHP) 上调用异步命令
【发布时间】:2012-05-27 17:28:53
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    我想我会跟进这个问题。

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-30
      • 2016-06-30
      • 2018-05-02
      • 2017-11-15
      • 2020-11-24
      • 1970-01-01
      • 2020-05-12
      相关资源
      最近更新 更多