我们是一家运营网站的公司,每月有大约 80 万名独立访客,增长率为 35-40%。我们刚刚从一台服务器换成专用的 mysql 数据库和一台 nginx+passenger 前端服务器。在运行了一段时间后,我们遇到了下一个瓶颈,并正在考虑通过添加负载平衡的前端服务器解决方案进行水平扩展(我们测量到前端是瓶颈)。这些文件显然位于我们现在拥有的单个前端服务器上。
保持网站文件在 2 个前端服务器之间同步的最佳选择是什么?我在 Google 上搜索了好一会儿,有人推荐“rsync”。我遇到的唯一问题是,当 cron 作业一段时间没有运行时,会出现间隙。我们的内容经常更新,我们会在首页上推广。另一个解决方案似乎是 NFS,并将文件也安装到第二个前端服务器。这个解决方案有什么问题吗?欢迎提出任何建议。
答案1
我们运行带有复制文件系统 AFS 的共享 Web 主机,并且它对我们来说运行得相当好(对于“相当好”的某些定义)。需要注意的事项:
运行网络文件系统服务器是一项不简单的系统管理工作,尤其如果你想做好这件事(例如,复制你的文件服务器以实现高可用性。)
您失去了执行某些文件系统操作的能力(例如,细粒度锁定和 inotify 监视)。如果您有一个非常普通的网站,这不是问题,但需要注意(我们确实因为缺少 inotify 而受到影响,无法重新加载 FastCGI 应用程序)。
如果您使用基于文件的会话处理,则需要确保将会话粘在一台服务器上,或者确保这些会话得到复制。这更像是“现在我有多个前端服务器”,而不是网络文件系统问题。
仔细调整缓存参数。它们可以成就或毁掉你的应用程序。
NFS 的安全模型非常简单,因此您可能希望通过安全的后端网络进行路由。
显然,这样做的话,复杂性会大大增加。祝你好运。