sersync安装

服务端:10.0.4.231
客户端:10.0.4.232

客户端配置:
安装rsync
yum install -y rsync
cat >/etc/rsyncd.conf<<EOF
transfer logging = yes
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
port = 873
address = 10.0.4.232 #监听的网卡IP,test2上改为192.168.3.101
uid = root #rsync是通过这个设定的用户来访问下面配置的path路径
gid = root #所以这个用户要对下面配置的path路径要有相应的权限
use chroot = no
read only = false #设置为false,客户端可以上传文件,设置为true就不能推送只能拉取
max connections = 2000
Timeout = 600
ignore errors
auth users = rsyncd_bk
secrets file = /etc/rsyncd.passwd
hosts allow = 10.0.4.231
hosts deny = *
list = false
######################################## #添加一个test模块
[test]
comment = test by heboan
path = /data/test/

创建相关待同步目录
mkdir -p /data/test/
配置相关权限认证
echo “rsyncd_bk:pass123” >/etc/rsyncd.passwd
chmod 600 /etc/rsyncd.passwd

开启rsync守护进程并查看进程状态
rsync -daemon
ps -ef | grep rsync

添加开机自启
echo “rsync -daemon” >>/etc/rc.local

服务端test1 rsync安装
yum install -y rsync
echo “pass123” >/etc/rsyncd.passwd
chmod 600 /etc/rsyncd.passwd
mkdir -p /data/test/

测试同步
创建测试文件
在这里插入图片描述
手动同步
rsync -avzP /data/test/ rsyncd_bk@10.0.4.232::test/ --password-file=/etc/rsyncd.passwd
在这里插入图片描述

查看客户端
在这里插入图片描述
若文件存在则说明同步成功

服务端安装sersync
tar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
cd /usr/local/
mv GNU-Linux-x86 sersync
cd sersync/
mkdir conf bin logs
mv confxml.xml conf
mv sersync2 bin/sersync
cd conf/
cp confxml.xml test_confxml.xml
mkdir bk_xml
mv confxml.xml bk_xml/

修改配置文件test_confxml.xml
①修改24-28行的部分,原内容为:

 24     <localpath watch="/opt/tongbu">
 25         <remote ip="127.0.0.1" name="tongbu1"/>
 26         <!--<remote ip="192.168.8.39" name="tongbu"/>-->
 27         <!--<remote ip="192.168.8.40" name="tongbu"/>-->
 28     </localpath>

修改后的内容为:

<localpath watch="/data/test">
     <remote ip="10.0.4.232" name="test"/>
</localpath>

提示:此步watch="/data/test"就是定义服务端待同步的目录,和目标服务器的模块name=“test”

②修改29-35(修改前的行号),认证部分,原内容为:

 29     <rsync>
 30         <commonParams params="-artuz"/>   #同步的参数
 31         <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
 32         <userDefinedPort start="false" port="874"/><!-- port=874 -->
 33         <timeout start="false" time="100"/><!-- timeout=100 -->
 34         <ssh start="false"/>
 35     </rsync>


修改后的内容为:(其他两个配置文件修改为一样即可)

   <rsync>
        <commonParams params="-artuz"/>
        <auth start="true" users="rsyncd_bk" passwordfile="/etc/rsyncd.passwd"/>
        <userDefinedPort start="false" port="874"/><!-- port=874 -->
        <timeout start="true" time="100"/><!-- timeout=100 -->
        <ssh start="false"/>
    </rsync>

③修改36行(修改前的行号),原内容为

36       <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->

修改后的内容为:

 <failLog path="/usr/local/sersync/logs/test_rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->

提示:当同步失败后,日志记录到/usr/local/sersync/logs/test_rsync_fail_log.sh,并且每60分钟对失败的log进行重新同步

配置sersync环境变量
echo ‘export PATH=$PATH:/usr/local/sersync/bin’>>/etc/profile
tail -1 /etc/profile
source /etc/profile

启动命令
sersync -r -d -o /usr/local/sersync/conf/test_confxml.xml

参数说明:
-r :用来第一次同步初始化目录,是服务器两边的内容保持一致
-d :在后台运行
-o :用来指定配置文件

sersync配置文件说明
提示:xml配置文件注释不是“#”,而是<!--中间是注释内容-->

1   <?xml version="1.0" encoding="ISO-8859-1"?>
2   <head version="2.5">
3       <host hostip="localhost" port="8008"></host>
hostip与port是针对插件的保留字段,对于同步功能没有任何作用,保留默认即可
4       <debug start="false"/>
设置为true,开启debug模式,会在sersync正在运行的控制台打印inotify事件与rsync同步命令
5       <fileSystem xfs="false"/>
对于xfs文件系统的用户,需要将这个选项开启,才能使sersync正常工作
对于sersync监控的文件,会默认过滤系统的临时文件(以“.”开头,以“~”结尾),除了这些文件外,可以自定义需要过滤的文件
6       <filter start="false">
7       <exclude expression="(.*)\.svn"></exclude>
8       <exclude expression="(.*)\.gz"></exclude>
9       <exclude expression="^info/*"></exclude>
10      <exclude expression="^static/*"></exclude>
11      </filter>
将start设置为true后开启过滤功能,在exclude标签中,填写正则表达式,默认给出两个例子分别是过滤以“.gz”结尾的文件与过滤监控目录下的info路径(监控路径/info/*),可以根据需要添加,但开启的时候,自己测试一下,正则表达式如果出现错误,控制台会有提示。相比较使用rsync的exclude功能,被过滤的路径,不会加入监控,大大减少了rsync同步的通讯量
对于inotify监控参数可以进行设置,根据项目的特点优化rsync
12      <inotify>
13      <delete start="true"/>
14      <createFolder start="true"/>
15      <createFile start="false"/>
16      <closeWrite start="true"/>
17      <moveFrom start="true"/>
18      <moveTo start="true"/>
19      <attrib start="false"/>
20      <modify start="false"/>
21      </inotify>
对于大多数应用,可以尝试把createFile(监控文件事件选项)设置为false来提高性能,减少rsync通讯。因为拷贝文件到监控目录会产生create事件与close_write事件,所以如果关闭create事件,只监控文件拷贝结束时的事件close_write,同样可以实现文件完整同步。
注意:需要将createFolder保持为true,如果将createFolder设为false,则不会对产生的目录进行监控,该目录下的子文件与子目录也不会被监控。所以除非特殊需要,请开启。默认情况下对创建文件(目录)事件与删除文件(目录)事件都进行监控,如果项目中不需要删除远程目标服务器的文件(目录),则可以将delete参数设置为false,则不对删除事件进行监控。
22 
23      <sersync>
文件监控与远程同步设置
24      <localpath watch="/opt/tongbu">
25          <remote ip="127.0.0.1" name="tongbu1"/>
26          <!--<remote ip="192.168.8.39" name="tongbu"/>-->
27          <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28      </localpath>
/opt/tongbu目录为sersync主服务器本地待同步的目录,ip=”192.168.8.39”为从服务器的IP地址,如果有多个从服务器,依次列出来即可。name=”tongbu”,这里的tongbu为rsyncd.conf中的模块名字,即中括号中的名称
Rsync设置
29      <rsync>
30          <commonParams params="-artuz"/>
31          <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
32          <userDefinedPort start="false" port="874"/><!-- port=874 -->
33          <timeout start="false" time="100"/><!-- timeout=100 -->
34          <ssh start="false"/>
35      </rsync>
在commonParams项,我们可以自定义rsync的同步参数,默认是-artuz,auth start=”false”设置为true的时候,使用rsync的认证模式传送,需要配置user与passwordfile(--password-file=)来使用。userDenfinedPort当远程同步目标服务器的rsync端口不是默认端口的时候使.timeout这是rsync的timout事件。<ssh start=”false”/>如果开启,ssh使用rsync -e ssh的方式传输。
失败日志脚本配置
36      <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
如果文件同步传输失败,会重新传送,再次失败就会写入rsync_fail_log.sh,然后每个一段时间(timeToExecute进行设置)执行该脚本再次重新传送,然后清空该脚本。可以通过path来设置日子路径。
Crontab定期整体同步功能
37      <crontab start="false" schedule="600"><!--600mins-->
38          <crontabfilter start="false">
39          <exclude expression="*.php"></exclude>
40          <exclude expression="info/*"></exclude>
41          </crontabfilter>
42      </crontab>
Crontab可以对监控路径与远程目标主机每隔一段时间进行一次整体同步,可能由于一些原因再次重传失败,这个时候如果开启了crontab功能,还可以进一步保证各个服务器文件一致,如果文件量比较大,crontab的时间间隔要设大一些,否则可能增加通讯开销。Schedule这个参数设置crontab的时间间隔,默认是600分钟。如果开启了filter文件过滤功能,那么crontab整体同步也需要设置过滤,否则虽然实时同步的文件被过滤了,但是crontab整体同步的时候,如果不单独设置crontabfilter,还会将需过滤的文件同步到远程从服务器,,crontab的过滤正则与filter过滤的不同,也给出了两个实例分别对应与过滤文件与目录。总之如果同时开启了filter与crontab,则要开启crontab的crontabfilter,并按示例设置使其与filter的过滤一一对应。
插件设置
43      <plugin start="false" name="command"/>
当start=”false”处设置为true的时候,将文件同步到远程服务器后会调用插件。通过name参数指定需要执行的插件。目前支持的有command refreshCDN socket http四种插件。其中,http插件目前由于兼容性原因已经去除,以后会重新加入
44      </sersync>
45 
Command插件
46      <plugin name="command">
47      <param prefix="/bin/sh" suffix="" ignoreError="true"/>    <!--prefix /opt/tongbu/mmm.sh suffix-->
48      <filter start="false">
49          <include expression="(.*)\.php"/>
50          <include expression="(.*)\.sh"/>
51      </filter>
52      </plugin>
当文件同步完成后,会调用command插件,如同步文件时test.php,则test.php文件再改动之后,调用rsync同步到远程服务器后,调用command插件,执行 :/bin/sh test.php  suffix>dev/null 2>&1
如果suffix设置了,则会放在inotify事件test.php之后,如果ignoreError为true,则会添加>/dev/null 2>&1,当然还可以设置command的filter,当filter为true时,include可以只对正则匹配到的文件调用command.
53 
Socke插件,开启该模块,则向指定的ip与端口发送inotify所产生的文件路径信息
54      <plugin name="socket">
55      <localpath watch="/opt/tongbu">
56          <deshost ip="192.168.138.20" port="8009"/>
57      </localpath>
58      </plugin>
59      <plugin name="refreshCDN">
60      <localpath watch="/data0/htdocs/cms.xoyo.com/site/">
61          <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
62          <sendurl base="http://pic.xoyo.com/cms"/>
63          <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
64      </localpath>
“refreshCDN”,就在同步过程中将文件发送到目的服务器后刷新cdn接口。如果不想使用,则将start属性设为false即可。
如果需要使用其他插件,则查看其他plugin标签,将插件名称改为xml中其他插件名称即可。该模块根据chinaCDN的协议进行设计,当有文件产生的时候,就向cdn接口发送需要刷新的路径位置。
其中localpath watch=”/data0/hotdocs/cms.xoyo.com/site”是需要监控的目录。cdninfo标签制定了cdn接口的域名,端口号,以及用户名与密码。
sendurl标签是需要刷新的url的前缀。regexurl标签中的,regex属性为true的时候,使用match属性的正则语句匹配inotify返回的路径信息,并将正则匹配到的部分作为url一部分。
举例:
如果产生的文件事件为:/data0/htdoc/cms.xoyo.com/site/jx3.xoyo.com/image/a/123.txt
经过上面的match正则匹配后,最后的刷新路径是:http://pic.xoyo.com/cms/jx3/a/123.txt
如果regex属性为false,最后刷新的路径是http://pic.xoyo.com/cms/jx3.xoyo.com/images/a/123.txt
65      </plugin>
66  </head>
 
###############################################################################################
只调用command插件
./sersync -d -m command
只调用refreshCDN插件
./sersync -d -m refreshCDN
只调用socket插件
./sersync -d -m socket
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值