天天看點

sersync+rsync 資料同步配置

目标: 

在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>&lt;sersync&gt;</code>

<code>        </code><code>&lt;localpath </code><code>watch</code><code>=</code><code>"/data"</code><code>&gt;                </code><code># 同步資料目錄</code>

<code>            </code><code>&lt;remote ip=</code><code>"192.168.20.12"</code> <code>name=</code><code>"data_bak"</code><code>/&gt;  </code><code>#遠端主機IP,遠端rsync同步子產品名稱</code>

<code>            </code><code>&lt;!--&lt;remote ip=</code><code>"192.168.8.39"</code> <code>name=</code><code>"tongbu"</code><code>/&gt;--&gt;</code>

<code>            </code><code>&lt;!--&lt;remote ip=</code><code>"192.168.8.40"</code> <code>name=</code><code>"tongbu"</code><code>/&gt;--&gt;</code>

<code>        </code><code>&lt;</code><code>/localpath</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>rsync</code><code>&gt;</code>

<code>            </code><code>&lt;commonParams params=</code><code>"-artuz"</code><code>/&gt;  </code><code># rsync 同步參數</code>

<code>            </code><code>&lt;auth start=</code><code>"true"</code> <code>users</code><code>=</code><code>"rsync_backup"</code> <code>passwordfile=</code><code>"/etc/rsync.pas"</code><code>/&gt; </code><code>#使用者名密碼檔案</code>

<code>            </code><code>&lt;userDefinedPort start=</code><code>"false"</code> <code>port=</code><code>"874"</code><code>/&gt;&lt;!-- port=874 --&gt;</code>

<code>            </code><code>&lt;timeout start=</code><code>"false"</code> <code>time</code><code>=</code><code>"100"</code><code>/&gt;&lt;!-- timeout=100 --&gt;</code>

<code>            </code><code>&lt;</code><code>ssh</code> <code>start=</code><code>"false"</code><code>/&gt;</code>

<code>        </code><code>&lt;</code><code>/rsync</code><code>&gt;</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 &amp;</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