集群 -上传下载文件共享 - NFS
解决方案:
1. 部署的 tomcat 都在同一个机器上,共享文件位置
2. windows 下,局域网内文件上传的文件夹设置共享文件夹
3. linux 下 NFS 文件夹共享
4. 第三方工具
NFS 介绍
NFS 就是 Network FileSystem 的缩写。最大的功能就是可以透过网络,让不同的机器,不同的操作系统、可以彼此分享个别的档案。所以,可以简单的将其看做是一个文件服务器。这个 NFS 服务器可以让你的 PC 来将网络远程的 NFS 服务器分享的目录,挂载到本地的机器中,在本地的机器看起来,那个远程的主机的目录就好像是自己的一个磁盘分区槽一样。使用方便。
因为 NFS 支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此,NFS 的功能所对应的端口才没有固定住,而是随机取用一些未被使用的小于 1024 的埠口来作传输用。但如此一来又造成客户端想要连上服务器是的困扰,因为他不知道端口。。
这时远程过程调用(RPC)服务来了。RPC 最主要的功能就在指定每个 NFS 功能所对应的 port number,并回报给客户端,让客户端可以连接到正确的端口。那 RPC 是如何知道每个 NFS 的端口呢?这是因为当服务器在启动 NFS 时会随机取用数个端口,并主动向 RPC 注册,因此,RPC 知道每个端口对应的 NFS 功能,然后 RPC 又是固定使用 port 111 来监听客户端的需求,并回报客户端正确的端口。
所以,NFS 启动之前,RPC 就要先启动了,否则 NFS 无法向 RPC 注册。另外, RPC 重新启动时,原本注册的数据会不见,因此,RPC 重启后,它管理的所有服务都要重新启动来向 RPC 注册。
当客户端有 NFS 档案存取需求时,他会如何向服务端要求数据呢?
- 客户端会向服务器端的 RPC (port 111)发出 NFS 档案存取功能的询问要求
- 服务器端找到对应的已注册的 NFS daemon 端口后,回报给客户端
- 客户端了解正确的端口后,就可以直接与 NFS daemon 来连接
由于NFS 必须要有 RPC 存在时才能成功的提供服务,因此,NFS 被称为 RPC server 的一种。
NFS安装使用
1. 看当前有没有安装过
rpm -qa|grep nfs
rpm -qa|grep rpcbind
yum -y install nfs-utils rpcbind
touch /etc/exports
里面放这样一句: /opt/tomcat/static 192.168.101.*(rw,sync,no_root_squash,no_subtree_check)
这里参数:
参数值
|
内容说明
|
rw ro
|
该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关
|
sync async sync
|
代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘
|
no_root_squash root_squash
|
客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份? |
all_squash
|
不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody)
|
anonuid anongid anon
|
anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody), |
exportfs -r 配置生效
/bin/systemctl start rpcbind.service
/bin/systemctl start nfs.service
showmount -e localhost
客户端
yum -y install nfs-utils
mount -t nfs 192.168.101.32:/opt/static /opt/static -o proto=tcp -o nolock