rsync+inotify實現(xiàn)多臺web數(shù)據(jù)動態(tài)同步操作步驟

*背景:由于無存儲共享設(shè)備,web集群中的代碼均存放在本地,最終導(dǎo)致web節(jié)點之間的數(shù)據(jù)無法一致。
*解決辦法:采用rsync+inotify,實現(xiàn)多臺web數(shù)據(jù)動態(tài)同步
*解決思路:比如有a、b、c、d四臺web,為解決哪臺服務(wù)器為源數(shù)據(jù)服務(wù)器,我們在A服務(wù)器上安裝rsync+inotify,然后將一個二級域名指向A服務(wù)器,這樣以后網(wǎng)站編輯、開發(fā)人員之間訪問二級域名進行日常網(wǎng)站更新,A服務(wù)器在檢測到本地有數(shù)據(jù)更新時,便動態(tài)(觸發(fā)式)向其它服務(wù)器發(fā)送更新數(shù)據(jù)。
*注意:一定要使用rsync相同的版本,否則會出現(xiàn)未知錯誤。
*選擇rsync+inotify的理由:在常規(guī)的數(shù)據(jù)同步應(yīng)用案例中,大多數(shù)人會選擇使用rsync來完成數(shù)據(jù)同步,選擇rsync+inotify的理由如下
1、服務(wù)器性能:rsync只能實現(xiàn)定時更新,無論網(wǎng)站有無文件更新,rsync都會按著定時任務(wù)去檢查文件是否有更新,當數(shù)據(jù)文件較大時會使服務(wù)器性能下降;而rsync+inotify
為觸發(fā)式更新,也就是說只有當某個文件發(fā)生改動時才會更新,這樣一來對服務(wù)器性能影響較小。
2、數(shù)據(jù)實時性:如果選擇rsync,每隔多長時間同步一次數(shù)據(jù)是個問題,時間越短,對性能影響就越大。時間太長,用戶/編輯無法接受。采用rsync+inotify可實現(xiàn)實時更新,
當A服務(wù)器文件有更新時,其它服務(wù)器立即更新
*環(huán)境拓撲
A:192.168.1.101
B:192.168.1.102
C:192.168.1.103
D:192.168.1.104
注:數(shù)據(jù)源服務(wù)器為A,目標服務(wù)器為B、C、D
*一、目標服務(wù)器安裝rsync (在B、C、D服務(wù)器上操作,安裝配置均一樣)
*安裝rsync 下載地址:http://rsync.samba.org/
cd /data/software
wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure
make
make install
*安裝完成后顯示信息
mkdir -p /usr/local/bin
/usr/bin/install -c -m 755 rsync /usr/local/bin
mkdir -p /usr/local/share/man/man1
mkdir -p /usr/local/share/man/man5
if test -f rsync.1; then /usr/bin/install -c -m 644 rsync.1 /usr/local/share/man/man1; fi
if test -f rsyncd.conf.5; then /usr/bin/install -c -m 644 rsyncd.conf.5 /usr/local/share/man/man5; fi
*配置rsync
*#vi /etc/rsync.conf 加入如下內(nèi)容
uid = root
gid = root
use chroot = no
max connections = 20
strict modes = yes
log file = /data/logs/rsyncd/rsyncd.log
pid file = /data/logs/rsyncd/rsyncd.pid
lock file = /data/logs/rsyncd/rsync.lock
log format = %t %a %m %f %b
[web]
path = /data/vhosts/it121net/
auth users = username
read only = no
hosts allow = 192.168.1.0/24 #可以是IP段,也可以是IP地址
list = no
uid = root
gid = root
secrets file = /etc/rsync.passwd
ignore errors = yes
*創(chuàng)建目錄,用于存放日志。
mkdir /data/logs/rsyncd
*創(chuàng)建認證
*#vi /etc/rsync.passwd
username:passwd
*#chmod 600 /etc/rsync.passwd
*啟動rsync,啟動后使用netstat查看,會發(fā)現(xiàn)系統(tǒng)已啟動873端口
# rsync --daemon --config=/etc/rsync.conf
*加入開機啟動
# echo "rsync --daemon --config=/etc/rsync.conf" >>/etc/rc.local
*關(guān)閉
killall rsync
*二、源服務(wù)器安裝rsync+inotify (在a服務(wù)器上操作)
*安裝rsync(僅安裝即可,不需配置)
cd /data/software
wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
tar zxvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
./configure
make
make install
*echo "passwd" > /etc/rsync-client.passwd
*chmod 600 /etc/rsync-client.passwd
*安裝inotify 下載地址:https://github.com/rvoicilas/inotify-tools/wiki/
cd /data/software
wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install
*創(chuàng)建啟動腳本
*#vi /etc/rsync-web.sh 加入如下內(nèi)容
#!/bin/sh
SRC=/data/vhosts/it121net/
DES=web
WEB2=192.168.1.102
WEB3=192.168.1.103
WEB4=192.168.1.104
USER=username
/usr/local/bin/inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F
do
rsync -ahqzt --password-file=/etc/rsync-client.passwd --delete $SRC $USER@$WEB2::$DES
rsync -ahqzt --password-file=/etc/rsync-client.passwd --delete $SRC $USER@$WEB3::$DES
rsync -ahqzt --password-file=/etc/rsync-client.passwd --delete $SRC $USER@$WEB4::$DES
done
#注意:網(wǎng)絡(luò)上面大部分都是顯示一個中杠,可能是編碼的事情,實際是應(yīng)該是兩個杠。
*增加權(quán)限
#chmod +x /etc/rsync-web.sh
*啟動腳本
#nohup /etc/rsync-web.sh & //必須使用nohup放入后臺執(zhí)行,否則關(guān)閉終端后此腳本進程會自動結(jié)束
/etc/rsync-web.sh &
*關(guān)閉腳本
sudo pkill rsync
sudo pkill inotifywait
*@ERROR: chdir failed rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]解決辦法
setsebool -P rsync_disable_trans on
*rsync安裝路徑(注意查看)
/usr/bin/rsync
/usr/local/bin/rsync
/etc/xinetd.d/rsync
相關(guān)文章
Fedora Linux 42 穩(wěn)定版發(fā)布: 帶來大量新功能和軟件更新
Fedora 42昨日發(fā)布,這是 Red Hat 贊助開發(fā)的杰出前沿 Linux 發(fā)行版的最新版,包含大量新功能和軟件更新,使其成為 2025 年上半年發(fā)布的一款出色的 Linux 操作系統(tǒng)之一,內(nèi)2025-04-16如何在Linux查看硬盤信息? 查看Linux硬盤大小類型和硬件信息的5種方法
使用Linux系統(tǒng)的過程中,查看和了解硬盤信息是非常重要的工作,尤其是對于系統(tǒng)管理員而言,那么在Linux系統(tǒng)中如何查看硬盤信息?以下是具體內(nèi)容介紹2025-03-12如何在 Linux 中查看 CPU 詳細信息? 3招輕松查看CPU型號、核心數(shù)和溫度
在日常運維工作中,獲取 CPU 信息是系統(tǒng)運維管理員常見的工作內(nèi)容,無論是為了性能調(diào)優(yōu)、硬件升級還是僅僅滿足好奇心2025-03-11什么是 Arch Linux? 獨樹一幟的Arch Linux發(fā)行版分析
Arch Linux是為簡化,優(yōu)化,現(xiàn)代化,實用主義,用戶中心和多功能性而創(chuàng)建Linux發(fā)行版,究竟是什么讓 Arch 與眾不同?下面我們就來簡要解讀2025-02-19如何在Linux環(huán)境下制作 Win11裝機U盤?
一直用的linux辦公,想要將筆記本電腦從 Linux 系統(tǒng)切換回 Windows 11,我們可以制作一個win11裝機u盤,詳細如下2025-02-17Rsnapshot怎么用? 基于Rsync的強大Linux備份工具使用指南
Rsnapshot 不僅可以備份本地文件,還能通過 SSH 備份遠程文件,接下來詳細介紹如何安裝、配置和使用 Rsnapshot,包括創(chuàng)建每小時、每天、每周和每月的本地備份,以及如何進2025-02-06Linux Kernel 6.13發(fā)布:附更新內(nèi)容及新特性解讀
Linux 內(nèi)核 6.13 正式發(fā)布,新版本引入了惰性搶占支持,簡化內(nèi)核搶占邏輯,通過減少與調(diào)度器相關(guān)的調(diào)用次數(shù),讓內(nèi)核在運行時表現(xiàn)更優(yōu),從而提高效率2025-01-23五大特性引領(lǐng)創(chuàng)新! 深度操作系統(tǒng) deepin 25 Preview預(yù)覽版發(fā)布
今日,深度操作系統(tǒng)正式推出deepin 25 Preview版本,該版本集成了五大核心特性:磐石系統(tǒng)、全新DDE、Treeland窗口合成器、AI For OS以及Distrobox子系統(tǒng)2025-01-18Linux Mint Xia 22.1重磅發(fā)布: 重要更新一覽
Beta 版 Linux Mint“Xia” 22.1 發(fā)布,新版本基于 Ubuntu 24.04,內(nèi)核版本為 Linux 6.8,這次更新帶來了諸多優(yōu)化和改進,進一步鞏固了 Mint 在 Linux 桌面操作系統(tǒng)領(lǐng)域的2025-01-16LinuxMint怎么安裝? Linux Mint22下載安裝圖文教程
Linux Mint22發(fā)布以后,有很多新功能,很多朋友想要下載并安裝,該怎么操作呢?下面我們就來看看詳細安裝指南2025-01-16