1.1 NFS在网站上的应用
1.1.1 应用环境
场景1
用户A上传了一张图片,由于web服务器同步不及时或出现故障
此时B用户访问此图片时,有可能被分配去访问web2或web3,结果无法看到A用户上传的图片
www1.png
场景2
用户A上传了一张图片,此图片存储在后端共享存储上
此时用户B访问此图片时,不管时访问web或web3,结果都是可以看到A用户上传的图片
www2.png
1.1.2 NFS实现场景2中的共享存储
生产环境中的要求
共享存储中用户数据的安全性
NFS服务器 都创建一个www账户(确保客户端www 服务端用户 uid数值一致)
NFS服务器中web共享存储目录权限设置成www
配置no_all_squash www----->www 用户身份不转换 , www用户直接访问web共享存储目录(只有www用户有权限管保证了数据的安全性)
共享目录的管理
NFS存储服务器生产环境中存储很多数据并不是所有人都有权限访问,
web服务器中的root需要管理web共享存储目录
配置root_squash root---->nfsnobody root用户转换成了nfsnobody 没有权限访问web共享存储目录
修改anonuid=1005,anongid=1005 可以将root 转换成NFS服务器中的www用户就可以对web共享存储目录进行管理
查看nfs服务的默认配置
[root@ www]# cat /var/lib/nfs/etab --- 记录nfs服务的默认配置记录信息
/data/www 172.17.1.101(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
NFS在web应用中的实现过程
#-----------NFS即场景2中共享存储服务器-----------
#step1 安装nfs和rpc
rpm -qa|grep -E "nfs|rpc"
yum install -y nfs-utils rpcbind
#step2 编辑nfs配置文件
[root@ ~]# cat< /etc/exports
/data/ 172.17.1.101(rw,root_squash,no_all_squash,anonuid=1005,anongid=1005)
/data/ 172.17.1.101(rw,root_squash,no_all_squash,anonuid=1005,anongid=1005)
/data/ 172.17.1.101(rw,root_squash,no_all_squash,anonuid=1005,anongid=1005)
EOF
#step3 创建共享存储目录
mkdir /data/www
#step4 创建www虚拟用户 id未被使用(用户名和id与web服务器一致)
useradd -u 1005 -s /sbin/nologin www
#step5 将共享存储目录属主属组改成www
chown www. /data/www
#step6 启动服务
#启动 rpc服务
systemctl start rpcbind.service
systemctl enable rpcbind.service
#再启动 nfs服务
systemctl start nfs
systemctl enable nfs
#-----------场景2中web服务器的配置-----------
#三个服务器中的配置都是相同的
#step1 安装nfs 提供网络文件系统
yum -y install nfs-utils
#step2 创建www虚拟用户 与NFS服务器上的www用户id一致 (用户名和id与NFS服务器一致)
useradd -u 1005 -s /sbin/nologin www
#step3 挂载网络存储目录到 /var/www
mount -t nfs 172.17.1.105:/data/www /var/www