2

我有两台服务器。基本上,服务器#1全天运行一个脚本,完成后我需要向服务器#2发送通知以使其运行其他一些脚本。

我目前依靠 Amazon AWS 工具并使用 Python,所以我想知道是否有人可以推荐一种简单、安全且易于编程的方式:

  • 在服务器 #1 完成运行其脚本时设置一个标志
  • 从服务器 #2 轮询此标志
  • 当标志处于活动状态时,在服务器 #2 上运行脚本
  • 当脚本在服务器 #2 上完成运行时,从服务器 #1 中删除标志

我应该使用 Amazon SNS 还是 SQS?或者,这两个都是一个糟糕的选择吗?如果是,你能推荐更好的吗?我倾向于使用 AWS 工具,因为我已经安装了 boto 并且我喜欢它的易用性。

4

2 回答 2

1

假设Server #1正在通过 cron 运行脚本,那么你应该没有理由不能只使用 ssh 来远程更改Server #2。我相信如果您使用弹性 IP 地址,它可能不会算作带宽使用。

除此之外,我会使用 SNS。该模型将改为:

  • 服务器 #1 通知服务器 #2(脚本启动)
  • 服务器 #1 开始运行脚本
  • (可选)服务器 #1 通知服务器 #2 进度
  • 服务器 #1 通知服务器 #2(脚本完成),启动服务器 #2 的脚本
  • 服务器 #2 在完成时通知服务器 #1

在这种情况下,您需要设置某种简单的网络服务器来接受通知。简单的 CGI 脚本会减少它,但不是最安全的选择。

如果两个多个脚本试图同时运行,我只会将 SQS 带入图片中。如果您将其分块为“所有服务器 #1,然后是服务器 #2”,这是您并不真正需要的级别。

于 2013-01-24T11:27:23.877 回答
1

为此,您可能需要考虑查看 AWS Simple Workflow Service。使用 SWF,您可以轻松地在许多不同的机器上协调工作流类型的活动。

http://aws.amazon.com/swf/

于 2013-01-24T17:08:36.613 回答