Sersync应用与配置说明

摘要:
最好在启动***#之前命令进行整体同步,以便首先安装扩展包源代码,同时在rsync可以正常工作的前提下升级和安装rsync的配置。您可以直接使用bin目录下的可执行文件和xml配置文件。生成的二进制文件将放在bin目录中。然后使用-o参数指定xml配置文件的位置。因此,查找rsync命令取决于系统的PATH变量。您需要在/usr/bin/中为rsync创建一个链接。
注意:***开启过滤规则后,整体-r同步和整体同步机制无效,最好启动前先命令整体同步一次***
 
# 先安装扩展包源,否则inotify-tools找不到
yum install epel-release
yum install inotify-tools
 
服务器:2台,分别标识为A,B,其中A为客户端,B为服务端,sersync安装在A机,监视文件变化,实时推送到B服务器上。
  A机地址:192.168.1.37
  B机地址:192.168.1.34
  同步目录:/opt/software
 
二、配置说明:
  1、A、B分别更新rsync至3.0.7版本,B机以守护进程的方式。
  2、B机安装并开启rsync服务,端口默认为TCP 873。
  3、A机上安装sersync,但也是以rsync能正常工作为前提
rsync的升级与安装配置,详见:rsync的部署文档。
 
三、安装步骤:
  1、分别为A,B两机安装 rsync
  2、安装sersync
    如果使用linux 系统,一般情况下,不需要编译,直接使用bin目录下的可执行文件和xml配置文件即可。当然已可以编译安装,src目录下放的是源码,lib目录下是需要的静态库,bin目录是最后生成的二进制文件,在sersync 目录下执行make命令,就会将生成的2进制文件放入bin目录下。
   只要配置文件和sersync命令属于同一目录下,那么直接执行./sersync 即可,如果不在同一目录下,那么要用-o参数指定xml配置文件所在位置。
 
要注意的有这么几个地方:               
     1,本地IP和端口               
     2,本地同步路径             
     3,远程主机的IP             
     4,是否开启密码认证
  5,重试间隔
  6,如果有多个目录需要监视和同步,则建立多个xml配置文件,用sersync -o file.xml分别执行。
 
五、运行
  1、执行命令:./sersync2  -r -d 启动sersync
 r是先执行一遍完整同步,d是后台运行,稍后介绍所有启动参数。
  2、加入sersync开机自动启动,老办法: /etc/rc.local,或者写一个service脚本加入chkconfig
    要注意的是:sersync调用rsync执行任务,所以他依赖系统的PATH变量来找到rsync命令,而在linux中,初始化的PATH变量是不含有/usr/local/bin目录的(很不幸,如果你升级了rsync的话,他会默认装到这个目录),所以,你需要在/usr/bin/中给rsync创建一个link,符号的就可以:
         cd /usr/bin
         ln -s /usr/local/bin/rsync rsync
     还有一个要注意的地方是:如果你的服务器网卡需要与交换机进行端口协商,不是立即接通,那么,最好在sersync启动以前,sleep一会儿,比如十秒,否则,rsync会因为找不到同步目的方而不工作。
六、附录:启动参数举例
  1、/usr/local/sersync/sersync2 -r -d -o /usr/local/sersync/config.xml
#通常情况下使用这种方式,对本地到远程整体同步一遍后,在后台运行实时同步。
  2、/usr/local/sersync/sersync2 -d -o  /usr/local/sersync/config.xml
#在主服务器上开启sersync守护进程,使sersync在后台运行,开启实时同步。
  3、/usr/local/sersync/sersync2 -r -o  /usr/local/sersync/config.xml
#在开启实时监控的之前对主服务器目录与远程目标机目录进行一次整体同步
  (如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步。-r参数将会无效)
  4、/usr/local/sersync/sersync2  -n 5 -d -o /usr/local/sersync/config.xml
#指定默认的线程池的线程总数,如果不指定,默认启动线程池数量是10(适用于四核服务器)
#如果cpu使用过高,可以通过这个参数调低,如果机器配置较高,可以用-n跳高线程总数。
 
  也可以不进行同步,只运行插件:./sersync -m pluginName
例如./sersync -m command,则在监控到文件事件后,不对远程目标服务器进行同步,而是直接运行command插件。
 
  多个参数可以配合使用
./sersync -n 8 -o abc.xml -r -d
表示,设置线程池工作线程为8个,指定abc.xml作为配置文件,在实时监控前作一次整体同步,以守护进程方式在后台运行。
 
  修改可监控的最大目录数量:
echo 50000000 > /proc/sys/fs/inotify/max_user_watches
 
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
 

<?xml version="1.0" encoding="ISO-8859-1"?>

<head version="2.5">

    <!--本地主机地址-->

    <host hostip="10.2.22.27" port="8008"></host>

    <!--是否打开调试信息-->

    <debug start="false"/>

    <!--是否支持xfs文件系统-->

    <fileSystem xfs="false"/>

    <!--是否过滤,是否排除名称中含有制定字符串的文件的同步-->

    <filter start="false">

        <exclude expression="(.*).svn"></exclude>

        <exclude expression="(.*).gz"></exclude>

        <exclude expression="^info/*"></exclude>

        <exclude expression="^static/*"></exclude>

    </filter>

    <inotify>

        <delete start="true"/>

        <createFolder start="true"/>

        <createFile start="false"/>

        <closeWrite start="true"/>

        <moveFrom start="true"/>

        <moveTo start="true"/>

        <attrib start="true"/>

        <modify start="true"/>

    </inotify>

    <sersync>

        <!--本地需要监视的目录-->

        <localpath watch="/data/sersync/">

            <!--目的段IP地址和rsync同步子项的服务名-->

            <remote ip="10.2.22.27" name="sersync_test"/>

            <!--理论上如果有多个目的端,可在此逐个列出,最好启用新实例,每个实例配置一个地址和服务名-->

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

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

        </localpath>

        <rsync>

            <!--sersync调用rsync时的参数配置段-->

            <commonParams params="-artuz"/>

            <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>

            <userDefinedPort start="false" port="874"/><!-- port=874 -->

            <timeout start="false" time="100"/><!-- timeout=100 -->

            <ssh start="false"/>

        </rsync>

        <!--指定如果同步失败,记录到哪个文件,以便在60分钟后尝试重传-->

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

        <!--指定多长时间间隔执行一次完整同步-->

        <crontab start="false" schedule="600"><!--600mins-->

        <!--可以过滤哪些不同步-->

            <crontabfilter start="false">

                <exclude expression="*.php"></exclude>

                <exclude expression="info/*"></exclude>

            </crontabfilter>

        </crontab>

        <plugin start="false" name="command"/>

    </sersync>

    <plugin name="command">

        <!--扩展插件功能的配置举例-->

        <param prefix="/bin/sh" suffix="" ignoreError="true"/>  <!--prefix /opt/tongbu/mmm.sh suffix-->

        <filter start="false">

            <include expression="(.*).php"/>

            <include expression="(.*).sh"/>

        </filter>

    </plugin>

    <plugin name="socket">

        <!--扩展插件功能的配置举例-->

        <localpath watch="/opt/tongbu">

            <deshost ip="192.168.138.20" port="8009"/>

        </localpath>

    </plugin>

    <plugin name="refreshCDN">

        <!--扩展插件功能的配置举例-->

        <localpath watch="/data0/htdocs/ cms.xoyo.com/site/">

            <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>

            <sendurl base=" http://pic.xoyo.com/cms"/>

            <regexurl regex="false" match=" cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/p_w_picpaths"/>

        </localpath>

    </plugin>

</head>

免责声明:文章转载自《Sersync应用与配置说明》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇net Core做一个webApi的简单实例软件开发,一定意味着加班吗?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

全文搜索技术—Solr

1.   学习计划   1. Solr的安装及配置 a)    Solr整合tomcat b)    Solr后台管理功能介绍 c)    配置中文分析器   2. 使用Solr的后台管理索引库 a)    添加文档 b)     删除文档 c)    修改文档 d)    查询文档   3. 使用SolrJ管理索引库 a)    添加文档 b)    修...

开发板编译./camera显示-/bin/sh: ./camera: not found解决方案

问题: 开发板根文件系统目录: 运行./camera显示: 问题解决: 1.排除根目录路径问题; 2.   加入静态链接库即无问题,但是编译后的".o"文件大小突增,而且也不可能每次编译都使用静态编译 故锁定问题出在动态链接库上。 3.根目录加载Linux所需的所有动态链接库   Linux所有动态链接库全都存放在:/usr/local/arm/4....

显式等待-----Selenium快速入门(十)

  上一篇说了元素定位过程中的隐式等待,今天我们来探讨一下显示等待。显式等待,其实就是在使用WebDriverWait这个对象,进行等待。显式等待对比隐式等待,多了一些人性化的设置,可以说是更细化的隐式等待。   WebDriverWait 类继承自泛型类 FluentWait<T> ,而这个泛型类,又是泛型接口 Wait<T> 的...

C#中SetWindowPos函数详解

[DllImport("user32.dll")] private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndlnsertAfter, int X, int Y, int cx, int cy, uint Flags); SetWindowPos...

Linux之/etc/fstab自动挂载文件讲解

一、/etc/fstab文件的作用磁盘使用mount手动挂载,系统重启后会失效,仍需自己手动挂载。 将磁盘的挂载信息写入/etc/fstab这个文件,就能实现开机自动挂载磁盘,不再需要自己手动挂载了。 二、挂载的限制     在说明这个文件的作用之前我想先强调一下挂载的限制。   1、根目录是必须挂载的,而且一定要先于其他mount point被挂载。因为...

自动化运维工具puppet详解(二)

一、class 类   1)什么是类?   类是puppet中命名的代码模块,常用于定义一组通用目标的资源,可在puppet全局调用;  类可以被继承,也可以包含子类;  具体定义的语法如下: class NAME{ ... puppet code ... }   其中,在我们定义的时候,需要注意的是: 类的名称只能以小写字母开头,可以包含小字字母、...