在公司门户项目正式部署的时候,因BPM站点采用NLB集群部署方式,BPM站点有多个WEB前端服务器。流程都有上传附件功能,起初因没考虑服务器正式环境NLB的部署方式,只是简单的将所有附件保存在BPM WEB站点的Upload文件夹里。部署到正式环境后,发现上传附件是随机上传到某一台WEB前端服务器上。
起初为了解决多台WEB前端服务上的文件同步,只是简单的考虑文件同步工具。同步工具选择了GoogleSYN双向文件同步工具,这个工具非常好用,配置也很简单,解决了我们部署正式环境的问题。
文件同步工具的缺陷:
1、 不能实时同步,至少有秒级的延时。
2、 多个WEB前端的磁盘空间浪费严重。
3、 存在同步失败的风险,不能很好监控文件
为了彻底解决这个问题,后来考虑搭建文件服务器。这样我们可以把所有附件类的文件保存在文件服务器上,然后多台WEB前端服务器来取相应的文件即可。可是要考虑到现有项目代码架构,最好在不改代码的情况下顺利过渡。后来在网上看到IIS 7.5有添加虚拟目录的功能,虚拟目录可以映射到文件服务器上的一个共享文件夹。这样可以实现我们项目的顺利过渡,无需更改代码(唯一提到就是我修改过异步转换文件的时候要传入HttpContext.Current,异步执行上下文环境不同)。
虚拟目录具体解决步骤:
1、 在IIS站点右键添加虚拟目录。
2、 输入别名(最好与迁移前的文件夹名字一样,这样可避免修改代码)Upload。
3、 输入物理路径为文件服务器共享目录地址。
4、 点击“连接为”输入具有共享文件的完全控制权限的用户名帐号和密码。最好就是共享文件夹服务器与BPM WEB站点服务器有共同的帐号,而且这个帐号有控制共享文件夹的权限。
5、 点击“测试设置”,验证是否OK。
经过测试,完全可以解决我们的问题。
目前还没验证过搭建FTP服务器的解决方案。