我有一个 Web 服务器,我想将 Web 应用程序的一些静态文件移到远程服务器,但仍可访问它们。
有没有办法让 (服务器 A) 挂载 (服务器 B) 上的文件夹,就像它是本地驱动器一样?或者只是挂载分区?基本上,这样我的 Web 应用就可以通过 /mount/remotefolder 之类的方式写入远程驱动器?
两台服务器都运行 CentOS,但位于两个地理位置不同的位置。
答案1
sshfs
就是你要找的。 http://fuse.sourceforge.net/sshfs.html -- 您甚至可以使用fstab
条目在启动时自动挂载它,或者将其设置为不挂载,但之后您可以直接mount /pre/defined/mount/point
挂载它。 sshfs
可能会很慢,但绝对安全。它需要fuse
处于活动状态,要么作为内核模块/编译到内核中,要么作为用户空间程序。
我的中有以下几行.bashrc
:
alias xxr-sfs="sshfs xxr:/var/www/localhost/htdocs ~/xxr"
并在我的文件xxr
中定义:~/.ssh/config
Host xxr
HostName xxr
user mark
(显然,为了保护我的隐私,上述内容已被重新命名)
然后,如果我想安装它,我只需输入xxr-sfs
to mount 它。
答案2
我认为,对你的问题的简短回答是 NFS。或者,对于更复杂的设置,你可以让两个服务器共享一个 DRBD 卷。
但是,我想知道 HTTP 作为文件访问协议有什么问题?服务器 B 不能拥有自己的 Web 服务器并为自己提供文件吗?拆分您的 Web 应用程序,以便处理文件的部分驻留在服务器 B 上?
更新:
我没有仔细阅读 OP。如果“地理位置不同”意味着延迟时间较长,则 drbd 和 nfs 可能都不是最佳选择,具体取决于具体用例。如果两个位置之间的延迟时间超过 50 毫秒,我会尝试使用不同的 Web 服务器,让它们都直接与最终用户通信(如果可能)。