NFS服务
原理:供文件共享服务,为Web Server 配置集群中的后端存储。 支持多节点同时挂载以及并发送与写入。
架构解析
这是一张大型网站高并发架构图,我们只需注意图中圈红的地方
建立NFS文件系统本质就是用来进行存储,一般数据是不会放本地
比如一些MySQL数据库/var/lib/mysql ,nginx网站目录 /usr/share/nginx/html/..........还有很多
这些都可以结合NFS网络文件系统进行挂载与远程存储
主要是增加数据的可靠性与安全性,方便与数据灾备方案与备份.........
一、环境准备
CentOS版本: CentOS Linux release 7.9.2009 (Core)
端口:111
1、关闭firewalld、selinux
2、准备两台机器:
nfs-servce:192.168.178.135
nfs-cilent:192.168.178.139
nfs-server/nfs-client
#两台主机同时进行
#1. 关闭防火墙:
[root@192 ~]# systemctl stop firewalld
[root@192 ~]# systemctl disable firewalld
#2. 关闭Selinux:
[root@192 ~]# sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config #永久关闭
#3. 因为永久关闭要重启,先进行临时关闭
[root@192 ~]# setenforce 0
#4. 查看是否成功关闭Selinux:
[root@192 ~]# getenforce
Permissive #出现此,代表临时关闭Selinux成功
二、安装软件与配置
nfs-server
#1. 进行域名解析:
[root@nfs-server ~]# vim /etc/hosts
192.168.178.135 nfs-server #Server IP
192.168.178.139 nfs-client #Client IP
#2. 获取阿里云源:
[root@nfs-server ~]# yum -y install wget && wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#3. 安装相关软件:
[root@nfs-server ~]# yum -y install nfs-utils
#4. 创建网站文件存放目录:
[root@nfs-server ~]# mkdir /webdata
[root@nfs-server ~]# chmod 777 /webdata/
[root@nfs-server ~]# echo "nfs-test 2021-09-23 Sunny" > /webdata/index.html
[root@nfs-server ~]# df /webdata/ -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 3.5G 1.5G 2.1G 42% /
#5. 编写NFS配置:
[root@nfs-server ~]# vim /etc/exports
#添加
/webdata 192.168.178.0/24(rw) #代表所有的178网段的主机拥有读写权限
#6. 开启服务:
[root@nfs-server ~]# systemctl start nfs-server && systemctl enable nfs-server
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
#7. 检查语法格式:
[root@nfs-server ~]# exportfs -v
/webdata 192.168.178.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
#8. 查看nfs-server是否启动成功:
[root@nfs-server ~]# ss -anpt | grep 111
LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=1709,fd=8))
LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=1709,fd=11))
nfs-client
#1. 进行域名解析:
[root@nfs-client ~]# vim /etc/hosts
192.168.178.135 nfs-server
192.168.178.139 nfs-client
#2. 获取阿里云源:
[root@nfs-client ~]# yum -y install wget && wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#3. 安装相对应的软件:
[root@nfs-client ~]# yum -y install nfs-utils httpd
#4. 启动网站服务:
[root@nfs-client ~]# systemctl start httpd && systemctl enable httpd
#5. 查看nfs-server上可用的挂载点:
[root@nfs-client ~]# showmount -e nfs-server
Export list for nfs-server:
/webdata 192.168.178.0/24
#6. 进行挂载到httpd的默认网站目录:
[root@nfs-client ~]# mount -t nfs nfs-server:/webdata /var/www/html/
[root@nfs-client ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
192.168.178.135:/webdata nfs4 3.5G 1.5G 2.1G 42% /var/www/html
#7. 获取网站主页:
[root@nfs-client ~]# curl nfs-client:80
nfs-test 2021-09-23 Sunny #远程挂载共享文件成功
🗡问题解决:客户端不能写入
在服务端:
# vim /etc/exports
/var/lib/mysql 192.168.178.0/24(rw,no_root_squash) #只需添加 no_root_squash
其他一些权限的代码
- rw:可读写的权限;
- ro:只读的权限;
- no_root_squash:登入到NFS主机的用户如果是root,该用户即拥有root权限;(不添加此选项ROOT只有RO权限)
- root_squash:登入NFS主机的用户如果是root,该用户权限将被限定为匿名使用者nobody;
- all_squash:不管登陆NFS主机的用户是何权限都会被重新设定为匿名使用者nobody。
- anonuid:将登入NFS主机的用户都设定成指定的user id,此ID必须存在于/etc/passwd中。
- anongid:同anonuid,但是变成group ID就是了!
- sync:资料同步写入存储器中。 async:资料会先暂时存放在内存中,不会直接写入硬盘。
- insecure:允许从这台机器过来的非授权访问。
三、设置开机自动加载
#1. 在家目录中加载:
[root@nfs-client ~]# cat ~/.bashrc
#加入
mount -t nfs nfs-server:/webdata /var/www/html/ #就是把之间挂载的命令写进去,开机会加载该文件
#2. 通过/etc/profile加载:
[root@nfs-client ~]# vim /etc/profile
#在最后一行加入即可:
mount -t nfs nfs-server:/webdata /var/www/html/
#3. 使用fstab自动挂载:
[root@nfs-client ~]# vim /etc/fstab
#加入 挂载的服务器上的路径 要挂载到本机的路径 类型
nfs-server:/webdata /var/www/html nfs defaults 0 0
解析:
- Defaults 同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
- 第1个1 表示备份文件系统,
- 第2个1 表示从/分区的顺序开始fsck磁盘检测,0表示不检测。
- _rnetdev 表示主机无法挂载直接跳过,避免无法挂载主机无法启动