通常web站點爲了提升可用性都會使用多臺服務器配置負載均衡, 但若是站點須要上傳附件的話就會遇到一個問題, 上傳到服務器內的附件如何可以讓兩臺服務器都訪問的到?html
通常狀況咱們能夠用這些方法:git
本文主要針對最後一種,直接存儲在服務器本地磁盤的方式來講明。github
lsyncd 是一個支持實時、雙向、多機器的多模式文件同步工具。 使用 Lua 語言封裝,採用 Linux 內核(2.6.13 及之後)的 inotify 觸發機制,而後經過 rsync 作差別同步,達到實時的效果。web
爲何咱們不直接使用rsync作文件同步,而要使用lsyncd呢? 這就要說如下lsyncd的主要特色:bash
lsync支持使用多種協議傳輸文件,本文只列舉其中一種。服務器
安裝其實很簡單隻須要使用yum網絡
yum install -y epel-release
#安裝
yum install -y rsync lsyncd
複製代碼
#默認lsyncd配置文件路徑
/etc/lsyncd.conf
#默認lsyncd日誌路徑,使用yum安裝會自動配置日誌截斷,不須要額外干預
/var/log/lsyncd/lsyncd.log
#默認的rsync路徑
/etc/rsyncd.conf
#默認的rsync日誌路徑
/var/log/messages
複製代碼
在兩臺服務器上修改rsyncd配置, 在rsync配置內新增一個area,受權指定ip或者網段的設備進入指定路徑讀寫 hosts allow配置兩臺服務器對方的ip 具體的配置項說明詳見:download.samba.org/pub/rsync/r…負載均衡
#cat /etc/rsyncd.conf
uid = root
gid = root
use chroot = yes
max connections = 10
pid file = /var/run/rsyncd.pid
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 *.xz
[ops]
path = /root/ops
ignore errors
read only = no
hosts allow = 192.168.0.1 192.168.0.2
hosts deny = *
複製代碼
配置lsyncd.conf,一樣分別在兩臺服務器上作配置,其中的target須要配置對方的ip 配置項說明詳見:axkibe.github.io/lsyncd/manu…ssh
# cat /etc/lsyncd.conf
----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync, but executing moves through on the target.
--
-- For more examples, see /usr/share/doc/lsyncd*/examples/
--
settings {
logfile ="/var/log/lsyncd/lsyncd.log",
statusFile ="/var/log/lsyncd/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 7,
nodaemon = false,
insist = true
}
sync {
default.rsync,
source = "/root/ops/",
target = "192.168.0.11::cs-conf-ops/",
delete= "running",
exclude = {
".*"
},
delay = 0,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = false,
verbose = true
}
}
複製代碼
systemctl start rsyncd
systemctl start lsyncd
systemctl enable lsyncd
systemctl enable rsyncd
複製代碼
能夠在其中一臺服務器建立或者修改一個文件,看看另一臺有沒有作出相應的變更工具