Sersync实时同步多实例到多台服务器

*安装环境准备*

系统资源列表

角色 服务器配置 操作系统版本 IP 机器名

Sersync VM Centos 6.5| 2.6.32-431.el6.x86_64 192.168.137.50 M-server

rsync服务1 VM Centos 6.5| 2.6.32-431.el6.x86_64 192.168.137.20 s1-server

rsync服务2 VM Centos 6.5| 2.6.32-431.el6.x86_64 192.168.137.21 s2-server 

检查系统环境:三台服务器都是一样的系统版本。

  1. [root@S1-server ~]# cat /etc/redhat-release 
  2.  
  3. CentOS release 6.5 (Final) 
  4.  
  5. [root@S1-server ~]# uname -r 
  6.  
  7. 2.6.32-431.el6.x86_64 

部署rsync服务(以下操作在S1、S2主机上配置)

 

  1. #rsync_config____________________________start  
  2. #created by swper   
  3. uid = root  
  4. gid = root  
  5. use chroot = no  
  6. max connections = 200  
  7. timeout = 300  
  8. pid file = /var/run/rsyncd.pid  
  9. lock file = /var/run/rsync.lock  
  10. log file = /var/run/rsyncd.log  
  11. ignore errors  
  12. read only = false  
  13. list = false  
  14. hosts allow = 192.168.137.0/24  
  15. hosts deny = 0.0.0.0/32  
  16. auth users = rsync_backup  
  17. secrets file = /etc/rsync.password  
  18. ####################################  
  19. [www]  
  20. comment = www by swper   
  21. path = /data0/www/www/  
  22. ####################################  
  23. [bbs]  
  24. comment = bbs by swper   
  25. path = /data0/www/bbs/  
  26. ####################################  
  27. [blog]  
  28. comment = mysql by swper  
  29. path = /data0/www/blog/  
  30. ####################################  
  31. #rsync_config------------------------------end  
  32. EOF  

 配置密码文件:

echo "rsync_backup:123456" >/etc/rsync.password

并更改权限:

chmod 600 /etc/rsync.password

启动rsync服务:

 

  1. [root@S2-server ~]# rsync --daemon 
检查状态:可以查看端口或服务
 
  1. [root@S2-server ~]# netstat -lnt|grep 873 
  2. tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN       
  3. tcp        0      0 :::873                      :::*                        LISTEN       
 
或者lsof -i:873
 
  1. [root@S2-server ~]# lsof -i:873 
  2. COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME 
  3. rsync   3253 root    3u  IPv4  38299      0t0  TCP *:rsync (LISTEN) 
  4. rsync   3253 root    5u  IPv6  38300      0t0  TCP *:rsync (LISTEN) 
 
把启动添加到rc.local里,开机启动。
 
  1. [root@S2-server ~]# echo "/usr/local/bin/rsync --daemon" >>/etc/rc.local 
 
到此S1、S2主机上的rsync配置完成了!
 
 

Master主机配置rsync同步情况

创建密码保存文件,这里只要密码:

 

  1. [root@M-server ~]# echo "123456" >/etc/rsync.password 

创建目录和等同步的文件:

 

  1. [root@M-server ~]# mkdir -p /data0/www/www/ /data0/www/bbs/ /data0/www/blog/              
  2. [root@M-server ~]# rsync -avzP /data0/www/www/ rsync_backup@192.168.137.20::www/ --password-file=/etc/rsync.password 

 

测试是可以正常同步的。

安装sersync

下载安装包: 

https://code.google.com/p/sersync/downloads/detail?name=sersync2.5.4_64bit_binary_stable_final.tar.gz

  1. [root@M-server ~]# tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/ 
  2. [root@M-server ~]# cd /usr/local/ 
  3. [root@M-server local]# ls 
  4. bin  etc  games  GNU-Linux-x86  include  lib  lib64  libexec  sbin  share  src 

  看到GNU-Linux-x86就是刚才解压出来的文件,把它改名:

  1. [root@M-server local]# mv GNU-Linux-x86 sersync 

以下操作是让操作更规范化:

 

  1. [root@M-server local]# cd sersync/ 
  2.  
  3. [root@M-server sersync]# mkdir conf bin logs 
  4.  
  5. [root@M-server sersync]# mv confxml.xml conf 
  6.  
  7. [root@M-server sersync]# mv sersync2 bin/sersync 

 

配置sersync,先备份

 

  1. [root@M-server sersync]# cp conf/confxml.xml conf/confxml.xml.$(date +%F%T) 
  2. [root@M-server sersync]# ls conf/ 
  3.  
  4. confxml.xml  confxml.xml.2015-09-2600:07:42  
  5.  
  6. [root@M-server sersync]# cp conf/confxml.xml conf/www_confxml.xml 
  7.  
  8. [root@M-server sersync]# cp conf/confxml.xml conf/bbs_confxml.xml 
  9.  
  10. [root@M-server sersync]# cp conf/confxml.xml conf/blog_confxml.xml 
  11.  
  12. [root@M-server sersync]# vim conf/www_confxml.xml 

由于三个配置文件修改差不多就不一一列出。

原配置文件的24-28行: 

  1. 24         <localpath watch="/opt/tongbu"> 
  2. 25             <remote ip="127.0.0.1" name="tongbu1"/> 
  3. 26             <!--<remote ip="192.168.8.39" name="tongbu"/>--> 
  4. 27             <!--<remote ip="192.168.8.40" name="tongbu"/>--> 
  5. 28         </localpath> 

修改为:

  1. <localpath watch="/data0/www/www/"> 
  2.         <remote ip="192.168.137.20" name="www"/> 
  3.         <remote ip="192.168.137.21" name="www"/> 
  4. </localpath> 

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

接下来rsync认证部分:

 

  1. 39         <rsync> 
  2. 40             <commonParams params="-artuz"/> 
  3. 41             <auth start="false" users="root" passwordfile="/etc/rsync.pas"/> 
  4. 42             <userDefinedPort start="false" port="874"/><!-- port=874 --> 
  5. 43             <timeout start="false" time="100"/><!-- timeout=100 --> 
  6. 44             <ssh start="false"/> 
  7. 45         </rsync> 

修改为:

 

  1. <rsync> 
  2.     <commonParams params="-artuz"/> 
  3.     <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/> 
  4.     <userDefinedPort start="false" port="874"/><!-- port=874 --> 
  5.     <timeout start="true" time="100"/><!-- timeout=100 --> 
  6.     <ssh start="false"/> 
  7. </rsync> 

提示:细心就会发现,此配置就是在拼接rsync -avzP --timeout=100 /data0/www/www/ rsync_back@192.168.137.20::www/ --password-file=/etc/rsync.password 这个同步命令。

 

修改失败队列的定时任务和LOG日志存放路径;
  1. 46         <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60 
  2.   mins execute once--> 
 修改为我们上面规范后的目录:/usr/local/sersync/logs/
  1. <failLog path="/usr/local/sersync/logs/www_rsync_fail_log.sh" timeToExecute="60"/><!--default every 60 
  2.    mins execute once--> 
 

 这里说明一下:不同步失败后,日志记录到/usr/local/sersync/logs/rsync_fail_log.sh下,并且每60分钟对失败的log进行重新同步。

  
到此配置文件已经修改完成。
 
 
开启sersync守护进程来同步数据
 
配置sersync环境变量
 
  1. [root@M-server sersync]# echo 'export PATH=$PATH:/usr/local/sersync/bin' >>/etc/profile 
  2. [root@M-server sersync]# tail -1 /etc/profile 
  3. export PATH=$PATH:/usr/local/sersync/bin 
  4. [root@M-server sersync]# source /etc/profile 
  5.   
  6. [root@M-server sersync]# which sersync 
  7. /usr/local/sersync/bin/sersync 
启动命令:
 
  1. [root@M-server sersync]# sersync -r -d -o /usr/local/sersync/conf/confxml.xml 
参数说明:-r :同步前初始化两端数据保持数据一致
          -d :后台启动,守护进程同步
          -o: 指定配置文件
 
往目录下添加一个文件做测试:
 
  1. [root@M-server www]# for n in `ls`;do echo 111111111111 >$n/$n.txt;done