目标: 

在master 主机上写入数据后,master 利用sersync 监控本地数据目录,当发生变化时,触发命令,使用rsync推送变化的数据到远程的slave主机上,实现数据同步。


配置思路:

master:   

1、 安装 sersync ,配置confxml.xml文件(其实质就是记录执行rsync命令的一些参数,启动sersync2的服务后,会监控我们指定的目录,当发生变化时,就使用rsync 命令对变化的目录和文件进行同步)

2、 配置执行rsync 命令时所需要的密码文件,此密码为远程连接slave主机时的验证密码。(用户在confxml.xml文件中指定)

3、修改密码文件权限为600。

4 、sersync2守护进程(此步在配置好slave后执行)。


slave:  

1、安装rsync, 配置/etc/rsyncd.conf文件,指定同步用户、主机连接权限、同步的模块和数据复制的机制等。

2、创建rsync的用户密码认证文件,并修改文件权限为600.

3、使用rsync --daemon 启动监听本机873端口。


配置流程:

slave:

1、安装配置rsync:

yum install rsync
vim /etc/rsyncd.conf

uid = root
gid = root
use chroot = no      
max connections = 2000  
timeout = 600             
pid file =/var/run/rsyncd.pid        
lock file =/var/run/rsync.lock      
log file = /var/log/rsyncd.log     
read only = no
hosts allow = 192.168.20.11
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file =/etc/rsync.password
[data_bak]                        
comment = hhhhh
path = /data/

2、密码配置:

# cat /etc/rsync.password 
rsync_backup:passnfs
# ls -l /etc/rsync.password
-rw------- 1 root root 24 Jun  9 22:20 /etc/rsync.password


3、启动873端口:

rsync --daemon

# netstat -lntp|grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      23812/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      23812/rsync


master:

1、下载sersync-64bit.tar.gz,解压安装,

tar xf sersync-64bit.tar.gz
mv GNU-Linux-x86 /usr/local/sersync
cd /usr/local/sersync
cp confxml.xml confxml.xml.bak


2、配置confxml.xml:

 
                        # 同步数据目录
              #远程主机IP,远程rsync同步模块名称
            
            
        
        
              # rsync 同步参数
             #用户名密码文件
            
            
            
        


3、配置密码文件:

# cat /etc/rsync.pas 
passnfs
# ls -l /etc/rsync.pas
-rw------- 1 root root 11 Jun  9 22:30 /etc/rsync.pas

4、执行sersync 命令守护进程,进行同步。

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


添加定时任务监控

可以添加定时任务,对服务进程进行监控,如可以将下面的脚本加到master定时任务中每10min执行一次:

#!/bin/sh
sersync="/usr/local/sersync/sersync2"
confxml="/usr/local/sersync/confxml.xml"
status=$(ps aux |grep 'sersync2'|grep -v 'grep'|wc -l)
if [ $status -eq 0 ];
then
$sersync -d -r -o $confxml &
else
exit 0;
fi

同理,在slave上也可以将此脚本添加到定时任务:

#!/bin/sh
status=$(ps aux|grep rsync|grep -v grep|wc -l)
if [ $status -eq 0 ]
then
  rsync --daemon
else
  exit 0
fi

小提示: 脚本名称不要与监控的服务名有相同的字段,如果有相同字段需要修改if 判断条件。