将 OpsWorks 应用置于维护模式

将 OpsWorks 应用置于维护模式

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

这是一个 Magento 网站,我创建了两个配方。一个用于创建maintenance.flag,一个用于再次删除。这告诉 Magento 提供一个带有 HTTP 503 响应代码的暂存页面。

有两个问题:

  • 因为我在开始和结束时运行食谱风俗食谱,维护模式仅持续几秒钟 - 时间不够长。
  • 从应用服务器提供 503 服务可能不是正确做法。最好在负载均衡器上切换到维护模式,对吧?否则,负载均衡器(和 OpsWorks?)将把应用实例视为离线。

有没有办法在代码从 git 提取之前或之后立即运行维护模式配方?或者使用配方的某种方式undeploy?或者更好的方法?

答案1

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

我建议在此处手动运行你的配方,将网站置于维护模式,然后然后执行部署,其最后一步应该是关闭维护模式。

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

一般的想法是,您将在构建完成时编写部署脚本,运行将其置于维护模式的配方,然后运行实际部署。

希望这可以帮助!

编辑

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

选择您想要绑定的各个挂钩,并deploy在应用程序的根目录创建一个文件夹。

相关内容