在运行我的 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
在应用程序的根目录创建一个文件夹。