将OpsWorks应用程序置于维护模式

在运行我的OpsWorks部署食谱期间,有一段时间应用程序需要公众无法访问。 有没有推荐的方法来实现这一点?

这是一个Magento网站,我创build了两个食谱。 一个创buildmaintenance.flag ,一个删除它。 这告诉Magento用HTTP 503响应代码服务一个持有页面。

这两个问题:

  • 由于我在自定义食谱的开始和结束处运行食谱,因此维护模式只能在几秒钟内完成 – 不够长。
  • 从应用程序服务器提供503可能是错误的方法。 在负载平衡器上切换到维护模式会更好吗? 否则,负载均衡器(和OpsWorks?)会将应用程序实例视为离线。

有没有办法来运行我的维护模式配方之前,代码是从git,或立即之后? 或者某种方式来使用undeploy配方? 或者更好的东西?

Opsworks可以通过部署手动执行配方: http ://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-manual.html

我build议在这里手动运行你的配方,使网站进入维护模式, 然后执行你的部署,这应该把维护模式作为最后一步。

虽然这是手动操作,但如果您有持续的集成/部署环境,则值得注意的是您可以通过AWS CLI执行相同的操作: http : //docs.aws.amazon.com/cli/latest/reference/ opsworks /创build-deployment.html

一般的想法是,您将在构build完成时脚本部署,运行您的配方,将其置入维护模式,然后运行真正的部署。

希望这可以帮助!

编辑

您还可以使用厨师部署挂钩来执行维护模式设置和拆卸。 请参阅: http : //docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-extend-hooks.html

select你想要绑定的钩子,并在应用程序的根目录下创build一个deploy文件夹。