如何以原子方式部署PHP服务器的更新,即保持一致性?

问题描述 投票:0回答:1

假设您运行PHP +数据库服务器,并且您希望部署修改数据库模式和PHP源的更新。你经常这样做。

问题是在更新期间,您的服务将暂时处于不一致状态,因此客户端将收到随机错误。首先是更新架构时数据库表之间的不一致,然后是数据库与源之间的不一致,最后在更新源本身时:文件将在非常短暂的时刻变为空或部分,然后在模块本身之间不一致。您的客户可能在更新期间遇到错误。

问题是,防止这种情况的最佳方法是什么?

我正在考虑的解决方案:将服务器的根.htaccess替换为在更新期间返回HTTP 503 Service unavailable的解决方案,然后将原始文件放回原位(比如脚本将完成所有这些操作)。客户端可以在几秒钟内重试,例如503表示它们意味着在10秒内重试,不超过3次。

一个潜在的问题是在交换htaccess之前已经有一些请求正在进行中,因此需要一种等待直到处理完所有请求的方式。最有问题的是长文件传输。假设将文件提供给客户端需要几分钟,这意味着服务器将处于503状态几分钟。

此外,还有专门针对PHP的开箱即用解决方案吗?

php deployment webserver
1个回答
1
投票

你有两台服务器。在故障转移上运行更新,然后进行故障转移,在主机上运行更新并进行故障恢复。您甚至可以在更新服务器时启动服务器的云实例以获取流量。我想这取决于你的停机时间。如果做一段时间不会花费太多成本;把你的dns指向谷歌或其他东西!

如果这是收入;无论如何我建议设置两台服务器,所以当出现问题时你可以选择一台服务器!

© www.soinside.com 2019 - 2024. All rights reserved.