1

我有一个在 AWS 自动扩展组上运行的 PHP 应用程序,该组使用 AWS ELB 后面的粘性会话。

在对这些机器运行 CodeDeploy 以发布时,CodeDeploy 将首先删除文件,然后再用新文件替换它们。但是,在这短时间内,所有访问服务器的 Web 请求都将收到 404 或 500 服务器错误,因为文件并非全部存在。

由于粘性会话,连接耗尽和将服务器从池中拉出将不起作用,因为当我们将服务器从池中拉出时,我们会将用户从系统中注销。

我考虑过将代码部署到文件系统中的新目录并重新同步,但我认为这只能部分解决问题,因为 rsync 也不是即时的。

像这样的粘性会话服务器是否可以看到无缝部署?

4

1 回答 1

0

一个可能有帮助的选项是依赖 File Exists Behavior 并设置为 RETAIN 选项。aws deploy create-deployment 命令中的标志是 --file-exists-behavior:https ://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html

如果您通过控制台创建部署,则可以选择“内容选项”,它允许您指定部署是否应该失败、覆盖或保留文件。

但我不能 100% 确定这是否能解决问题,因为那时您在部署期间不更新文件。我很快就阅读了粘性会话...但是如果您的客户端软件丢失粘性会话,它可以简单地重试吗?我想不出办法。

就像,您的主机可能随时消失。在部署期间,您可能(不知道是否)从负载均衡器中删除主机。您的应用程序停止脚本可能正在关闭您主机的服务。我敢打赌,粘性会话应该有一个解决方案,您可以在该解决方案中从主机中耗尽以前的会话并阻止新客户端到达该主机。但我对你在这里做什么了解不够。

我希望这些信息对你有所帮助。-阿萨夫

于 2017-07-10T18:47:53.823 回答