在做微服务的时候,因为要布置多个节点,每个节点都要处理文件的上传和下载。因为多个节点在不同的服务器上,如果让每个节点单独去处理文件,那么文件就会存储到当前节点的服务器上。为了解决这个问题,第一时间想到的是再做一个文件服务节点,每个业务节点都去调用这个文件节点去处理。这样所有的文件数据都可以保存到文件服务的服务器上,可以解决多个节点文件互相取不到的问题。做了一段时间后,发现有更好的方案可以替代这种模式,就是做一个文件夹映射,文件存储问题得到了很好的解决。方便实用。下面说下具体怎么实现的。
使用了三台服务器(linux centos7+)
1:三台服务器,ip分别是192.168.0.172、192.168.0.176、192.168.0.179。其中172和176作为服务节点,部署我们的业务代码,179作为文件存储服务器。这台服务器的硬盘做了read1。
2:在179这台服务器上,安装nfs。
命令:yum install nfs-utils
启动nfs命令:service nfs start
启动rpcbind命令:service rpcbind start
3:创建一个共享文件夹nas
命令:mkdir nas
给nas文件夹付读写权限
命令:chmod 777 nas
4:配置共享
命令:vi /etc/exports 在文件中写入:/root/nas/ *(insecure,rw,async,no_root_squash)
其中insecure比较关键,如果不加这个值的时候,有时候配置共享的时候会报错,是因为用了大于1024的端口。
5:在172和176这两台服务器上,同样配置安装下nfs。启动nfs和rpcbind。创建存储文件夹mkdir data。赋权chmod 777 data。
6:在172和176上把data文件夹跟179的nas文件夹做映射关系。
命令:mount -t nfs 192.168.0.179:/root/nas /root/data
解除映射命令:umount -t nfs 192.168.0.179:/root/nas /root/data
解除时,有可能提示文件夹被占用,需要先把进程杀掉 使用命令:fuser -m -v /root/data
命令fuser需要安装:yum install -y psmisc
这样配置好后,就可以把服务节点上的上传和下载,直接配置到当前服务器的data文件夹中。实现资源共享。硬盘本身还做了容灾处理。