课前回顾 及 NFS
NFS部署过程
1)安装服务端
yum install -y nfs-utils rpcbind
2)修改配置文件
vim /etc/exports#共享目录 IP网段 参数/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3)nfs自带用户:nfsnobody 65534,自己创建用户
groupadd www -g 666useradd www -u 666 -g 666 -s /sbin/nologin -M
4)创建共享目录
mkdir /datachown -R www.www /data
5)启动服务
systemctl start rpcbind nfs-server
客户端部署
1)安装rpcbind和nfs
yum install -y rpcbind nfs-utils
2)启动rpcbind
systemctl start rpcbind
3)查看可挂载点
showmount -e 172.16.1.31
4)挂载
mount -t nfs 172.16.1.31:/data /var/www/html/tupian
5)开机挂载
vim /etc/fstab172.16.1.31:/data /var/www/html/tupian nfs defaults 0 0
6)使用mount -a 检测
[[email protected] ~]# mount -a
7)卸载
umount /var/www/html/tupian#强制卸载umount -lf /var/www/html/tupian
8)nfs挂载文件
[[email protected] ~]# cat /var/lib/nfs/etab
9)增加挂载的安全性
#通过mount -o指定挂载参数,禁止使用suid,exec,增加安全性能[[email protected] ~]# mount -t nfs -o nosuid,noexec,nodev 172.16.1.31:/data /mnt
nfs配置参数
rw:共享目录的权限是 可读 可写
sync:同时将数据写入内存和磁盘,增强数据的安全性,保证数据不丢失
all_squash:无论使用什么用上传或者访问,一律压缩成 nfs的匿名用户
anonuid:指定一个匿名用户,必须是系统存在的uid
anongid:指定一个匿名用户组,必须是系统存在的gid
----------------------------------------------不常用--------------------------------------------
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户(不常用) |
---|---|
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员(不常用) |
no_all_squash | 无论NFS客户端使用什么账户访问,都不进行压缩 |
---|---|
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
ro | 只读权限 |
---|---|
NFS存储小结
- NFS存储优点
- 1)NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
2)NFS文件系统内存放的数据都在文件系统之上,所有数据都是能看得见。
- NFS存储局限
- 1)存在单点故障, 如果构建高可用维护麻烦web->nfs()->backup
- 2)NFS数据明文, 并不对数据做任何校验。
- 3)客户端挂载NFS服务没有密码验证, 安全性一般(内网使用)
- 1)NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。
3.NFS应用建议 1)生产场景应将静态数据尽可能往前端推, 减少后端存储压力
2)必须将存储里的静态资源通过CDN缓存jpg\png\mp4\avi\css\js
3)如果没有缓存或架构本身历史遗留问题太大, 在多存储也无用
rsync+nfs实战,解决nfs的单点故障
服务器系统 | 角色 | IP |
---|---|---|
CentOS 7.5 | NfsServer(A) | 172.16.1.31 |
CentOS 7.5 | NfsClient(B) | 172.16.1.41 |
CentOS 7.5 | NfsClient(C) | 172.16.1.7 |
1)安装服务端
yum install -y rpcbind nfs-utils
2)编辑服务端的配置文件
vim /etc/exports/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
3)创建用户
groupadd www -g 666useradd www -u 666 -g 666 -s /sbin/nologin -M
4)创建目录并授权
mkdir /datachown -R www.www /data
5)启动服务
systemctl start rpcbind nfs-server
6)检查
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=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)
配置客户端
1)安装客户端服务
yum install -y rpcbind nfs-utils
2)启动rpc
systemctl start rpcbind
3)查看挂载点
showmount -e 172.16.1.31
4)挂载
mount -t nfs 172.16.1.31:/data /var/www/html/tupian
结合rsync
1)NFS安装rsync
yum install -y rsync
2)客户端与服务端的关系
3)使用免密的方式
export RSYNC_PASSWORD=123456
rsync服务端操作(backup)
1)创建www用户
groupadd www -g 666 useradd www -u 666 -g 666 -s /sbin/nologin -M
2)统一rsync服务的用户和用户组(修改配置文件)
vim /etc/rsyncd.conf uid = www gid = www port = 873 fake super = yes use chroot = no max connections = 200 timeout = 600 ignore errors read only = false list = false auth users = rsync_backup secrets file = /etc/rsync.passwd log file = /var/log/rsyncd.log ##################################### [zls] comment = welcome to oldboyedu backup! path = /backup [nfs] comment = welcome to oldboyedu nfs! path = /data
3)创建目录并授权
[[email protected] ~]# mkdir /data [[email protected] ~]# chown -R www.www /data/
4)编写备份脚本
vim rsync.sh #!/bin/bash PATH=‘/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin‘ H=`hostname` I=`ifconfig eth1|awk ‘NR==2{print $2}‘` D=`date +%F` S=${H}_${I}_${D} BD=/backup export RSYNC_PASSWORD=123456 mkdir -p ${BD}/${S} tar zcf ${BD}/${S}/conf.tar.gz /etc/passwd &>/dev/null md5sum ${BD}/${S}/conf.tar.gz > /backup/${I}.txt rsync -az ${BD}/ [email protected]::zls rsync -az --delete /data/ [email protected]::nfs find ${BD} -type d -mtime +7|xargs rm -fr
5)安装nfs服务端
[[email protected] ~]# yum install -y rpcbind nfs-utils
6)编辑配置文件
[[email protected] ~]# vim /etc/exports /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
7)启动服务
[[email protected] ~]# systemctl start rpcbind nfs-server [[email protected] ~]# systemctl enable rpcbind nfs-server
web01客户端写脚本
#!/bin/bash check_nfs=`df -h|grep ‘/var/www/html/tupian‘|wc -l` if [ $check_nfs -eq 0 ];then showmount -e 172.16.1.31 &>/dev/null if [ $? -eq 0 ];then mount -t nfs 172.16.1.31:/data /var/www/html/tupian else mount -t nfs 172.16.1.41:/data /var/www/html/tupian fi fi
5.录视频
原文地址:https://www.cnblogs.com/223zhp/p/11372880.html