码迷,mamicode.com
首页 > 其他好文 > 详细

sersync+rsync同步

时间:2016-03-18 18:08:23      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:sersync   实时同步   rsync   数据同步   


                                    一、Sersync安装

  (1)Sersync同步需求逻辑图

     Sersync依赖于rsync进行数据同步,需在主服务器master上开启Sersync,Sersync负责监控配置文件

中的文件系统的事件变化,然后调用rsync命令把更新的文件同步到目标服务器slave上。

 结论:需要在主服务器上配置Sersync,在同步目标服务器上安装rsync-server。

          Sersync同步示意图

  user----}Sersync--------}S1-rsync服务器

            服务器--------}S2-rsync服务器

     用户user会实时的往Sersync服务器写入或更新数据文件,此时,需要在左边的同步服务器上配置Sersync,在右边的同步目标服务器S1和S2上配置rsync守护进程服务,这样在主服务器写入或更新数据文件时,就会被

     Sersync实时同步到slave服务器S1和S2。

     结论: Sersync就是监控本地的数据写入或更新事件,然后调用rsync客户端命令,将写入或更新的文件实时同步到slave服务器S1和S2上。

  

  

   (2)检查版本---安装--升级版本   yum -y install rsync  也可编译安装

    

   (3)在目录服务器slave服务器S1和S2上配置。

   ################配置客户端S1-S2######################

[root@rsync-s1 ~]# cat /etc/rsyncd.conf 

#rsync_config_______________start

#create by tangbo 2015-12-02 13:25

#QQ7313760

#########rsyncd.conf______start#########


uid = root

gid = root

use chroot = no

max connections = 200

timeout = 300

pid file =  /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

ignore errors

read only = false

#write only = no

hosts allow = 192.168.11.0/24

hosts deny = 0.0.0.0/32

list = false

auth users = rsync_backup

secrets file = /etc/rsync.password


#####################################

[www]

path=/data/www/www/

comment = www by tangbo 13:40 2015-11-20

#####################################

[bbs]

path=/data/www/bbs/

comment = www by tangbo 13:40 2015-11-20

#####################################

[blog]

path=/data/www/blog/

comment = www by tangbo 13:40 2015-11-20

###################################

#########rsyncd.conf______end#########

[root@rsync-s1 ~]# 

上面的rsync服务的配置文件,允许Sersync主服务器访问,rsync同步的模块名为[www] [bbs][blog]

将同步过来的文件分别放入对应path指定的目录/data/www/www/ /data/www/bbs/ /data/www/blog/下,如果有多台目标服务器,则每台都需要类似配置,uid,gid可根据实际情况变化。该用户必须对这三个目录有写入权限。

   

   (4)创建相关目录:

      [root@rsync-s2 ~]# mkdir -p /data/www/www/ /data/www/bbs/ /data/www/blog/

      [root@rsync-s2 ~]# ls /data/www/

        bbs  blog  www

      [root@rsync-s2 ~]# 

  权限相关配置:

      [root@rsync-s1 ~]# vim /etc/rsync.password 

       rsync_backup:tangbo  (这个用户和密码需要去创建)

      [root@rsync-s1 ~]# chmod 600 /etc/rsync.password 

  检查:

     [root@rsync-s1 ~]# cat /etc/rsync.password 

     rsync_backup:tangbo

     [root@rsync-s1 ~]# ll /etc/rsync.password 

      -rw-------. 1 root root 20 Dec  8 21:54 /etc/rsync.password

     [root@rsync-s1 ~]#  

   配置完成后,以守护进程方式启动rsync服务。

   [root@rsync-s1 ~]# pkill rsync

   [root@rsync-s1 ~]# rsync --daemon

   [root@rsync-s1 ~]# netstat -tlnp | grep 873

    tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      888/rsync           

    tcp        0      0 :::873                      :::*                        LISTEN      888/rsync           

   [root@rsync-s1 ~]# 

  (5)设置开机自启动

     [root@rsync-s1 ~]# echo "#rsync service daemon by tangbo 20151207" >>/etc/rc.local 

     [root@rsync-s1 ~]# echo "/usr/bin/rsync --daemon" >>/etc/rc.local 

     [root@rsync-s1 ~]# grep daemon /etc/rc.local 

      #rsync service daemon by tangbo 20151207

      /usr/bin/rsync --daemon

     [root@rsync-s1 ~]# 

 重启命令: 

     [root@rsync-s2 ~]# pkill rsync

     [root@rsync-s2 ~]# netstat -tlnp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      22616/sshd          

tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1258/master         

tcp        0      0 :::22                       :::*                        LISTEN      22616/sshd          

tcp        0      0 ::1:25                      :::*                        LISTEN      1258/master         

tcp        0      0 :::3306                     :::*                        LISTEN      5210/mysqld         

 [root@rsync-s2 ~]# /usr/bin/rsync --daemon

   自己可以写一个正常的rsync启动脚本。

  

三、Master端安装rsync客户端并且测试    yum -y install rsync  也可编译安装

   

   (1)在Master上配置相关权限认证

   [root@openvpn ~]# echo "tangbo" >/etc/rsysn.password

   [root@openvpn ~]# chmod 600 /etc/rsync.password 

   [root@openvpn ~]# chmod 600 /etc/rsync.password 

   [root@openvpn ~]# cat /etc/rsync.password 

    tangbo

    [root@openvpn ~]# ll /etc/rsync.password 

    -rw------- 1 root root 7 Dec  8 22:09 /etc/rsync.password

    [root@openvpn ~]# 

     启动服务:

[root@openvpn ~]# touch /etc/rsyncd.conf

     [root@openvpn ~]# rsync --daemon

     [root@openvpn ~]# netstat -tlnp

   (2)master 上手工测试同步情况:此步骤非常关键,一定要测试。如果测试同步不成功,后面的sersync配置后也不会同步数据。

     [root@rsync-s2 ~]# mkdir -p /data/www/www/ /data/www/bbs/ /data/www/blog/

[root@openvpn ~]# touch /data/www/www/www.log /data/www/bbs/bbs.log /data/www/blog/blog.log

  

   (3)执行同步命令

     [root@openvpn /]# rsync -avzP  /data/www/www/  rsync_backup@192.168.11.34::www/  --password-file=/etc/rsync.password

[root@openvpn /]# rsync -avzP  /data/www/www/  rsync_backup@192.168.11.35::www/  --password-file=/etc/rsync.password

 

[root@openvpn /]# rsync -avzP  /data/www/bbs/  rsync_backup@192.168.11.34::bbs/  --password-file=/etc/rsync.password

[root@openvpn /]# rsync -avzP  /data/www/bbs/  rsync_backup@192.168.11.35::bbs/  --password-file=/etc/rsync.password

 

[root@openvpn /]# rsync -avzP  /data/www/blog/  rsync_backup@192.168.11.35::blog/  --password-file=/etc/rsync.password

[root@openvpn /]# rsync -avzP  /data/www/blog/  rsync_backup@192.168.11.35::blog/  --password-file=/etc/rsync.password

    

上述目录都可以同步成功则可以实现下一步的工作,安装sersync  


四、安装Sersync---单实例

      (1)下载源码且解压到/usr/local/下

 [root@openvpn tools]# tar -zxvf sersync_64bit_binary_stable_final.tar.gz -C /usr/local/

 重命名GNU-Linux-x86/ 为sersync 

 [root@openvpn local]# mv GNU-Linux-x86/ sersync    

 [root@openvpn local]# ls -R sersync/

         sersync/:

         confxml.xml  sersync2

         [root@openvpn local]# 

     

(2)规范sersync目录结构

[root@openvpn local]# cd sersync/

     [root@openvpn sersync]# mkdir -p conf bin logs

[root@openvpn sersync]# mv confxml.xml conf

     [root@openvpn sersync]# mv sersync2 bin

 

[root@openvpn local]# ls -R sersync/

       sersync/:

       bin  conf  logs


       sersync/bin:

       sersync2


       sersync/conf:

       confxml.xml


       sersync/logs:

       [root@openvpn local]# 

 

(3)配置sersync

   首先备份配置文件: [root@openvpn conf]# cp confxml.xml confxml.xml.backup.$(date +%F)

     

(4)更改优化sersync配置

   修改第24行

[root@openvpn conf]# vim +24 confxml.xm

   <sersync>

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

            <remote ip="192.168.11.34" name="www"/>

            <remote ip="192.168.11.35" name="www"/>

        <localpath watch="/data/www/bbs">                 只建立一个目录,三个目录要修改配置文件

            <remote ip="192.168.11.34" name="bbs"/>

            <remote ip="192.168.11.35" name="bbs"/>

       <localpath watch="/data/www/blog">

            <remote ip="192.168.11.34" name="blog"/>

            <remote ip="192.168.11.35" name="blog"/>

 提示:此步骤<localpath watch="/data/www/blog">就是定义服务端待同步的目录和目标服务器的模块name="blog"名。

 

(5)修改第34行

      <rsync>

            <commonParams params="-artuz"/>

            <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>

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

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

            <ssh start="false"/>

        </rsync>

其实这个修改就是在拼接:

rsync -avzP  /data/www/www/  rsync_backup@192.168.11.34::www/  --password-file=/etc/rsync.password这个同步命令而已。

 

(6)修改第37行--当同步失败后,错误日志存放路径。并且没60分钟对失败的log进行重新同步。

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

 

#############开启sersync守护进程同步数据######################

(7)配置sersync 环境变量

   [root@openvpn conf]# echo ‘export PATH=$PATH:/usr/localsersync/bin‘>>/etc/profile

[root@openvpn conf]# tail -l /etc/pro

         profile    profile.d/ protocols  

        [root@openvpn conf]# tail -l /etc/profile

            . "$i"

        else

            . "$i" >/dev/null 2>&1

        fi

    fi

done


unset i

unset -f pathmunge

export PATH=$PATH:/usr/local/sersync/bin

     [root@openvpn conf]# source /etc/profile

 

    (8)测试结果:发现问题,仅仅能同步一个模块的路径,其它模块的路径不能同步。


五、多实例

   (1)复制配置文件

   [root@openvpn conf]# cp confxml.xml www_confxml.xml

   [root@openvpn conf]# cp confxml.xml bbs_confxml.xml

   [root@openvpn conf]# cp confxml.xml blog_confxml.xml

   

   (2)修改配置文件

   [root@openvpn conf]# diff www_confxml.xml bbs_confxml.xml 

24,26c24,26

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

<    <remote ip="192.168.11.34" name="www"/> 

<    <remote ip="192.168.11.35" name="www"/>

---

> <localpath watch="/data/www/bbs">

>    <remote ip="192.168.11.34" name="bbs"/> 

>    <remote ip="192.168.11.35" name="bbs"/>

37c37

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

---

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

[root@openvpn conf]# 


[root@openvpn conf]# diff www_confxml.xml blog_confxml.xml 

24,26c24,26

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

<    <remote ip="192.168.11.34" name="www"/> 

<    <remote ip="192.168.11.35" name="www"/>

---

> <localpath watch="/data/www/blog">

>    <remote ip="192.168.11.34" name="blog"/> 

>    <remote ip="192.168.11.35" name="blog"/>

37c37

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

---

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

[root@openvpn conf]# 


   (3)多实例初始化同步命令:

   sersync -r -d -o /usr/local/sersync/conf/www_confxml.xml

   sersync -r -d -o /usr/local/sersync/conf/bbs_confxml.xml

   sersync -r -d -o /usr/local/sersync/conf/blog_confxml.xml

   

   (4)检查配置

   [root@openvpn conf]# ps -ef | grep sersync

root     18118     1  0 20:51 ?        00:00:00 sersync -r -d -o /usr/local/sersync/conf/www_confxml.xml

root     18141     1  0 20:51 ?        00:00:00 sersync -r -d -o /usr/local/sersync/conf/bbs_confxml.xml

root     18165     1  0 20:51 ?        00:00:00 sersync -r -d -o /usr/local/sersync/conf/blog_confxml.xml

root     18187 29986  0 20:51 pts/0    00:00:00 grep sersync

root     32204 29986  0 01:49 pts/0    00:00:00 vim sersync2

[root@openvpn conf]# 

   (5)到测试目录下面去测试是否同步成功,同时建立一千个文件

   [root@openvpn tmp]# cat for.sh 

   #!/bin/bash


   for i in `seq 1 1000`

   do

   touch /data/www/www/$i

   touch /data/www/bbs/$i

   touch /data/www/blog/$i

   done

   (6)加入开机自启动

      [root@openvpn tmp]# tail -4 /etc/rc.local 

       tail: inotify cannot be used, reverting to polling

      #sersync boot

      sersync -r -d -o /usr/local/sersync/conf/www_confxml.xml

      sersync -r -d -o /usr/local/sersync/conf/bbs_confxml.xml

      sersync -r -d -o /usr/local/sersync/conf/blog_confxml.xml

      [root@openvpn tmp]# 

   


本文出自 “山猫” 博客,谢绝转载!

sersync+rsync同步

标签:sersync   实时同步   rsync   数据同步   

原文地址:http://cqtangbo.blog.51cto.com/2978612/1752546

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!