【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 314 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 314 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 315 19:27 csfdsf
-rw-rw-r--. 1 chensiqi chensiqi 0 314 00:14 test2
-rw-rw-r--. 1 chensiqi chensiqi 4 314 00:14 test.txt
[root@web01 www]# touch 11111
[root@web01 www]# ll
總用量 4
-rw-r--r--. 1 chensiqi chensiqi 0 315 19:34 11111
-rw-r--r--. 1 chensiqi chensiqi 0 315 19:27 csfdsf
-rw-rw-r--. 1 chensiqi chensiqi 0 314 00:14 test2
-rw-rw-r--. 1 chensiqi chensiqi 4 314 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
# 可讀可寫(truefalse
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]# 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM