web集群, 程序文件用同步的方式还是挂载的方式

web集群中, 肯定要保证每台机器程序代码文件是一样的.

那么一般两种方案,
一是通过同步软件将上传的代码同步到每台服务器, 也就是每台机器上真的有各自的代码.
第二种就是每台服务器都去挂载一台公共的文件存放服务器.

这两种方案, 第二种明显是易于管理.

第一种可能性能更优,在网站运行时,因为直接读取的本机文件. 但在管理上不便, 比如程序中记录了日志, 那么多台服务器就有各自的日志, 要管理这些日志, 还得合并, 而且不是简单的合并, 多台服务器同一天的同名日志文件 里面每条日志时间有交叉性, 得排序做个日志分析管理.

有一个方法是单独针对日志存放到共同挂载的服务器, 本来网站的文件上传业务的确也是这么做的.
但网站项目比较多, 程序员用的不同的语言框架, 日志目录配置又各不一致, 这样就得每个程序手动改日志保存目录.

我偏向于用第二种,也就是每台web共同挂载的方式, 但这在服务器有几十上百台的大型集群中会有问题吗,
上百台web服务器运行的代码文件都共同挂载到一个文件服务器?

阅读 5.4k
7 个回答

我认为应该是同步的方式,首先,部署的时候同步代码,所有的部署工具都是支持分布式的,其次,日志文件的获取,可以采用ELK+kafka进行统一收集管理。用挂载的方式不稳定,而且也存在对日志文件同时写的问题。

"挂载"本质上就是同步,程序运行的时候从中心服务器把文件"同步"到了内存中;
但是建议还是方案1,方案2有明显的单点问题,你中心服务器挂了大家就都挂了。

代码发布用版本管理系统,批量发布自己写工具或者网上有现成开源的。
日志集中管理用elk

一般程序代码最好放在web本地上面,挂载方式会影响性能!

方案二省事,方案一性能不受影响,但感觉方案二,现在php都是用apc,代码都缓存到了内存中,一般也不太受性能影响了,本人也在犹豫。

另一个方案就是用云服务商的文件存储,其实你几十台的机器了,文件存储就算不用云服务商的也应该自己另开一个子域名应用来专门做存储。比如storage.xxx.com,里面用专门的企业级文件存储方案来做

都没人回都没人回都没人回都没人回都没人回都没人回都没人回都没人回都没人回都没人回

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题