文档章节

Sersync服务器同步

lee_ypp
 lee_ypp
发布于 2014/07/24 09:24
字数 1383
阅读 172
收藏 8

Sersync服务器同步

系统环境: RHEL6 x86_64

主服务器:server1 192.168.2.68

目标服务器:station1 192.168.2.27

条件:iptables关,selinux关

软件下载:http://code.google.com/p/sersync/

 sersync主要用于服务器同步,web镜像等功能。基于boost1.43.0,inotify api,rsync command.开发。目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是:

● sersync是使用c++编写,而且对linux系统文 件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。 因此更快。

●相比较上面两个项目,sersync配置起来很简单,其中bin目录下 已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。

●另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状 态。

●本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则 每10个小时对同步失败的文件重新同步。

●本项目自带crontab功能,只需在 xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。

●本项目socket与http插件扩展,满足您二次开发的需要。

1. 配置同步目标服务器rsync

yum install rsync -y

在目标服务器上配置如下:

vi /etc/rsyncd.conf

uid=root

gid=root

max connections=36000

use chroot=no

log file=/var/log/rsyncd.log

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsyncd.lock

[rsync]

path=/opt/rsync

comment = test files

ignore errors = yes

read only = no

hosts allow = 192.168.2.68

hosts deny = *

 只允许主服务器server1访问,同步模块名为[rsync],/opt/rsync为文件同步目录。

 rsync --daemon

#后台运行rsync

 使用xinetd管理rsync服务

yum install xinetd -y

chkconfig rsync on

service xinetd restart

2. 在主服务器上安装配置sresync

yum install rsync -y

tar zxf sersync2.5_64bit_binary_stable_final.tar.gz

cd GNU-Linux-x86/

vi confxml.xml, 修改如下行

<inotify> 

        <delete start="true"/> 

        <createFolder start="true"/> 

        <createFile start="true"/> 

        <closeWrite start="true"/> 

        <moveFrom start="true"/> 

        <moveTo start="true"/> 

        <attrib start="true"/> 

        <modify start="true"/> 

    </inotify> 

<sersync>

<localpath watch="/opt/rsync">    #本地同步目录

<remote ip="192.168.2.27" name="rsync"/>  #目标服务器列表和同步模块名

<remote ip="192.168.0.2" name="rsync"/>

</localpath>

...

3. 运行Sersync与Sersync启动参数

sersync会对目录进行监控,将变化的目录或文件同步到远程服务器。sersync是递归监控的,如

果有多级目录,都会同步到远程服务器。常用启动方式如下:

 在主服务器上开启sersync守护进程,使sersync在后台运行,开启实时同步。

#cd GNU-Linux-x86/

#./sersync2 -d -r

set the system param

execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches

execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events

parse the command param

daemon thread num: 10

parse xml config file

host ip : localhost 

host port: 8008

config xml parse success

please set /etc/rsyncd.conf max connections=0 Manually

sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)

please according your cpu ,use -n param to adjust the cpu rate

run the sersync:

watch path is: /opt/rsync

4、(1)配置目标服务器(多目录同步)

 cd /mnt/ 

 mkdir tongbu 

vim /etc/rsyncd.conf 

......

[tongbu]

path=/mnt/tongbu

comment = test files

ignore errors = yes

read only = no

hosts allow = 192.168.2.68

hosts deny = *

service xinetd restart

(2)配置主服务器

cd GNU-Linux-x86/ 

cp confxml.xml confxml-1.xml 

 vim confxml-1.xml 

 <sersync> 

        <localpath watch="/opt/tongbu1"> 

            <remote ip="192.168.2.27" name="tongbu"/> 

            <!--<remote ip="192.168.8.39" name="tongbu"/>--> 

            <!--<remote ip="192.168.8.40" name="tongbu"/>--> 

        </localpath> 

cd /opt/ 

mkdir tongbu1 

cd GNU-Linux-x86/ 

 ./sersync2 -r -d -o confxml-1.xml 

cd /opt/tongbu1 

touch hello 

在目标服务器的/mnt/tongbu下就会有被同步的文件hello

在开启实时监控的之前对主服务器目录与远程目标机目录进行一次整体同步

./sersync -r

如果需要将sersync运行前,已经存在的所有文件或目录全部同步到远程,要以-r参数运行sersync,将本地与远程整体同步一次。如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步。-r参数将会无效

 

指定配置文件

./sersync -o XXXX.xml

对于sersync使用可执行文件目录下的默认配置文件confxml.xml,如果需要使用另一个配置文件,可以使用-o参数指定其它配置文件。

 

指定默认的线程池的线程总数

./sersync -n num

例如 ./sersync -n 5 则指定线程总数为5,如果不指定,默认启动线程池数量是10,如果cpu使用过高,可以通过这个参数调低,如果机器配置较高,可以用-n跳高线程总数。

 

不进行同步,只运行插件

./sersync -m pluginName

例如./sersync -m command,则在监控到文件事件后,不对远程目标服务器进行同步,而是直接运行command插件。

 

多个参数可以配合使用

./sersync -n 8 -o abc.xml -r -d

表示,设置线程池工作线程为8个,指定abc.xml作为配置文件,在实时监控前作一次整体同步,以守护进程方式在后台运行。

 

通常情况下,对本地到远程整体同步一遍后,在后台运行实时同步。

./sersync -r -d

——leeypp@gmail.com  


© 著作权归作者所有

共有 人打赏支持
lee_ypp
粉丝 64
博文 45
码字总数 58692
作品 0
程序员
sersync+rsync原理及部署

一、为什么要用rsync+sersync架构? 1、sersync是基于inotify开发的,类似于inotify-tools的工具 2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某...

次渠龙哥
2015/07/23
0
0
sersync+rsync实时同步配置案例

目前业内比较靠谱的同步解决方案有: rsync+inotify-tools,Openduckbill+inotify-tools和rsync+sersync 前两者由于是基于脚本语言编写,所以规范程度,执行效率相对rsync+sersync就稍微弱一...

feilong0663
07/03
0
0
7.linux同步服务器 rsync+sersync的配置

实现目标:将主机A(192.168.239.128)下的一个目录,同步到主机B(192.168.239.130)下的一个目录,并对A主机进行监控,当A主机该目录下的文件发生变化立即同步至主机B中。 1.安装rsync rsync安...

a8757906
2017/06/21
0
0
centos 6.4 搭建rsync+sersync

sersync原理是使用rsync命令推送同步的文件到rsync客户端 优点是同步快,实时同步 使用资源少 缺点是不只是双向实时同步,也就是说客户端新建文件不会同步到服务器端 对于要实施双机实时同步...

zhangdiandong
2013/12/03
0
0
服务器文件双向、多向同步rsync+sersync

服务器文件双向、多向同步rsync+sersync 安装前的准备(各同步服务器都配置) 安装rsync(各同步服务器都装) 配置rsyncd.conf(各服务器都配置) 配置密码文件 创建同步目录(各服务器都创建) 启动...

莫-邪
08/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
4
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
121
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
4
0
我为什么用GO语言来做区块链?

Go语言现在常常被用来做去中心化系统(decentralised system)。其他类型的公司也都把Go用在产品的核心模块中,并且它在网站开发中也占据了一席之地。 我们在决定做Karachain的时候,考量(b...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部