利用Rsync服務讓SLB下多台centos服務器文件同步更新
因為易淘幫使用了SLB負載均衡,為了保證SLB下兩台服務器下面的網站文件同步,易淘幫采用了rsync服務進行同步,並進行了每三分鍾同步一次。根據這樣操作可以完美的使用slb服務,實現負載均衡、容災恢復。
一. 介紹
rsync – remote synchronize是類unix系統下的數據鏡像備份工具,它的特性如下:
- 可以鏡像保存整個目錄樹和文件系統。
- 可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。
- 無須特殊權限即可安裝。
- 快速:第一次同步時rsync會復制全部內容,但在下一次只傳輸修改過的文件。rsync在傳輸數據的過程中可以實行壓縮及解壓縮操作,因此可以使用更少的帶寬。
- 安全:可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。
- 支持匿名rsync 同步文件,是理想的鏡像工具。
二. 安裝
檢測是否安裝rsync服務rpm -qa|grep rsync
服務端和客戶端安裝rsyncyum -y install rsync
也可以源碼安裝
rsync下載地址:http://rsync.samba.org/
`./configure
make && make install`
我們將SLB下面兩台服務器分為服務器A與服務器B,服務器A為主服務器,但是需要注意的是必須在服務器A(100.xxx.xxx.1)和 B(100.xxx.xxx.2)上都安裝rsync,其中A服務器上是以服務器模式運行rsync,而B上則以客戶端方式運行rsync。這樣在web 服務器A上運行rsync守護進程,在B上定時運行客戶程序來備份web服務器A上需要備份的內容。
三. 服務器A配置
vi /etc/rsyncd.conf #根據你自己的rsyncd.conf文件所以目錄而定 #[globale] strict modes = yes port = 873 uid = root gid = root user chroot = no max connections = 5 #同時的最大連接數 timeout = 600 pid file = /var/run/rsyncd.pid #進程的pid存放文件位置 lock file = /var/run/rsyncd.lock #lock文件位置 log file = /var/log/rsyncd.log #日志文件位置 [eeetb.com-rsyncd] #建立一個備份名,服務器B通過該名稱指定具體的備份位置,可自定義 path=/home/wwwroot #備份文件存放的目錄位置 ignore errors read only = no list = no hosts allow = 100.xxx.xxx.2 #允許服務器B地址,如果是內網可以使用內網IP auth users = root #允許那些用戶,這里的用戶test的信息存放在/etc/rsyncd.password secrets file = /etc/rsyncd.password #指定允許的用戶和用戶密碼
建立用戶密碼文件:
`vi /etc/rsyncd.password
root:123456 #允許的用戶和密碼`
修改防火牆策略,允許873端口(tcp/udp)
`vi /etc/sysconfig/iptables #加入下面的規則
-A INPUT -s 100.xxx.xxx.2 -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT #授權B服務器訪問A服務器873端口`
啟動服務器端
`/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
添加rsyncd開機自啟動
echo '/usr/bin/rsync --daemon --config=/etc/rsyncd.conf' >> /etc/rc.local`
四. 服務器B配置
vi /etc/rsyncd.password
123456 #服務器A設置的密碼 chmod 600 /etc/rsyncd.password #需要將密碼文件權限設置為600,否者會出現password file must not be other-accessible錯誤 /usr/bin/rsync -avzP --delete --progress --password-file=/etc/rsyncd.password root@100.xxx.xxx.1::eeetb-rsync /home/wwwroot
設置每天自動同步任務
crontab -e #(可以定時每三分鍾同步一次文件)加入下方內容 */3 * * * * /usr/bin/rsync -avzP --delete --progress --exclude=排除的不需同步目錄 --password-file=/etc/rsyncd.password root@100.xxx.xxx.1::eeetb-rsync /home/wwwroot > /dev/null 2>&1
重新修改一下每天同步任務,修復原任務無法同步問題。