我们有一个应用程序,其主要功能位于文件中。我们也有带有主分支和生产分支的 GIT 仓库。
该应用程序位于 6 台生产服务器上,前面有负载平衡服务器。主要问题是同步文件。
此时我们与文件有网络共享,所有服务器都在查看它。该解决方案存在网络负载问题(有超过 1000 个连接从共享中读取文件),因此速度非常慢。
我有几个解决方案:
- 使用一些同步软件
- 使用 git hooks 从本地 repos 获取更新并将它们拉到服务器上
- 找到一些网络负载的解决方案
什么是最佳的?还有其他解决方案吗?
Capistrano专为此类代码部署而设计。它将站点的本地副本从版本控制更新到新目录(使用 Git,首先更新本地 repo 副本,因此速度非常快),当所有服务器都准备好使用新代码库时,翻转符号链接并可选择重新启动网络服务,以便为新版本的网站提供服务。如果任何机器在该任务中失败,它将回滚所有机器。
虽然它最初是在 ruby on rails 网站上使用的,但它也被用于其他语言。我经常使用它,并且非常成功地用于跨多个服务器的基于 PHP 的站点。