NFS服务部署

随笔2个月前发布 可可时光
9 0 0

一、基础概念

NFS是一种网络文件系统,实现数据一致性,文件共享
NFS将硬盘进行共享,共享的目录;两台服务器的前提下不同用户如何实现上传访问到静态图片/视频都能看到相同的数据则使用NFS
其实现在很多企业都会有一个CDN分布式文件缓存,这个缓存可以实现将静态图片/视频上传到CDN分布式文件缓存(要钱),好处是:客户端反应贼快(看)但是如果NFS挂了就只能看,不能上传
本地挂载:mount /dev/sdb/ /mnt
NFS挂载:mount -t nfs 10.0.0.31:/data /mnt # data是挂载点目录 /mnt是挂载点
我们的底层逻辑是:IP+端口 #这样的方式实现通信的

二、微型架构图:

NFS服务部署

1、架构详解

1.1、无CDN分布式文件缓存

用户访问域名通过LB的DR模式(负载均衡)访问到后台真实服务器
如果我们第一次通过web01将视频图片上传之后,因为DR模式的缘故第二次会访问的是web02,那么这个时候会发现图片消失
这时候我们可以采用将web01和web02的视频和图片文件夹同步到NFS共享存储服务器中
那么无论当我们第几次访问web01/web02访问到的静态资源图片都在NFS共享存储服务器中

1.2、有CDN分布式文件缓存

购买CDN分布式缓存之后,我们可以将NFS共享存储文件中内容推到CDN分布式文件缓存中并设置图片的缓存时间
这样的优势就是,用户在访问的时候先去访问CDN分布式文件缓存再通过LB负载均衡的模型去访问真实服务器
也就是说你先拿到图片后拿到真实服务器中的内容

三、NFS配置详解:

[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
nfs共享参数 参数作用
rw 读写权限
ro 只读权限
all_squash 无论NFS客户端使用什么账号访问,均映射为NFS服务端的匿名用户
no_all_squash 无论NFS客户端使用什么账号访问,都不进行压缩
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入磁盘;这样更高效,但可能会丢失数据
anonuid 配置all_squash使用,指定NFS的用户UID,必须存在系统
anongid 配置all_squash使用,指定NFS的用户UID,必须存在系统

四、NFS服务部署:

1.安装服务
[root@nfs ~]# yum -y install nfs-utils
2.配置服务
[root@nfs ~]# vim /etc/exports
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)
3.启动服务
[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
检查端口 111
[root@nfs ~]# netstat -tnulp
4.检查配置文件是否正确
 /var/lib/nfs/etab  如果有内容说明配置正确,如果为空说明配置错误
[root@nfs ~]# cat /var/lib/nfs/etab 
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)


5.根据配置文件创建必要数据
[root@nfs ~]# mkdir /data
[root@nfs ~]# ll /data
total 0

修改目录属主属组
[root@nfs ~]# grep 65534 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@nfs ~]# ll -d /data/
drwxr-xr-x. 2 root root 6 Nov  6 12:06 /data/
[root@nfs ~]# chown nfsnobody.nfsnobody /data
[root@nfs ~]# ll -d /data
drwxr-xr-x. 2 nfsnobody nfsnobody 6 Nov  6 12:06 /data



客户端使用:
1.安装nfs-utils(只安装不运行)
[root@web01 ~]# yum -y install nfs-utils

2.查看服务端共享的目录
[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

3.挂载远程文件系统nfs
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
devtmpfs           476M     0  476M   0% /dev
tmpfs              487M     0  487M   0% /dev/shm
tmpfs              487M   14M  473M   3% /run
tmpfs              487M     0  487M   0% /sys/fs/cgroup
/dev/sda3           18G  2.3G   16G  13% /
/dev/sda1          197M  110M   88M  56% /boot
tmpfs               98M     0   98M   0% /run/user/0
172.16.1.31:/data   18G  2.3G   16G  13% /mnt

进入/mnt测试写入
[root@web01 ~]# cd /mnt/
total 0
[root@web01 mnt]# touch 1.txt
[root@web01 mnt]# ll
total 0
-rw-r--r-- 1 nfsnobody nfsnobody 0 Dec  5 10:48 1.txt



NFS参数: 指定匿名压缩用户为uid和gid为666
[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 -M -s /sbin/nologin www
修改nfs配置
[root@nfs ~]# cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
修改目录属主属组
[root@nfs ~]# chown www.www /data
[root@nfs ~]# ll -d /data
drwxr-xr-x. 2 www www 6 Dec  5 10:54 /data


查看内存的映射
[root@web01 ~]# cat /proc/mounts
如果挂载夯住使用-f
[root@web01 ~]# umount -f /mnt

五、小结:

1、NFS存储优点:

NFS文件简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求
NFS文件系统内存放数据都在文件系统之上,所有数据都是能看到的

2、NFS存储局限

存在单点故障,如果构建高可用维护麻烦 web->nfs0->backup
NFS数据明文,并不多数据做任何校验
客户端挂载NFS服务器没有密码验证,安全性一般(内网使用)

3、NFS应用建议

生产场景将静态数据尽可能往前端推,减少后端存储压力
必须将存储里的静态资源通过CDN缓存 jpgpngmp4avicddjs
如果没有缓存或架构本身历史遗留问题太大,在多存储也无用

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...