Chinaunix首页 | 论坛 | 博客
  • 博客访问: 409222
  • 博文数量: 89
  • 博客积分: 1386
  • 博客等级: 中尉
  • 技术积分: 827
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-20 10:32
个人简介

12年 linux 系统运维工程师,网络架构设计、优化,故障处理。

文章分类

全部博文(89)

文章存档

2019年(1)

2015年(2)

2014年(11)

2013年(14)

2012年(2)

2011年(59)

分类: LINUX

2011-11-15 15:53:52

             

一、基础环境:
  REHL AS 5.4 32bit
  rsync 3.0.7

 wget
 
如果用其他较低版本OS,内核在2.6.18以下,则需要自己安装inotify-tools.

参照:http://blog.johntechinfo.com/technology/87  金山周洋blog

http://blogold.chinaunix.net/u2/88421/showart_2426980.html


REHL AS 5.4 64bit
的环境也可以,有相应的
  sersync2.5_64bit_binary_stable_final.tar.gz

服务器:2台,分别标识为A,B,其中A为客户端,B为服务端,sersync安装在A机,监视文件变化,实时推送到B服务器上。
  A
机地址:192.168.200.252
  B
机地址:192.168.200.251
 
同步目录:/opt/software

 

二、配置说明:
  1
AB分别更新rsync3.0.7版本,B机以守护进程的方式。
  2
B机安装并开启rsync服务,端口默认为TCP 873
  3
A机上安装sersync,但也是以rsync能正常工作为前提

二、安装步骤:
  1
、分别为A,B两机安装 rsync

B机上安装rsync

cat  /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_test]

path=/a8root/rsync_test

comment  = rsync inotify files

ignore errors = yes

auth users = rsync

secrets file = /etc/rsync.pass

read only = no

hosts allow =  192.168.200.0/24

hosts deny = *

cat  /etc/rsync.pass

rsync:rsync123

chmod 600  /etc/rsync.pass

 

启动rsync

rsync --daemon --config=/etc/rsync.conf


  2
、安装sersync

       A机上安装sersync
   
如果使用linux 系统,一般情况下,不需要编译,直接使用bin目录下的可执行文件和xml配置文件即可。当然已可以编译安装,src目录下放的是源码,lib目录下是需要的静态库,bin目录是最后生成的二进制文件,在sersync 目录下执行make命令,就会将生成的2进制文件放入bin目录下。
  
只要配置文件和sersync命令属于同一目录下,那么直接执行./sersync 即可,如果不在同一目录下,那么要用-o参数指定xml配置文件所在位置。

四、配置文件详解:

[root@A8test252 sersync]# cat confxml.xml

            #本地主机地址

                                #是否打开调试信息

                                                            #是否支持xfs文件系统

                                                                      #过滤,是否排除名称中含有文件同步

       

       

       

       

   

                                                   #本段是对内核inotify事件的过滤,哪些要触发。

       

       

       

       

       

       

       

       

   

 

   

                               #本地需要监视的目录

              #目的端的iprsync同步的子项的模块名

            #如果有多个目的端,可以一一列出

       

                                                                                                       #sersync调用rsync时的参数配置

           

           

           

           

           

       

       

       

           

               

                

           

       

       

   

 

   

         

       

           

           

       

   

 

   

       

           

       

   

                                         #扩展插件功能的配置例

       

           

           

           

       

   

 

 

启动sersync

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

 

 

最后测试

A机上

cd /a8root/rsync_test/

[root@A8test252 rsync_test]# ll

total 16

-rw-r--r-- 1 root root    2 Feb 10 15:04 1

drwxr-xr-x 2 root root 4096 Feb 10 15:04 10

-rw-r--r-- 1 root root    2 Feb 10 15:04 2

-rw-r--r-- 1 root root    2 Feb 10 15:04 3

-rw-r--r-- 1 root root    0 Feb 10 15:07 4

 

[root@A8test252 rsync_test]# echo ok  >ok

[root@A8test252 rsync_test]# ll

total 20

-rw-r--r-- 1 root root    2 Feb 10 15:04 1

drwxr-xr-x 2 root root 4096 Feb 10 15:04 10

-rw-r--r-- 1 root root    2 Feb 10 15:04 2

-rw-r--r-- 1 root root    2 Feb 10 15:04 3

-rw-r--r-- 1 root root    0 Feb 10 15:07 4

-rw-r--r-- 1 root root    3 Feb 10 16:36 ok

 

 

B机上

[root@test251 ~]# cd /a8root/rsync_test/

[root@test251 rsync_test]# ll

total 20

-rw-r--r-- 1 root root    2 Feb 10 15:04 1

drwxr-xr-x 2 root root 4096 Feb 10 15:04 10

-rw-r--r-- 1 root root    2 Feb 10 15:04 2

-rw-r--r-- 1 root root    2 Feb 10 15:04 3

-rw-r--r-- 1 root root    0 Feb 10 15:07 4

-rw-r--r-- 1 root root    3 Feb 10 16:36 ok

 

 

 

要注意的有这么几个地方:               
     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文件中,filtertrue,则暂时不能使用-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

阅读(911) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~