Linux服务器之文件共享服务
任务背景
任务要求
-
一台应用服务器web-server部署apache,静态网页资源存放在另外一台NFS服务器上
-
对于NFS服务器上保存的静态资源实行实时备份(inotify + rsync)
任务拆解
-
共享存储服务器搭建NFS服务,为web服务器提供静态资源文件内容
-
创建共享目录来保存静态资源文件
-
发布该共享目录给web服务使用
-
-
一台服务器搭建web服务,使用mount指定对NFS服务器进行挂载
-
对NFS服务器中的静态资源进行实时备份(inotify + rsync)
涉及知识点
-
NFS服务的搭建
-
mount命令挂载网络资源
-
rsync工具实现对共享存储上的静态资源备份
课程目标
-
了解NFS服务的应用场景及特点
-
能够通过NFS服务实现文件共享(重点)
-
能够使用mount命令挂载网络共享资源
环境搭建
1、任务解读
① 搭建NFS服务器(用于静态资源的存储如图片、视频、附件)
② 使用mount指定对NFS服务器进行挂载,挂载到Web服务器中
③ 对NFS服务器中的静态资源进行实时备份(inotify + rsync)
2、环境准备
准备三台机器如下所示(IP依据个人环境准备)
编号 | 主机名称FQDN | IP地址 | 作用 |
---|---|---|---|
1 | web.yun.cn | 10.1.1.11 | Web服务器 |
2 | nfs.yun.cn | 10.1.1.12 | NFS服务器 |
3 | backup.yun.cn | 10.1.1.13 | Backup服务器 |
第一步:设置计算机的在主机名称
Web# hostnamectl set-hostname web.yun.cn
NFS# hostnamectl set-hostname nfs.yun.cn
Backup# hostnamectl set-hostname backup.yun.cn
设置完毕后,可以执行su命令,就立马更新主机名了。
第二步:设置IP地址
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet'
BOOTPROT0="static'
IPADDR=10.1.1.11
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
DNS1=8.8.8.8
DNS2=114.114.114.114
NAME='ens33"
DEVICE="ens33"
ONBOOT="yes"
//...准备另外两台机器
准备好后,分别重启网络服务
# systemctl restart network
第三步:关闭防火墙与SELinux
关闭防火墙
# systemctl stop firewalld
# systemctl disable firewalld
关闭SELinux
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
第四步:配置YUM源
参考:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.7b101b11RLgyI4
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# yum makecache
3、NFS概述
NFS(Network File System)网络文件系统,主要用于Linux系统上实现文件共享的一种协议,其客户端主要是Linux。
没有用户认证机制,且数据在网络上传送的时候是明文传送,一般只能在局域网中使用
支持多节点同时挂载及并发写入
企业应用:为集群中的web server提供后端存储(做静态资源服务器)
4、NFS组成
rpcbind : 负责NFS的数据传输,远程过程调用 tcp/udp协议 端口111
nfs-utils :控制共享哪些文件,权限管理
RPC(Remote Procedure Call Protocol): 远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,不需要了解底层网络技术的协议。
5、与NFS相关的软件包
nfs-utils-1.2.3-26.el6.x86_64 nfs服务的一个脚本控制工具(服务端与客户端)
nfs4-acl-tools-0.3.3-6.el6.x86_64 acl 工具包
nfs-utils-lib-1.1.5-4.el6.x86_64 nfs 库文件
6、在nfs机器上安装NFS软件
一般服务器上已经安装过了,不需要安装了
安装命令
# yum install rpcbind nfs-utils -y
查询是否安装
# rpm -q rpcbind
# rpm -aq|grep ^nfs
7、NFS的配置文件
NFS的配置文件是/etc/exports,初始化的配置文件里面没有任何内容,可以使用man 5 exports查看相关配置说明
# vim /etc/exports
在进行配置的时候,我们只需要配置两列即可,一列代表共享目录,一列代表共享选项。
共享目录 共享选项
/share *(ro,sync)
/public *(ro,sync)
在共享选项中*(ro,sync):*号代表共享的网络,(ro,sync):括号内部代表其他属性。详解如下:
共享选项-共享主机:
* :代表所有主机
192.168.0.0/24:代表共享给某个网段192.168.0.1 ~ 192.168.0.254
192.168.0.0/24(rw) 192.168.1.0/24(ro) :代表共享给不同网段
192.168.0.254:共享给某个IP
*.yun.cn:代表共享给某个域下的所有主机
共享选项-括号内部:
ro:只读
rw:读写
sync:实时同步,直接写入磁盘(安全性最高)
async:异步,先缓存数据在内存然后再同步磁盘(效率最高,但是有丢失文件风险)
anonuid:设置访问nfs服务的用户的uid,uid需要在/etc/passwd中存在
anongid:设置访问nfs服务的用户的gid
root_squash :默认选项 root用户创建的文件的属主和属组都变成nfsnobody,其他人nfs-server端是它自己,client端是nobody。(访问NFS服务器时,映射为匿名账号)
no_root_squash:root用户创建的文件属主和属组还是root,其他人server端是它自己uid,client端是nobody。(访问NFS服务器时,映射为root管理员账号)
all_squash: 不管是root还是其他普通用户创建的文件的属主和属组都是nfsnobody
说明:
anonuid和anongid参数和all_squash一起使用。
all_squash表示不管是root还是其他普通用户从客户端所创建的文件在服务器端的拥有者和所属组都是nfsnobody;服务端为了对文件做相应管理,可以设置anonuid和anongid进而指定文件的拥有者和所属组
三、NFS任务解决方案
1、搭建NFS服务器
第一步:安装软件
服务器自带了环境,所以可以忽略
# yum install rpcbind nfs-utils -y
第二步:创建一个共享目录,如/share
# mkdir /share
2、编写NFS主配置文件
# vim /etc/exports
共享目录 共享选项
/share web服务器ip的前三位.0/24(rw,sync)
3、启动相关的NFS服务
# systemctl start rpcbind
# systemctl start nfs
//出现111端口就证明启动成功
# ss -naltp |grep 111
4、搭建Web服务器
# yum install httpd -y
# systemctl start httpd
当Apache软件启动完毕后,会自动占用计算机的80端口。
80端口指向Web服务器的目录 => /var/www/html
所以项目源代码都可以直接存放于/var/www/html目录下
# echo "NFS实战演练" > /var/www/html/index.html
编辑完毕后,使用浏览器访问web服务器的ip,查看效果。
5、在Web服务器中挂载NFS
# mkdir /var/www/html/media
# mount -t nfs nfs服务器的ip地址:/share /var/www/html/media
或
# mount.nfs nfs服务器的ip地址:/share /var/www/html/media
如果客户端没有安装nfs工具可能导致挂载失败,比如最小化安装的虚拟机就没有这个环境,解决方案就是手动安装:
# yum -y install nfs-utils nfs-utils-lib nfs4-acl-tools
查看磁盘挂载情况,一般最后一行是挂载信息:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 5.1G 12G 30% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
tmpfs 182M 28K 182M 1% /run/user/1000
/dev/sr0 4.3G 4.3G 0 100% /run/media/itheima/CentOS 7 x86_64
tmpfs 182M 0 182M 0% /run/user/0
10.1.1.12:/share 17G 5.1G 12G 30% /var/www/html/media
6、上传tian.mp4视频到NFS服务器的/share
第一步:使用FinalShell上传tian.mp4到NFS服务器的/share目录
第二步:在Web服务器中,ll /var/www/html/media目录
# ll /var/www/html/media
tian.mp4
7、在html网页中调用tian.mp4文件
# vim /var/www/html/index.html
<video width="800" height="450" controls>
<source src="media/tian.mp4">
</video>
8、对NFS服务器进行实时备份
NFS服务器:/share目录有变化,马上rsync进行同步Backup备份服务器的/backup目录
第一步:安装inotify工具(NFS服务器)
上传inotify-tools-3.14.tar.gz到NFS服务器
# tar -xvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure && make && make install
第二步:编写rsync.sh脚本,监控/share目录的变化
# cd ~
# vim rsync.sh
#!/bin/bash
/usr/local/bin/inotifywait -mrq -e modify,delete,create,attrib,move /share |while read events
do
rsync -a --delete /share/ 备份服务器backup的IP地址:/backup/
echo "`date +%F\ %T`出现事件$events" >> /var/log/rsync.log 2>&1
done
第三步:给rsync添加x权限
# chmod +x rsync.sh
第四步:把NFS服务器与Backup备份服务器进行免密登录
# ssh-keygen
# ssh-copy-id root@Backup备份服务器IP地址
第五步:在Backup服务器中创建一个/backup目录,用于实时备份
# mkdir /backup
第六步:在NFS服务器中执行rsync脚本
# nohup ./rsync.sh &
查看是否运行
# jobs
第七步:在NFS服务器
- 点赞
- 收藏
- 关注作者
评论(0)