場景: 主從服務器項目文件實時雙向同步(參考:http://www.xcx1024.com/ArtInfo/3026389.html)
一.rsync安裝
yum在線: yum install -y rsync 離線: cd /usr/local wget https://download.samba.org/pub/rsync/src/rsync-3.1.2.tar.gz tar -zxvf rsync-3.1.2.tar.gz cd rsync-3.1.2 ./configure --prefix=/usr/local/rsync make make install
二. 創建rsync配置文件
yum在線: vi /etc/rsyncd.conf 離線: vi /usr/local/rsync/rsyncd.conf
配置文件內容:
#rsync通用配置文件,配置的注釋不要寫在配置后面,否則會有問題 uid = root gid = root use chroot = 0 port = 873 #允許ip訪問設置,請根據實際需要進行配置,這里為了方便設為全網段 * # hosts allow = 192.168.0.1/255.255.255.0 198.162.145.1 10.0.1.0/255.255.255.0 hosts allow = * max connections = 0 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log log format = %t %a %m %f %b transfer logging = yes syslog facility = local3 #方括號中為模塊聲明,對應命名,這里master_web對應了主web機配置 [master_web] #指定當前模塊在rsync服務器上的同步路徑,該參數是必須指定的 path = /app/web/data-share/static/ #注釋,可以同模塊名一樣,從服務器可都為slave_web comment = master_web ignore errors #是否允許客戶端上傳文件 read only = no list = no #指定由空格或逗號分隔的用戶名列表,只有這些用戶才允許連接該模塊 auth users = rsync #保存密碼和用戶名文件,需要自己生成 secrets file = /etc/rsyncd.passwd
三. 創建用戶名密碼文件
yum在線: vi /etc/rsyncd.passwd vi /root/rsyncd.passwd 離線: vi /usr/local/rsync/rsyncd.passwd vi /root/rsyncd.passwd
文件內容:
#/etc/rsyncd.passwd中內容格式 用戶名:密碼 ,兩台服務器設置相同的用戶名密碼 rsync:123456 #/root/rsyncd.passwd中內容只需要填寫從服務器的密碼,兩台服務器設置相同的密碼 123456
四.給文件賦權限
Yum在線: chmod 600 /etc/rsyncd.passwd chmod 600 /root/rsyncd.passwd 離線: chmod 600 /usr/local/rsync/rsyncd.passwd chmod 600 /root/rsyncd.passwd
五.以守護進程方式啟動rsync服務
Yum在線: /usr/bin/rsync --daemon --config=/etc/rsyncd.conf 離線: /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
六.添加開啟自啟動
yum在線: echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf">>/etc/rc.local 離線: echo "/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf">>/etc/rc.local
七. 驗證是否可以手動同步
# master_web 為從web服務器的 rsyncd.conf 中配置的模塊名,
# rsync 為從web服務器的中 rsyncd.passwd 中配置的用戶名
78服務器給79服務器同步:
rsync -vzrtopg --delete --progress /usr/local/data-share/static/ rsync@xx.xx.xx.79::master_web --password-file=/root/rsyncd.passwd
定時任務:
echo '*/1 * * * * rsync -vzrtopg --delete --progress /usr/local/data-share/static/ rsync@xx.xx.xx.79::master_web -- password-file=/root/rsyncd.passwd > /dev/null 2>&1 &' >> /var/spool/cron/root
79服務器給78服務器同步:
rsync -vzrtopg --delete --progress /usr/local/data-share/static/ rsync@xx.xx.xx.78::master_web --password-file=/root/rsyncd.passwd
定時任務:
echo '*/1 * * * * rsync -vzrtopg --delete --progress /usr/local/data-share/static/ rsync@xx.xx.xx.78::master_web --password-file=/root/rsyncd.passwd > /dev/null 2>&1 &' >> /var/spool/cron/root
八.安裝inotify
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz --no-check-certificate tar -zxvf inotify-tools-3.14.tar.gz makedir /usr/local/inotify cd inotify-tools-3.14.tar.gz ./configure --prefix=/usr/local/inotify make && make install
# 查看是否安裝成功
ls -alh /usr/local/inotify/bin/inotify*
# 建立軟連接
ln -s /usr/local/inotify/bin/inotifywait /usr/bin/inotifywait
ln -s /usr/local/inotify/bin/inotifywatch /usr/bin/inotifywatch
九.創建並配置inotify_back.sh
vi /usr/local/inotify/inotify_back.sh
配置文件內容:
78服務器:
#!/bin/bash src=/app/web/data-share/static/ /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read file do rsync -vzrtopg --delete --progress /usr/local/data-share/static/ rsync@172.20.14.79::master_web --password-file=/root/rsyncd.passwd echo "${file} was rsynced" >> /tmp/rsync.log 2>&1 done
79服務器:
#!/bin/bash src=/app/web/data-share/static/ /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read file do rsync -vzrtopg --delete --progress /usr/local/data-share/static/ rsync@172.20.14.78::master_web --password-file=/root/rsyncd.passwd echo "${file} was rsynced" >> /tmp/rsync.log 2>&1 done
十.給inotify_back.sh腳本賦予可執行權限
chmod +x inotify_back.sh
十一.運行inotify_back.sh同步監控腳本和配置守護進程
nohup ./inotify_back.sh & #建立守護進程運行inotify_back.sh腳本 echo "nohup ./inotify_back.sh &" >> /etc/rc.local
注意點:
l 開放873端口
l 創建同步用戶(useradd rsync , 並配置密碼passwd rsync)