【问题标题】:Can you post to multiple EC2 instances behind an ELB to trigger events?您可以发布到 ELB 后面的多个 EC2 实例以触发事件吗?
【发布时间】:2014-05-22 17:51:46
【问题描述】:

我在我的 node.js 应用程序中使用持续部署风格:

  • 更新 GitHub 上特定分支中的应用程序代码
  • 使用 GitHub Webhook 发布到我的服务器上定义的 URL

服务器然后评估“推送”事件是否在其代码库映射到的分支上,如果是,则更新其代码库(使用 naught,在关闭旧版本之前启动新版本)。

使用单个服务器这很容易,但如果我在 ELB 后面有两台服务器,是否有办法向它们发布并触发它们以确保它们检查其应用程序代码是否与最新推送有关?我希望只有一个实例在正常情况下收到帖子,这意味着其他实例将有旧的应用程序代码。

【问题讨论】:

  • 这就是 Elastic Beanstalk 的用途。在重新发明轮子之前先看看这个?
  • @RakeshBollampally 感谢您的建议,我确实尝试过 Elastic Beanstalk,但是 EB 并不完全支持持续部署。相反,它要求服务器在推送应用程序的新版本时暂时脱机。据我所知,它可以根据需要被破解,但需要大量额外的脚本。

标签: node.js amazon-web-services github amazon-ec2 load-balancing


【解决方案1】:

可能有很多方法可以做到这一点,但一种选择是寻求 AWS SNS 的帮助。让您的每台机器使用 HTTP / Post 操作作为 webhook 订阅 SNS 主题。

您需要让 GitHub 直接将消息发布到 SNS 主题(如果可能),或者使用您的一台机器将初始消息发布到 SNS 以响应 Github webhook。

一旦消息到达 SNS,它将被散播给所有订阅者(在您的情况下为两个),但将来可以轻松添加更多机器。

只需几台机器,这只需几美分。

【讨论】:

  • 我对这个想法很感兴趣 - 在查看 SNS 之后,我似乎会设置一个“工作”服务器来处理来自 GitHub 的传入 webhook,验证 x-hub-secret 等,然后发送一条消息到 SNS 进而通知任何订阅的端点? Github 支持通知任何 HTTP/HTTPS 端点,但我没有看到直接成为 SNS 的方法。
  • 是的,这正是我的想法 - SNS 非常适合这种类型的分发。
猜你喜欢
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-09
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多