lsyncd實時同步搭建指南

lsyncd實時同步搭建指南css

 

須要被同步服務器:tomcat

一、安裝lsyncd服務器

#yum install -y lsyncdapp


二、配置文件 lsyncd.confssh

settings {
logfile ="/var/log/lsyncd.log",
statusFile ="/var/run/lsyncd.status",
inotifyMode = "CloseWrite",
maxProcesses = 2,
nodaemon =false
}
socket

-- III. 遠程目錄同步,rsync模式 + rsyncd daemon
sync {
default.rsync,
source = "/opt/app_test", ---須要被同步目錄
target = "tomcat@10.28.11.156::PensionService", ---同步目標服務器
delete="running",
exclude = { ".*", ".tmp","log" },
delay = 0,
init = false,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsyncd.passwd",
_extra = {"--bwlimit=200"}
}
}優化


-- V. 遠程目錄同步,rsync模式 + rsyncssh,效果與上面相同
sync {
default.rsyncssh,
source = "/opt/app_test3",
host = "10.28.11.156",
targetdir = "/opt/app_test3",
excludeFrom = "/etc/rsync_exclude.lst",
-- maxDelays = 5,
delay = 0,
-- init = false,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
_extra = {"--bwlimit=2000"},
},
ssh = {
port = 22080
}
}

啓動lsyncd服務:ui

#service lsyncd start 日誌


同步目標目標服務器:server

須要配置Rsync服務:

#yum install -y xinetd

修改:/etc/xinetd.d/rsync

service rsync
{
disable = no ##---yes 改 no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}


rsync配置文件:/etc/rsyncd.conf

uid=root
gid=root
use chroot=no
pid file=/var/run/rsync.pid
max connections=10
lock file=/var/run/rsync.lock
log file=/var/log/rsync.log
motd file=/etc/rsyncd.motd
secrets file=/etc/rsyncd.secrets
hosts allow=10.28.11.156 127.0.0.1 10.28.11.117
auth users=tomcat

[PensionService]
path=/opt/app_test
comment=app_test file
read only=false
list=false

備註:tomcat用戶須要對/opt/app_test 目錄寫權限

/etc/rsyncd.secrets
tomcat:4zbSsBORKZPPo

#chmod 600 /etc/rsyncd.secrets

啓動rsync

#service xinetd start


備註: 當使用最後一種模式同步文件時,兩臺服務器須要免密碼登錄設置。

 


lsyncd.conf配置選項說明

settings

裏面是全局設置,--開頭表示註釋,下面是幾個經常使用選項說明:

logfile 定義日誌文件
stausFile 定義狀態文件
nodaemon=true 表示不啓用守護模式,默認
statusInterval 將lsyncd的狀態寫入上面的statusFile的間隔,默認10秒
inotifyMode 指定inotify監控的事件,默認是CloseWrite,還能夠是Modify或CloseWrite or Modify
maxProcesses 同步進程的最大個數。假如同時有20個文件須要同步,而maxProcesses = 8,則最大能看到有8個rysnc進程
maxDelays 累計到多少所監控的事件激活一次同步,即便後面的delay延遲時間還未到

sync

裏面是定義同步參數,能夠繼續使用maxDelays來重寫settings的全局變量。通常第一個參數指定lsyncd以什麼模式運行:rsync、rsyncssh、direct三種模式:

default.rsync :本地目錄間同步,使用rsync,也能夠達到使用ssh形式的遠程rsync效果,或daemon方式鏈接遠程rsyncd進程;
default.direct :本地目錄間同步,使用cp、rm等命令完成差別文件備份;
default.rsyncssh :同步到遠程主機目錄,rsync的ssh模式,須要使用key來認證
source 同步的源目錄,使用絕對路徑。
target 定義目的地址.對應不一樣的模式有幾種寫法:
/tmp/dest :本地目錄同步,可用於direct和rsync模式
172.29.88.223:/tmp/dest :同步到遠程服務器目錄,可用於rsync和rsyncssh模式,拼接的命令相似於/usr/bin/rsync -ltsd --delete --include-from=- --exclude=* SOURCE TARGET,剩下的就是rsync的內容了,好比指定username,免密碼同步
172.29.88.223::module :同步到遠程服務器目錄,用於rsync模式

三種模式的示例會在後面給出。
init 這是一個優化選項,當init = false,只同步進程啓動之後發生改動事件的文件,原有的目錄即便有差別也不會同步。默認是true
delay 累計事件,等待rsync同步延時時間,默認15秒(最大累計到1000個不可合併的事件)。也就是15s內監控目錄下發生的改動,會累積到一次rsync同步,避免過於頻繁的同步。(可合併的意思是,15s內兩次修改了同一文件,最後只同步最新的文件)
excludeFrom 排除選項,後面指定排除的列表文件,如excludeFrom = "/etc/lsyncd.exclude",若是是簡單的排除,可使用exclude = LIST。

這裏的排除規則寫法與原生rsync有點不一樣,更爲簡單:
監控路徑裏的任何部分匹配到一個文本,都會被排除,例如/bin/foo/bar能夠匹配規則foo
若是規則以斜線/開頭,則從頭開始要匹配所有
若是規則以/結尾,則要匹配監控路徑的末尾
?匹配任何字符,但不包括/
*匹配0或多個字符,但不包括/
**匹配0或多個字符,能夠是/
delete 爲了保持target與souce徹底同步,Lsyncd默認會delete = true來容許同步刪除。它除了false,還有startup、running值,請參考 Lsyncd 2.1.x ‖ Layer 4 Config ‖ Default Behavior。

rsync

(提示一下,delete和exclude原本都是rsync的選項,上面是配置在sync中的,我想這樣作的緣由是爲了減小rsync的開銷)

bwlimit 限速,單位kb/s,與rsync相同(這麼重要的選項在文檔里居然沒有標出)
compress 壓縮傳輸默認爲true。在帶寬與cpu負載之間權衡,本地目錄同步能夠考慮把它設爲false
perms 默認保留文件權限。

其它rsync的選項
其它還有rsyncssh模式獨有的配置項,如host、targetdir、rsync_path、password_file,見後文示例。rsyncOps={"-avz","--delete"}這樣的寫法在2.1.*版本已經不支持。
lsyncd.conf能夠有多個sync,各自的source,各自的target,各自的模式,互不影響。

2.3 啓動lsyncd
使用命令加載配置文件,啓動守護進程,自動同步目錄操做。

lsyncd -log Exec /usr/local/lsyncd-2.1.5/etc/lsyncd.conf

相關文章
相關標籤/搜索