2019-07-08

                                nfs共享实时同步

一,开始部署NFS服务器端nfs共享

第一步:NFS软件包安装
yum -y install nfs-utils rpcbind
第二步:创建uid=666,gid=666的用户nfsnobody
[root@nfs01 ~]# useradd -u 666 -s /sbin/nologin -M nfsnobody
[root@nfs01 ~]# id nfsnobody
uid=666(nfsnobody) gid=666(nfsnobody) 组=666(nfsnobody)
第三步:修改/etc/exports配置文件
[root@nfs /]# vim  /etc/exports
/data   172.16.1.0/24(rw,sync)
/data/r  172.16.1.0/24(ro,sync,all_squash)
/data/w  172.16.1.0/24(rw,sync,all_squash)
~                                                                               
~                                                                               
~                                                                               
"/etc/exports" 3L, 117C written                      
第四步:启动NFS相关服务
[root@nfs01 ~]# /etc/init.d/rpcbind start
正在启动 rpcbind:                                         [确定]
[root@nfs01 ~]# /etc/init.d/nfs start
启动 NFS 服务:                                            [确定]
关掉 NFS 配额:                                            [确定]
启动 NFS mountd:                                          [确定]
启动 NFS 守护进程:                                        [确定]
Starting RPC idmapd:                                       [  OK  ]
[root@nfs01 ~]# 
第五步:设置共享目录/data的属主和属组为指定用户
[root@nfs01 ~]# chown -R nfsnobody.nfsnobody/data
[root@nfs01 ~]# ll -d /data
drwxr-xr-x. 2 nfsnobody nfsnobody 4096 7月  20 11:36 /data
第六步:进行本地挂载测试
[root@nfs01 ~]# mount 172.16.1.31:/data /mnt
[root@nfs01 ~]# ll -d /mnt
drwxr-xr-x. 2 chensiqi chensiqi 4096 7月  20 12:14 /mnt
[root@nfs ~]# df
Filesystem        1K-blocks    Used Available Use% Mounted on
/dev/sda3          19706880 1843236  17863644  10% /
devtmpfs             487952       0    487952   0% /dev
tmpfs                498976       0    498976   0% /dev/shm
tmpfs                498976    7884    491092   2% /run
tmpfs                498976       0    498976   0% /sys/fs/cgroup
/dev/sda1            201380  104248     97132  52% /boot
tmpfs                 99796       0     99796   0% /run/user/0
172.16.1.31:/data  19706880 1843200  17863680  10% /mnt
第七步:设置rpcbind和nfs服务开机启动
[root@nfs01 ~]# tail -3 /etc/rc.local
#start up nfs service by nfsnobody at 20190708
/etc/init.d/rpcbind start
/etc/init.d/nfs start
[root@nfs01 ~]# 

二,开始部署web端NFS客户端共享挂载

配置web01服务器:

第一步:nfs客户端需要安装nfs-utils软件包
yum -y install nfs-utils
第二步:挂载共享目录
[root@web01 ~]# mkdir -p /var/html/www
[root@web01 ~]# mount 172.16.1.31:/data /var/html/www
[root@web01 ~]# df
Filesystem           1K-blocks    Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      18003272 4815804  12266280  29% /
tmpfs                   502068       0    502068   0% /dev/shm
/dev/sda1               487652   34856    427196   8% /boot
172.16.1.31:/data     18003328 4154240  12928000  25% /mnt
172.16.1.31:/data     18003328 4154240  12928000  25% /var/html/www
第三步:测试写入数据
[root@web01 ~]# cd /var/html/www
[root@web01 www]# ll
总用量 4
-rw-r--r--. 1 nfsnobody nfsnobody 0 7月  9 19:27 csfdsf
-rw-rw-r--. 1 nfsnobody nfsnobody 0 7月 9 00:14 test2
-rw-rw-r--. 1 nfsnobody nfsnobody 4 7月  9 00:14 test.txt
[root@web01 www]# touch 11111
[root@web01 www]# ll
总用量 4
-rw-r--r--. 1 nfsnobody nfsnobody 0 7月  9 19:34 11111
-rw-r--r--. 1 nfsnobody nfsnobody 0 7月  9 19:27 csfdsf
-rw-rw-r--. 1 nfsnobody nfsnobody 07月  9 00:14 test2
-rw-rw-r--. 1 nfsnobody nfsnobody 4 7月 9 00:14 test.txt 
第四步:配置开机自动挂载
[root@web01 www]# tail -1 /etc/rc.local 
mount -t nfs -o nodev,noexec,nosuid,rw  172.16.1.31:/data /var/html/www
配置web02服务器:配置方式同web01服务器

三,配置Rsync备份服务器

第一步:在配置文件/etc/rsyncd.conf里添加nfsbackup新模块

在配置文件里添加如下内容
[nfsbackup]
# 使用目录
path = /data/
# 有错误时忽略
ignore errors
# 可读可写(true或false)
read only = false
# 阻止远程列表(不让通过远程方式看服务端有啥)
list = false
# 允许IP
hosts allow = 172.16.1.0/24
# 禁止IP
hosts deny = 0.0.0.0/32
# 虚拟用户
auth users = rsync_backup
# 存放用户和密码的文件
secrets file = /etc/rsync.password

第二步:启动rsync服务

方法一:如果没有编写rsync启动脚本
[root@backup ~]# rsync --daemon
[root@backup ~]# ss -antup | grep rsync
tcp    LISTEN     0      5                     :::873                  :::*      users:(("rsync",7098,5))
tcp    LISTEN     0      5                      *:873                   *:*      users:(("rsync",7098,4))
方法二:如果已经编写了启动脚本
[root@backup ~]# /etc/init.d/rsyncd start
Starting Rsync:                                            [确定]
[root@backup ~]# ss -antup | grep rsync
tcp    LISTEN     0      5                     :::873                  :::*      users:(("rsync",7098,5))
tcp    LISTEN     0      5                      *:873                   *:*      users:(("rsync",7098,4))

第三步:rsync服务加入开机启动

[root@backup ~]# echo ". /etc/init.d/rsyncd start" >> /etc/rc.local
[root@backup ~]# tail -1 /etc/rc.local 
. /etc/init.d/rsyncd start

四,在NFS服务端配置inotify事件监控工具

第一步:安装inotify事件监控工具

此工具需要安装epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
[root@nfs01 ~]# yum -y install inotify-tools

第二步:进行rsync + inotify时时推送测试

开两个shell窗口
[root@nfs01 ~]# inotifywait -mrq --format '%w%f' -e delete,close_write,create /data
输入后,shell处于阻塞状态(时时监控)

在另一个窗口的/data目录进行创建,修改,删除测试:
此时我们可以发现当前处于阻塞状态的shell窗口会记录所有目录发生改变的情况

命令说明:
inotifywait:监控命令
-m:持续不断的进行监控(处于阻塞状态)
-r:递归监控,监控目录及目录的所有子目录
-q:只输出简单的监控信息
--format:指定监控数据输出的格式
-e:指定监控的事件类型
delete:删除事件
close_write:文件写入的关闭事件(其实就是监控修改文件)
create:创建事件

第三步:编写inotify + inotify 时时同步推送脚本

#!/bin/bash

Path=/data
backup_Server=172.16.1.41


/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data | while read line
do
        if [ -f $line ];then
                rsync -az $line --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
        else
                cd $Path &&\
                rsync -az ./ --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
        fi
done

第四步:脚本加入开机(后台)启动

[root@nfs01 ~]# echo "sh /server/scripts/inotify.sh &" >> /etc/rc.local

第五步:进行同步测试

NFS存储服务器:进行如下操作
[root@nfs01 data]# ll
总用量 4
-rw-r--r--. 1 root root 4 7月  9 21:02 aaa
[root@nfs01 data]# touch nfsnobody  #创建
[root@nfs01 data]# ll
总用量 4
-rw-r--r--. 1 root root 4 7月  9 21:02 aaa
-rw-r--r--. 1 root root 0 7月  9 21:16 nfsnobody
[root@nfs01 data]# echo 1111 >> nfsnobody #修改
[root@nfs01 data]# ll
总用量 8
-rw-r--r--. 1 root root 4 7月  9 21:02 aaa
-rw-r--r--. 1 root root 5 7月  9 21:17 nfsnobody
[root@nfs01 data]# rm -rf aaa  #删除

rsync备份服务器:查看目录同步效果

[root@backup ~]# cd /data
[root@backup data]# ll
总用量 4
-rw-r--r--. 1 rsync rsync 5 7月  9 2019 nfsnobody
[root@backup data]# cat nfsnobody
1111
[root@backup data]# 

你可能感兴趣的:(2019-07-08)