【问题标题】:Communicate between two servers - Amazon SQS / SNS?在两台服务器之间进行通信 - Amazon SQS / SNS?
【发布时间】:2013-01-08 02:57:42
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: python linux amazon-web-services debian


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        最近更新 更多