最近项目中出现下面这种情况:
项目部署在两台服务器上A,B,执行流程时有两个节点操作,其中一个节点生成pdf文件,另一个节点将文件回写到流程中;项目运行过程中发现有的流程没有成功将文件回写,排查发现因为负载均衡策略,生成pdf文件有可能在A,也有可能在B,同时回写到流程的请求也可能路由到A或B;这样就会出现回写到流程的请求到A,但是文件在B上,导致回写失败;
那么如何让一台服务器读取到另一台远程服务器的文件呢?由此想到了文件挂载。
下面是具体的操作过程和可能遇到的问题:
要实现将B服务器上的文件挂载到A,可以在A服务器上执行下面命令
-
mount -t nfs 【B】:【Bpdf】 【Apdf】
将【B】替换为B服务器ip地址,【Bpdf】替换为B服务器pdf文件所在目录,【Apdf】替换为A服务器上pdf文件所在目录 -
如果上面命令执行时出现mount: unknown filesystem type '-nfs’错误,需要安装ntfs-3g;
网上有通过命令来安装yum install ntfs;
还有通过下载上传压缩文件安装,这边用的就是这种;链接: https://pan.baidu.com/s/11KwKAOvFhW9jBYWHUnoH0Q 提取码: qw9h
下载文件后把压缩文件ntfs-3g_ntfsprogs-2021.8.22.tgz上传到服务器上;
- 解压缩文件:tar -zxvf ntfs-3g_ntfsprogs-2021.8.22.tgz
- 进入目录:cd ntfs-3g_ntfsprogs-2021.8.22
- 编译准备:./configure
- 编译:make
- 编译安装:make installl
- 设置共享目录
需要将服务器B上的pdf文件所在的目录设置为共享目录,执行以下命令
vim /etc/exports
【Bpdf】 【B】(rw,sync,no_root_squash)
权限选项:rw表示允许读写(ro为只读)
# sync表示同步写
# no_root_squash表示当前客户机以root身份访问时,赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待) (NFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。)
将【B】替换为B服务器ip地址,【Bpdf】替换为B服务器pdf文件所在目录
4.重启下nfs服务
/etc/init.d/rpcbind restart
/etc/init.d/nfs restart
- 重新执行步骤1的命令
这样就能实现将A服务器读取本地pdf文件所在目录时,也能读取到B服务器对应目录下的文件;
6.设置开机自动挂载
vim /etc/fstab
【B】:【Bpdf】 【Apdf】 nfs defaults 0 0
将【B】替换为B服务器ip地址,【Bpdf】替换为B服务器pdf文件所在目录,【Apdf】替换为A服务器上pdf文件所在目录
7.查看是否挂载成功
mount -l