目标:
在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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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、密码配置:
1
2
3
4
|
# 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端口:
1
2
3
4
5
|
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,解压安装,
1
2
3
4
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<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、配置密码文件:
1
2
3
4
|
# cat /etc/rsync.pas
passnfs
# ls -l /etc/rsync.pas
-rw------- 1 root root 11 Jun 9 22:30
/etc/rsync
.pas
|
4、执行sersync 命令守护进程,进行同步。
1
|
/usr/local/sersync/sersync2
-d -r -o
/usr/local/sersync/confxml
.xml
|
添加定时任务监控
可以添加定时任务,对服务进程进行监控,如可以将下面的脚本加到master定时任务中每10min执行一次:
1
2
3
4
5
6
7
8
9
10
|
#!/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上也可以将此脚本添加到定时任务:
1
2
3
4
5
6
7
8
|
#!/bin/sh
status=$(
ps
aux|
grep
rsync
|
grep
-
v
grep
|
wc
-l)
if
[ $status -
eq
0 ]
then
rsync
--daemon
else
exit
0
fi
|
小提示: 脚本名称不要与监控的服务名有相同的字段,如果有相同字段需要修改if 判断条件。
本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1933981