目标:
在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
<code>yum </code><code>install</code> <code>rsync</code>
<code>vim </code><code>/etc/rsyncd</code><code>.conf</code>
<code>uid = root</code>
<code>gid = root</code>
<code>use chroot = no </code>
<code>max connections = 2000 </code>
<code>timeout = 600 </code>
<code>pid </code><code>file</code> <code>=</code><code>/var/run/rsyncd</code><code>.pid </code>
<code>lock </code><code>file</code> <code>=</code><code>/var/run/rsync</code><code>.lock </code>
<code>log </code><code>file</code> <code>= </code><code>/var/log/rsyncd</code><code>.log </code>
<code>read</code> <code>only = no</code>
<code>hosts allow = 192.168.20.11</code>
<code>hosts deny = 0.0.0.0</code><code>/32</code>
<code>auth </code><code>users</code> <code>= rsync_backup</code>
<code>secrets </code><code>file</code> <code>=</code><code>/etc/rsync</code><code>.password</code>
<code>[data_bak] </code>
<code>comment = hhhhh</code>
<code>path = </code><code>/data/</code>
2、密码配置:
<code># cat /etc/rsync.password </code>
<code>rsync_backup:passnfs</code>
<code># ls -l /etc/rsync.password</code>
<code>-rw------- 1 root root 24 Jun 9 22:20 </code><code>/etc/rsync</code><code>.password</code>
3、启动873端口:
<code>rsync</code> <code>--daemon</code>
<code># netstat -lntp|grep 873</code>
<code>tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 23812</code><code>/rsync</code>
<code>tcp6 0 0 :::873 :::* LISTEN 23812</code><code>/rsync</code>
master:
1、下载sersync-64bit.tar.gz,解压安装,
<code>tar</code> <code>xf sersync-64bit.</code><code>tar</code><code>.gz</code>
<code>mv</code> <code>GNU-Linux-x86 </code><code>/usr/local/sersync</code>
<code>cd</code> <code>/usr/local/sersync</code>
<code>cp</code> <code>confxml.xml confxml.xml.bak</code>
2、配置confxml.xml:
<code> </code><code><sersync></code>
<code> </code><code><localpath </code><code>watch</code><code>=</code><code>"/data"</code><code>> </code><code># 同步数据目录</code>
<code> </code><code><remote ip=</code><code>"192.168.20.12"</code> <code>name=</code><code>"data_bak"</code><code>/> </code><code>#远程主机IP,远程rsync同步模块名称</code>
<code> </code><code><!--<remote ip=</code><code>"192.168.8.39"</code> <code>name=</code><code>"tongbu"</code><code>/>--></code>
<code> </code><code><!--<remote ip=</code><code>"192.168.8.40"</code> <code>name=</code><code>"tongbu"</code><code>/>--></code>
<code> </code><code><</code><code>/localpath</code><code>></code>
<code> </code><code><</code><code>rsync</code><code>></code>
<code> </code><code><commonParams params=</code><code>"-artuz"</code><code>/> </code><code># rsync 同步参数</code>
<code> </code><code><auth start=</code><code>"true"</code> <code>users</code><code>=</code><code>"rsync_backup"</code> <code>passwordfile=</code><code>"/etc/rsync.pas"</code><code>/> </code><code>#用户名密码文件</code>
<code> </code><code><userDefinedPort start=</code><code>"false"</code> <code>port=</code><code>"874"</code><code>/><!-- port=874 --></code>
<code> </code><code><timeout start=</code><code>"false"</code> <code>time</code><code>=</code><code>"100"</code><code>/><!-- timeout=100 --></code>
<code> </code><code><</code><code>ssh</code> <code>start=</code><code>"false"</code><code>/></code>
<code> </code><code><</code><code>/rsync</code><code>></code>
3、配置密码文件:
<code># cat /etc/rsync.pas </code>
<code>passnfs</code>
<code># ls -l /etc/rsync.pas</code>
<code>-rw------- 1 root root 11 Jun 9 22:30 </code><code>/etc/rsync</code><code>.pas</code>
4、执行sersync 命令守护进程,进行同步。
<code>/usr/local/sersync/sersync2</code> <code>-d -r -o </code><code>/usr/local/sersync/confxml</code><code>.xml</code>
添加定时任务监控
可以添加定时任务,对服务进程进行监控,如可以将下面的脚本加到master定时任务中每10min执行一次:
<code>#!/bin/sh</code>
<code>sersync=</code><code>"/usr/local/sersync/sersync2"</code>
<code>confxml=</code><code>"/usr/local/sersync/confxml.xml"</code>
<code>status=$(</code><code>ps</code> <code>aux |</code><code>grep</code> <code>'sersync2'</code><code>|</code><code>grep</code> <code>-</code><code>v</code> <code>'grep'</code><code>|</code><code>wc</code> <code>-l)</code>
<code>if</code> <code>[ $status -</code><code>eq</code> <code>0 ];</code>
<code>then</code>
<code>$sersync -d -r -o $confxml &</code>
<code>else</code>
<code>exit</code> <code>0;</code>
<code>fi</code>
同理,在slave上也可以将此脚本添加到定时任务:
<code>status=$(</code><code>ps</code> <code>aux|</code><code>grep</code> <code>rsync</code><code>|</code><code>grep</code> <code>-</code><code>v</code> <code>grep</code><code>|</code><code>wc</code> <code>-l)</code>
<code>if</code> <code>[ $status -</code><code>eq</code> <code>0 ]</code>
<code> </code><code>rsync</code> <code>--daemon</code>
<code> </code><code>exit</code> <code>0</code>
小提示: 脚本名称不要与监控的服务名有相同的字段,如果有相同字段需要修改if 判断条件。
本文转自 酥心糖 51CTO博客,原文链接:http://blog.51cto.com/tryingstuff/1933981