我想到了这种方法来更新服务器文件而不停机:
这有什么缺点吗?还有更好的方法吗?
在重启的确切时刻访问文件时是否会出现任何竞争条件错误?
答案 0 :(得分:4)
始终的工作方式没有一种方法 - 即使您准备和部署新服务器,然后将负载均衡器更改为指向新计算机。有人可能刚刚从原始服务器请求了一个页面,然后从新机器上的新站点副本中获取页面的一部分。然而,这在实践中不太可能引起大问题。
在需要复杂需求的大型网站上,事情将变得更加困难 - 并且需要付出代价。大多数网站都有更简单的要求。甚至可以计划数据库迁移具有最小的中断 - 但也会很复杂,并且必须解决计划内的停机时间。
由于在同一台机器(或少量机器)上的站点副本之间切换很容易(有效地移动Apache或Nginx DocumentRoot
)一种易于使用的技术(并且不需要多个因此,机器和负载均衡器是如此:
composer install
或资产提取/准备在实践中,这是Capistrano(和其他类似工具)的作用。基本目录的布局如下:
base-directory
releases
20151010-0925/
vendor/ (composer-installed files)
web/index.php
20151120-1007/
vendor/ (composer-installed files)
web/index.php
current (symlink to ../releases/20151010-0925/)
shared/ (files shared between releases)
部署新版本的网站时 - 创建一个新的完整版本,然后在完成后,更改“当前”版本。符号链接。
此实例中的Apache文档根目录将指向.../base/current/web/
通过符号链接到网站的基础。
如果在任何时候部署都没有准备就绪,您可以简单地中止它,并可选择删除您尝试部署的已发布版本,而不是更改符号链接。
我已经将这项技术用于从简单的单页HTML / CSS网站到运行数千个并发用户的三机群集。
答案 1 :(得分:0)