lsyncd+rsync配置图片双向同步

需求:为保证国内外图片加载速度,国内请求上传图片资源地址阿里云oss,国外请求上传图片资源地址aws s3,为保证图片资源的一致性,需定时进行oss和s3图片双向同步

调研方案:由于之前配置过inotify+rsync,计划通过该方案解决,但这种方案在图片资源量级较大时,并不能做到实时同步,而且inotify 存在性能问题,参考网上几种方案对比,故决定采用lsyncd+rsync。

lsyncd简介:

Lsyncd watches a local directory trees event monitor interface (inotify or fsevents). It aggregates and combines events for a few seconds and then spawns one (or more) process(es) to synchronize the changes. By default this is rsync. 
Lsyncd is thus a light-weight live mirror solution that is comparatively easy to install not requiring new filesystems or block devices and does not hamper local filesystem performance. Lsyncd监听本地文件系统事件监控接口(inotify或fsevents)。它将若干秒内的事件聚合,然后触发一个或多个进程以同步变更。默认的同步手段是rsync。
Lysncd是一个轻量级、易安装的同步方案,它不需要新的文件系统或块设备,也不会影响本地文件系统性能。

lsyncd的安装配置:

源端配置

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # 安装 epel 源
yum -y install lsyncd rsync # 安装
mkdir /etc/lsyncd ; vim /etc/lsyncd/lsyncd.conf #配置

settings {
    -- 日志文件存放位置
    logfile ="/var/log/lsyncd/lsyncd.log",
    -- 监控目录状态文件的存放位置
    statusFile ="/var/log/lsyncd/lsyncd.status",
    -- 指定要监控的事件,如,CloseWrite,Modify,CloseWrite or Modify
    inotifyMode = "CloseWrite or Modify",
    -- 指定同步时进程的最大个数
    maxProcesses = 10,
    -- 隔多少秒记录一次被监控目录的状态
    statusInterval = 10,
    -- false=启用守护模式
    nodaemon = false,
    -- 当事件被命中累计多少次后才进行一次同步(即使间隔低于statusInterval)
    maxDelays = 20
}
sync {
    -- lsyncd运行模式
    -- default.direct=本地目录间同步
    -- default.rsync=使用rsync
    -- default.rsyncssh=使用rsync的ssh模式
    default.rsync,
    -- 同步的源目录
    source = "/test",
    -- 同步的目标目录
    target = "rsync://rsync@xxxx:873/rsync_test0",
    -- 是否同步删除 true=同步删除 false=增量备份
    delete = false,
    -- 排除同步文件
    exclude = { "dir*" },
    -- 等待rsync同步延时时间(秒)
    delay = 10,
    -- init=false则只同步lsyncd启动后变更,不设置则lsyncd启动后进行全量的同步
    --init = True,
    rsync  = {
#单位kb bwlimit=1000, binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true, perms = true, -- rsync的用户密码,不是Linux系统的用户密码 password_file = "/etc/lsyncd/rsync.passwd" } }

创建秘钥文件:

echo "4V6bXyY7MCchEZ2hRq" > /etc/lsyncd/rsync.passwd ; chmod 600 /etc/lsyncd/rsync.passwd

目标端配置

yum -y install rsync

mkdir /var/rsync && mkdir /etc/rsync



 

猜你喜欢

转载自www.cnblogs.com/imcati/p/10774194.html