目标:
在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:
<sersync> <localpath watch="/data"> # 同步数据目录 <remote ip="192.168.20.12" name="data_bak"/> #远程主机IP,远程rsync同步模块名称 <!--<remote ip="192.168.8.39" name="tongbu"/>--> <!--<remote ip="192.168.8.40" name="tongbu"/>--> </localpath> <rsync> <commonParams params="-artuz"/> # rsync 同步参数 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.pas"/> #用户名密码文件 <userDefinedPort start="false" port="874"/><!-- port=874 --> <timeout start="false" time="100"/><!-- timeout=100 --> <ssh start="false"/> </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 判断条件。
本文出自 “Trying” 博客,请务必保留此出处http://tryingstuff.blog.51cto.com/4603492/1933981
原文地址:http://tryingstuff.blog.51cto.com/4603492/1933981