目錄
- 【NFS項目實戰二】NFS共享數據的時時同步推送備份
【NFS項目實戰二】NFS共享數據的時時同步推送備份
標簽(空格分隔): Linux服務搭建-陳思齊
---本教學筆記是本人學習和工作生涯中的摘記整理而成,此為初稿(尚有諸多不完善之處),為原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章原始出處,作者信息和本聲明。否則將追究法律責任。http://www.cnblogs.com/chensiqiqi/
前言
《項目實戰》系列為《linux實戰教學筆記》第二階段內容的同步教學配套實戰練習,每個項目循序銜接最終將組成《Linux實戰教學筆記》第二階段核心教學目標10台規模的基礎核心服務架構集群。本文上接http://www.cnblogs.com/chensiqiqi/p/6531003.html 項目實戰一
企業案例
公司有兩台web服務器一直在對外提供服務,但隨着業務的發展用戶越來越多,網站的功能也越來越強大,各種圖片,視頻等占用硬盤空間越來越大。於是,領導將web服務器的數據直接存儲到NFS服務器上作為存儲使用;並且為了防止NFS服務器發生單點故障,領導希望將web服務器存儲的內容實時同步到Rsync備份服務器上。現在由你來計划完成領導的需求。
具體要求如下:
- [x] NFS服務器的要求如下:
- 服務器的共享目錄名為/data目錄;
- 權限要求只能內網網段訪問且可讀可寫,時時同步;
- 為了方便管理人員管理,需要指定NFS虛擬賬戶為chensiqi,uid=12306,gid=12306
- 所有訪問者的身份都壓縮為最低身份
- 將/data目錄里的內容同步時時推送到備份服務器的/data目錄里(inotify+rsync)
- [x] web服務器將NFS共享目錄統一掛載到/var/html/www目錄下
環境准備
系統版本
[root@nfs01 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
內核參數
[root@nfs01 ~]# uname -r
2.6.32-642.el6.x86_64
主機網絡參數設置
| 主機名 | 外網網卡 | 內網網卡 | 用途 |
|---|---|---|---|
| web02 | 10.0.0.7/24 | 172.16.1.7/24 | B1-apache web服務器 |
| web01 | 10.0.0.8/24 | 172.16.1.8/24 | B2-nginx web服務器 |
| nfs01 | 10.0.0.31/24 | 172.16.1.31/24 | C1-NFS存儲服務器 |
| backup | 10.0.0.41/24 | 172.16.1.41/24 | C2-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備份服務器
注意:由於在項目實戰一全網備份里里已經配置過了,所以此處只需要修改一下配置文件
第一步:在配置文件/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]#
