1. 程式人生 > >基於RHEL6使用rsync構建映象網站

基於RHEL6使用rsync構建映象網站

概述

1rsyncRemote Sync遠端同步)

是一款開源的快速備份工具,可以在不同主機間映象同步資料,支援本地複製,或與其他SSHrsync主機同步,rsync應用廣泛,大多數Linux都將其作為預設元件已安裝。

2、組成

①發起端:負責發起rsync同步操作的客戶機

②備份源:負責響應來自客戶機rsync同步操作的伺服器,可以是SSH備份源或rsync備份源

3、同步方式

①下行同步:備份源負責提供文件的原始位置;發起端應對該位置有讀取許可權

②上行同步:備份源負責提供文件的目標位置;發起端應對該位置有寫入許可權

4inotify機制

Linux核心從2.6.13

開始提供inotify機制,可以監控檔案系統的變動情況作出通知響應,如可以針對目錄或檔案的變化及時作出響應

②使用rsync工具與inotify機制相結合,可實現觸發式實時同步

inotify機制由核心提供,主要做本機監控,因此更適合上行同步

④輔助工具:inotify-tools

inotifywait:用於持續監控,實時輸出結果

inotifywatch:用於短期監控,任務完成後再出結果

 

實驗環境:

Snip20181118_1.png

搭建兩臺WEB伺服器以實現負載均衡,因此兩臺伺服器的網站文件內容必須相同,使用rsync進行遠端同步,需要結合inotify機制實現觸發式的上行同步,保持兩個站點內容一致。

伺服器A192.168.4.254,作為rsync發起端,/var/www/html為原始位置

伺服器B192.168.4.100,作為遠端SSH伺服器,/var/www/html為目標位置

注:兩臺伺服器都需要安裝配置Apache,請自行解決

 

一、配置SSH備份源(伺服器B

1、建立備份使用者rput,準備目錄/var/www/html

useradd rput

passwd rput

mkdir –p /var/www/html         -----安裝Apache時也會自動建立此目錄

2、將目錄

/var/www/html屬主改為rput,並設定ACL允許使用者daemon寫入

chown -R rput:rput /var/www/html

setfacl -R -m user:daemon:rwx /var/www/html

setfacl -R -m default:user:daemon:rwx /var/www/html

getfacl /var/www/html

3、配置並啟用sshd服務,允許rput使用者登陸

vi /etc/ssh/sshd_config

  allowusers rput

service sshd restart

 

二、使用rsync備份工具(伺服器A

1、建立備份使用者tom,建立目錄/var/www/html,並新增測試網頁檔案

useradd tom

passwd tom

echo "welcome to benet." >  /var/www/html/index.html

2、將目錄/var/www/html屬主改為tom,並設定ACL允許使用者daemon寫入

chown -R tom:tom /var/www/html

setfacl -R -m user:daemon:rwx /var/www/html

setfacl -R -m default:user:daemon:rwx /var/www/html

getfacl /var/www/html

3、由tom使用者建立SSH金鑰對,並將金鑰短語設為空,實現無互動登陸

su – tom

ssh-keygen -t rsa

4、將tom使用者公鑰分發給伺服器Brput使用者,並驗證登陸

ssh-copy-id [email protected]

ssh [email protected]

注:①ssh-copy-id命令可以把本地的ssh公鑰檔案安裝到遠端主機對應的賬戶下

    ②也可使用scp命令將公鑰檔案拷貝至伺服器,再匯入到儲存金鑰的檔案中

    ③例scp  ~/.ssh/id_rsa.pub  [email protected]:/tmp

        cat /tmp/id_rsa.pub >> /home/rput/.ssh/authorized_keys

5、使用rsync做上行同步

rsync -az --delete /var/www/html/   [email protected]:/var/www/html/

6、在伺服器B檢視同步的情況

ls /var/www/html

 

注:rsync命令的用法

①基本格式:rsync [選項] 原始位置 目標位置

②常用選項:

-a:歸檔模式,遞歸併保留物件屬性,等同於 -rlptgoD

-v:顯示同步過程的詳細(verbose)資訊

-z:在傳輸檔案時進行壓縮(compress

-H:保留硬連線檔案

-r:遞迴模式,包含目錄及子目錄中所有檔案

-l:對於符號連結檔案仍然複製為符號連結檔案

-p:保留檔案的許可權標記

-t:保留檔案的時間標記

-g:保留檔案的屬組標記(僅超級使用者使用)

-o:保留檔案的屬主標記(僅超級使用者使用)

-D:保留裝置檔案及其他特殊檔案

--delete:刪除目標位置有而原始位置沒有的檔案

--checksum:根據物件的校驗和來決定是否跳過檔案

 

三、通過inotify機制實現實時同步(伺服器A

1、安裝inotify-tools軟體包,以便使用inotifywaitinotifywatch工具

tar zxf inotify-tools-3.14.tar.gz -C /usr/src/

cd /usr/src/inotify-tools-3.14/

./configure

make && make install

2、編寫指令碼,根據inotifywait監控結果觸發rsync同步操作

su - tom                    -------切換為備份使用者tom

vi  rputsync.sh

Snip20181118_2.png

chmod a+x rputsync.sh

注:inotifywait常用選項

-m 持續進行監控

-r 遞迴監控所有子物件

-q 簡化輸出資訊

-e 指定要監控哪些事件型別,如modifycreatemovedelete

 

3、執行指令碼,修改/var/www/html目錄內容,驗證同步效果

su - tom             ------必須以tom身份執行指令碼

./rputsync.sh

cd /var/www/html

touch a b c

在目標位置(伺服器B)檢視同步的情況

ls /var/www/html

 

補充:配置rsync備份源

1、建立/etc/rsyncd.conf配置檔案

vi /etc/rsyncd.conf

Snip20181118_3.png

2、建立賬戶資料檔案

vi /etc/rsyncd_users.db

backuper:123

chmod 600 /etc/rsyncd_users.db

3、啟動rsync服務程式

rsync –daemon

netstat -anptu | grep rsync

vi /etc/xinetd.d/rsync

       disable = no

yum –y install xinetd

service xinetd start