我在AWS自动缩放组上运行了一个PHP应用程序,该组使用AWS ELB后面的粘性会话。
当针对这些计算机运行CodeDeploy以释放时,CodeDeploy将在用新文件替换之前删除这些文件。但是,在这么短的时间内,所有访问服务器的Web请求都会收到404或500个服务器错误,因为这些文件并非全部存在。
由于粘性会话,连接耗尽和拉出服务器池将无法正常工作,因为当我们将服务器从池中拉出时,我们会将用户从系统中记录下来。
我已经考虑将代码部署到文件系统中的新目录并进行rsyncing,但我认为这只会部分解决问题,因为rsync也不是即时的。
这样的粘性会话服务器是否有选项可以看到无缝部署?
答案 0 :(得分:0)
可能有用的一个选项是依赖文件存在行为并设置为RETAIN选项。 aws deploy create-deployment命令中的标志是--file-exists-behavior:https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html
如果您通过控制台创建部署,则可以选择“内容选项”,以便指定部署是否应该失败,覆盖或保留文件。
但是我不是百分之百确定是否解决了问题,因为那时你不会在部署期间更新文件。我快速阅读了粘性会话...但是如果它丢失了粘性会话,您的客户端软件是否可以重试?我想不出办法解决它。
就像,您的主人可能随时消失。在部署期间,您可能(不知道是否)从负载均衡器中删除主机。您的应用程序停止脚本可能会关闭主机的服务。我敢打赌,粘性会话应该有一个解决方案,您可以从主机中排除以前的会话,并阻止新客户端到达该主机。但是我对你在这里所做的事情了解不够。
我希望这些信息对您有所帮助。 -Asaf