一、实验项目
实验描述:
我们有一个web集群,为了确保web集群的数据一致性,我们使用NFS共享文件存储技术,通过挂载的方式保证web集群的静态数据一致性。
但是NFS文件并不能实时的监控文件内容的变化,所以我们通过rsync+inotify的方式实时的监控文件内容的变化。
rsync+inotify将以脚本的方式在web集群的后台运行
网络拓扑图如下
使用到的技术:
NFS(Network File System)即网络文件系统,它允许网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。
Inotify 一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。
实验流程:
1.部署NFS共享服务器
2.部署web集群
3.web集群生成ssh秘钥发送给nfs服务器
4.挂载NFS共享目录
5.编写rsync+inotify脚本
6.在web集群上执行rsync+inotify脚本
7.测试:在NFS服务上修改文件内容,观察web1-3上文件内容是否发生变化
1.部署NFS服务器
$yum -y install nfs-utils #安装服务
$mkdir /html #创建共享访问点
$vim /etc/exports #修改文件
-> /html *(rw)
$systemctl restart nfs-server #重启服务
2.部署web集群(每台web都需要安装)
$yum -y install httpd #安装httpd服务
$yum -y install nfs-utils #安装nfs服务
$ls /var/www/html #查看html
$rm -fr /var/www/html/* #删除html下文件
$showmount -e 192.168.1.11 #查看可以挂载的nfs记录
$mount 192.168.1.11:/html /var/www/html #挂载
$ df -h #查看挂载
3.web集群生成ssh秘钥发送给nfs服务器 (每台主机都需要发送)
$ ssh-keygen
$ ssh-copy-id root@192.168.1.11
4.编写rsync+inotify脚本
$vim /root/isync.sh #编写脚本
#!/bin/bash
FROM_DIR="/var/www/html/"
RSYNC_CMD="rsync -az --delete $FROM_DIR root@192.168.1.11:/var/www/html"
while inotifywait -rqq -e modify,move,create,delete,attrib $FROM_DIR
do
$RSYNC_CMD
done &
$chmod +x /root/isync.sh
$ /root/isync.sh #执行脚本
$ pgrep -l inotify //确认任务在运行
56494 inotifywait
5.测试
在nfs文件目录下创建文件
$cd /html
$touch a b c
在web文件目录下查看
$ ls /var/www/html