【NFS项目实战二】NFS共享数据的时时同步推送备份
【NFS项目实战二】NFS共享数据的时时同步推送备份
标签(空格分隔): Linux服务搭建-陈思齐
---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处,作者信息和本声明。否则将追究法律责任。http://www.cnblogs.com/chensiqiqi/
[TOC]
前言
[blockquote]
《项目实战》系列为《linux实战教学笔记》第二阶段内容的同步教学配套实战练习,每个项目循序衔接最终将组成《Linux实战教学笔记》第二阶段核心教学目标10台规模的基础核心服务架构集群。本文上接http://www.cnblogs.com/chensiqiqi/p/6531003.html 项目实战一
[/blockquote]
企业案例
公司有两台web服务器一直在对外提供服务,但随着业务的发展用户越来越多,网站的功能也越来越强大,各种图片,视频等占用硬盘空间越来越大。于是,领导将web服务器的数据直接存储到NFS服务器上作为存储使用;并且为了防止NFS服务器发生单点故障,领导希望将web服务器存储的内容实时同步到Rsync备份服务器上。现在由你来计划完成领导的需求。
具体要求如下:
- [x] NFS服务器的要求如下: 服务器的共享目录名为/data目录;
- 权限要求只能内网网段访问且可读可写,时时同步;
- 为了方便管理人员管理,需要指定NFS虚拟账户为chensiqi,uid=12306,gid=12306
- 所有访问者的身份都压缩为最低身份
- 将/data目录里的内容同步时时推送到备份服务器的/data目录里(inotify+rsync)
环境准备
系统版本
[root@nfs01 ~]# cat /etc/redhat-release CentOS release 6.8 (Final)
内核参数
[root@nfs01 ~]# uname -r 2.6.32-642.el6.x86_64
主机网络参数设置
web0210.0.0.7/24172.16.1.7/24B1-apache web服务器web0110.0.0.8/24172.16.1.8/24B2-nginx web服务器nfs0110.0.0.31/24172.16.1.31/24C1-NFS存储服务器backup10.0.0.41/24172.16.1.41/24C2-rsync备份服务器一,开始部署NFS服务器端nfs共享
第一步:NFS软件包安装
yum -y install nfs-utils rpcbind
第二步:创建uid=12306,gid=12306的用户chensiqi
[root@nfs01 ~]# useradd -u 12306 -s /sbin/nologin -M chensiqi [root@nfs01 ~]# id chensiqi uid=12306(chensiqi) gid=12306(chensiqi) 组=12306(chensiqi)
第三步:修改/etc/exports配置文件
[root@nfs01 ~]# echo "/data 172.16.1.0/24(rw,sync,all_squash,anonuid=12306,anongid=12306)" >> /etc/exports [root@nfs01 ~]# cat /etc/exports /data 172.16.1.0/24(rw,rsync,all_squash,anonuid=12306,anongid=12306)
第四步:启动NFS相关服务
先启动rpcbind服务;再启动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 chensiqi.chensiqi /data [root@nfs01 ~]# ll -d /data drwxr-xr-x. 2 chensiqi chensiqi 4096 3月 14 00:14 /data
第六步:进行本地挂载测试
[root@nfs01 ~]# showmount -e Export list for nfs01: /data 172.16.1.0/24 [root@nfs01 ~]# hostname -I 10.0.0.31 172.16.1.31 [root@nfs01 ~]# mount 172.16.1.31:/data /mnt [root@nfs01 ~]# ll -d /mnt drwxr-xr-x. 2 chensiqi chensiqi 4096 3月 14 00:14 /mnt [root@nfs01 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup-lv_root 18003272 4154188 12927896 25% / tmpfs 502068 0 502068 0% /dev/shm /dev/sda1 487652 34856 427196 8% /boot 172.16.1.31:/data 18003328 4154240 12928000 25% /mnt
第七步:设置rpcbind和nfs服务开机启动
[root@nfs01 ~]# tail -3 /etc/rc.local #start up nfs service by chensiqi at 20170315 /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 ~]# showmount -e nfs01 Export list for nfs01: /data 172.16.1.0/24 [root@web01 ~]# mkdir -p /var/html/www [root@web01 ~]# showmount -e nfs01 Export list for nfs01: /data 172.16.1.0/24 [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 chensiqi chensiqi 0 3月 15 19:27 csfdsf -rw-rw-r--. 1 chensiqi chensiqi 0 3月 14 00:14 test2 -rw-rw-r--. 1 chensiqi chensiqi 4 3月 14 00:14 test.txt [root@web01 www]# touch 11111 [root@web01 www]# ll 总用量 4 -rw-r--r--. 1 chensiqi chensiqi 0 3月 15 19:34 11111 -rw-r--r--. 1 chensiqi chensiqi 0 3月 15 19:27 csfdsf -rw-rw-r--. 1 chensiqi chensiqi 0 3月 14 00:14 test2 -rw-rw-r--. 1 chensiqi chensiqi 4 3月 14 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备份服务器
[blockquote]
注意:由于在项目实战一全网备份里里已经配置过了,所以此处只需要修改一下配置文件
[/blockquote]
第一步:在配置文件/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 ~]# cd /data [root@nfs01 data]# ll 总用量 4 -rw-r--r--. 1 root root 4 3月 15 21:02 aaa [root@nfs01 data]# touch chensiqi #创建 [root@nfs01 data]# ll 总用量 4 -rw-r--r--. 1 root root 4 3月 15 21:02 aaa -rw-r--r--. 1 root root 0 3月 15 21:16 chensiqi [root@nfs01 data]# echo 1111 >> chensiqi #修改 [root@nfs01 data]# ll 总用量 8 -rw-r--r--. 1 root root 4 3月 15 21:02 aaa -rw-r--r--. 1 root root 5 3月 15 21:17 chensiqi [root@nfs01 data]# rm -rf aaa #删除
rsync备份服务器:查看目录同步效果
[root@backup ~]# cd /data [root@backup data]# ll 总用量 4 -rw-r--r--. 1 rsync rsync 5 3月 15 2017 chensiqi [root@backup data]# cat chensiqi 1111 [root@backup data]#