sersync+rsync同步不同主机之间数据

sersync应用场景

如果后端有多台web服务器(如LVS),当我们升级程序或更新文件,需要每台服务器或目录都要更新,繁琐也容易出问题,这时可采用rsync+inotify方式实现文件的触发更新。原理是采用inotify对文件进行监控,当监控到文件发生改变,就调用rsync远程同步。

 

Sersync简介

Sersync利用inotifyrsync对服务器进行实时同步,其中inotify用于监控文件系统事件,rsync是目前广泛使用的同步算法,其优点是只对变动的部分进行操作,其优势大于挂接文件系统方式进行镜像同步。sersync是金山维护的一个开源项目,基于inotify+rsync进行二次开发,目前在国内使用较多。

 

Sersync特性

  • 使用c++编写,只同步发生更改的文件,更加节约时间、带宽

  • 使用多线程进行同步,能保证多个服务器实时保持同步状态

  • 自带出错处理机制,通过失败队列对出错文件重新同步

  • 自带crontab功能,在xml配置文件中开启,即可隔一段时间整体同步一次

 

案例演示:

192.168.1.5/www/mingxiao数据同步到192.168.1.6中的/www/mingxiao

 

安装sersyncinotifyssh连接192.168.1.5

# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/sersync
# cd /usr/local/sersync

 

配置sersync配置文件confxml.xml 

<head version="2.5">
    <host hostip="192.168.1.5" port="8008"></host>#ip
及端口号
.......
<sersync>
        <localpath watch="/www/mingxiao">      #监控的目录
            <remote ip="192.168.1.6" name="xiaoming"/>  #同步至哪台主机,及验证的用户
        </localpath>
        <rsync>
            <commonParams params="-zrtopg"/>   #rsync参数
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <auth start="true" users="xiaoming" passwordfile="/etc/rsync.pass"/>
        </rsync>   #验证的用户,及口令文件
        <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->  #错误日志
        <crontab start="true" schedule="300"><!--600mins-->  #crontab,多久整体同步一次
.......

 

编辑 /etc/rsync.pass,添加以下内容,内容为xiaoming用户密码,权限必须为600

 xiaoming

#chmod 600 /etc/rsync.pass

 

ssh连接至192.168.1.6

新增用户,设置密码为xiaoming

# useradd xiaoming
# echo xiaoming | passwd --stdin xiaoming

 

rsync提供配置文件,编辑/etc/rsyncd.conf

uid=nobody
gid=nobody
use chroot = no
max connections =10
strict modes = yes
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[xiaoming]
path = /www/mingxiao
comment = xiaoming file
ignore errors
read only = no
write only = no
host allow = 192.168.1.5
list = false
uid = root
gid = root
auth user = xiaoming
secrets file = /etc/server.pass

 

rsync可以独立守护进程方式工作,也可以以超级守护进程方式工作,这里以超级守护进程方式工作

# chkconfig rsync on
# service xinetd start

 

Ssh连接到192.168.1.5

开始同步

  
# /usr/local/sersync/sersync2 -r -o /usr/local/sersync/confxml.xml -n 5 -d

 

sersync命令参数

 -r  在开启实时监控前对监控的目录完成一次实时同步

 -d  以守护进程方式进行工作

 -n  指定开启守护线程数,默认为10

 -o  指定配置文件

 -m  单独启用其他模块,

     -m refreshCDN 开启刷新CDN模块

     -m socket     开启socket模块

     -m http       开启http模块


你可能感兴趣的:(rsync,inotify,sesync)