利用金山逍遥网sersync实现vps网站文件及数据库同步镜像备份

本文搭建过程为流水理鱼wwek(https://www.iamle.com)原创,转载请注明!

    1、问题来源

主服务器:CentOS5 vps , 各种linux系统。

镜像客户端:windows(xp、2003、vista、7) ,各种linux

需求:自动同步vps上的网站目录文件到镜像服务器。并采用增量方式。 

本文中也许有的方法太过累赘,提供一个方法而已。你可以根据自己需要而搭建。VMware挂载物理盘进去比colinux方便的多,colinux的搭建比VMware安装linux时间上短点而已。我这里是镜像站是windows系统上运行的colinux。 如果你镜像客户端已经是linux系统,可以跳过colinux部分。

    折腾是必然的,sersync适合用于镜像操作,如果单单备份,采用服务器ftp,客户端Beyond Compare Pro更来得简单方便。

  2、软件准备

     ①、金山逍遥网 sersync 用于对比同步

     Sersync 是金山逍遥网技术支持部平台组周洋同学,开发的一款基于 inotify + rsync 的大量文件的多服务器自动同步程序,目前已开源,开源协议为 New BSD License。

原理:
    使用 Linux 2.6 内核的 inotify 监控 Linux 文件系统事件,被监听目录下如果有文件发生修改,sersync 将通过内核自动捕获到事件,并将该文件利用 rsync 同步到多台远程服务器。sersync 仅仅同步发生增、删、改事件的单个文件或目录,不像rsync镜像同步那样需要比对双方服务器整个目录下数千万的文件,并且支持多线程同步,因此效率非常高。

应用:
    金山游戏官网的 CMS 内容发布系统。无论编辑通过 Web 还是 FTP 上传图片、视频、附件,还是系统工程师直接去CMS发布服务器上增加、修改、删除文件,干完这些事情后不用做任何处理,sersync 会自动将发生增、删、改事件的文件同步到远程服务器,并可以在文件同步完成后,自动调用 CDN(ChinaCache)缓存刷新接口,刷新发生修改、删除的文件的访问 URL。
更多内容,请访问项目网址:http://code.google.com/p/sersync/

来源 http://blog.s135.com/sersync/

32位 二进制直接可运行

http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz

64位 二进制直接可运行

http://sersync.googlecode.com/files/sersync2.5_64bit_binary_stable_final.tar.gz

源码包

http://sersync.googlecode.com/files/sersync2.5_source.tar.gz

    ②coLinux-0.7.7.1.exe 便携版

用于windows环境构建linux系统。异可以采用VMware等虚拟机。

下载地址 http://sourceforge.net/projects/colinux/files/coLinux-stable/0.7.7.1-linux-2.6.26.8/coLinux-0.7.7.1.exe/download

    ③WinPcap_4_1_2

用于windows环境colinux网络支持所需组建。

下载地址 http://www.winpcap.org/install/bin/WinPcap_4_1_2.exe

本文搭建过程为流水理鱼wwek(https://www.iamle.com)原创,转载请注明!

  

3、镜像客户端站安装配置sersync

如果客户端也是linux可以跳过windows安装colinux环节了。或者你已经安装好VMware虚拟机下的linux系统。

      安装WinPcap_4_1_2  一路next默认安装即可。

    安装colinux

CoLinux-Install

下载colinux专用Debian系统。

http://sourceforge.net/projects/colinux/files/Images%202.6.x%20Debian/Debian%205.0%20Lenny/Debian-5.0r2-lenny.7z/download

需要其他版本linux到http://sourceforge.net/projects/colinux/files/中选择下载

把下载下来的Debian-5.0r2-lenny.7z解压到colinux安装根目录下。

打开debian-lenny.conf

把eth0=slirp 改为#eth0=slirp

把#eth1=tuntap 改为 eth0=tuntap也就是去掉#号。

然后桥接你物理本地连接和colinux增加的网卡,方法是同时选中2个网卡然后右键桥接即可。

网上关于网络设置的摘录:在coLinux内访问网络有三种方式

1) slirp 这是最简单的方式,coLinux作为一个应用程序,直接使用host的网络。而且,也可以把host上的某些端口映射到colinux上。这种方式的缺点是比较慢,而且某些应用无法实现。例子: eth0=slirp,,tcp:2222:22/tcp:8080:80

2)tuntap 这是通过一个虚拟的网络设备和coLinux通信。例子: eth0=tuntap coLinux内需要访问外部网络的时候,可以在真正的网卡上启动Internet Connection Sharing, 也可以建立Bridge Connection,把真正的网卡和虚拟的网卡连接起来。

3)pcap-bridge 这是利用WinPcap来实现的桥连接。首先要安装WinPCap,然后选择某一本地网络设备进行连接,例子: eth0=pcap-bridge,Local Area Connection “Local Area Connection”是进行连接的网络设备的名字。

运行debian-lenny.bat 即可启动colinux

root密码colinux

colinux的ip为dhcp分配,你可以在网关设备上通过colinux的mac来静态dhcp分配。

或则为Debian配置好固定ip。

apt-get  install rsync

#安装sersync支持组建rsync

wget http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz

tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz

cd GNU-Linux-x86/

vi confxml.xml

#vi编辑器的使用方法不在累述。 (resync的配置说明

 

     4、主服务器端安装配置sersync

进入远程服务器ssh控制窗口,下载安装sersync,理鱼的vps为CentOS5 32bit。

yum -y install rsync

#安装sersync支持组建rsync

wget http://sersync.googlecode.com/files/sersync2.5_32bit_binary_stable_final.tar.gz

tar zxvf sersync2.5_32bit_binary_stable_final.tar.gz

cd GNU-Linux-x86/

vi confxml.xml

#编辑 confxml.xml 配置文件。

resync的配置说明

sersync2 完全安装配置说明(一) —-基本功能使用

当前版本的sersync依赖于rsync进行同步。如下图所示,在同步主服务器上开启sersync,将监控路径中的文件同步到目标服务器,因此需要在主服务器配置sersync,在同步目标服务器配置rsync。对于rsync配置,在google上可以找到很多资料,以下只是一些必要的配置和使用说明,仅供参考,请根据您的实际情况修改。

sersync

如图所示,需要在同步主服务器上配置sersync,在同步目标服务器配置rsync,并在目标服务器开启rsync守候进程,这样在主服务器产生的文件,就会被sersync实时同步到多个目标服务器。在centos系统下默认已经安装了rsync,只需进行配置,并开启rsync守候进程即可。
配置同步目标服务器rsync
在多台目标服务器上配置如下:
vi /etc/rsyncd.conf

uid=root
gid=root
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock

[tongbu1]
path=/opt/tongbu1
comment = xoyo video files
ignore errors = yes
read only = no
hosts allow = 192.168.0.100/24
hosts deny = *

上面配置文件,表明允许主服务器(假设ip为192.168.0.100)访问,rsync同步模块名为[tongbu1],将同步过来的文件放入path指定的目录/opt/tongbu1。
如果有多台从服务器,则每一台都需要进行类似的配置。
配置好之后,使用如下命令,开启rsync守护进程:
rsync –daemon

在主服务器上安装配置sresync

在google code下载sersync的可执行文件版本,里面有配置文件与可执行文件,这里用sersync2.5进行说明,新版本配置形式类似。
tar -zxvf sersyncXxxx_xxbit_binary.tar.gz
cd GNU-Linux-x86/
vi confxml.xml
修改如下部分:
<sersync>
<localpath watch=”/opt/tongbu”>
<remote ip=”192.168.0.104″ name=”tongbu1″/>
<remote ip=”192.168.0.105″ name=”tongbu1″/>
</localpath>
表明要将主服务器上本地的/opt/tongbu 路径下的文件,同步到远程服务器 192.168.0.104 与 192.168.0.105上的tongbu1 模块。
运行Sersync与Sersync启动参数
sersync会对目录进行监控,将变化的目录或文件同步到远程服务器。sersync是递归监控的,如果有多级目录,都会同步到远程服务器。常用启动方式如下:

1.在主服务器上开启sersync守护进程,使sersync在后台运行,开启实时同步。

./sersync -d

过程如下:
[root@localhost GNU-Linux-x86]# ls

confxml.xml  sersync2
[root@localhost GNU-Linux-x86]# ./sersync2 -d
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
daemon thread num: 10
parse xml config file
host ip : localhost     host port: 8008
config xml parse success
please set /etc/rsyncd.conf max connections=0 Manually
sersync working thread 12  = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
please according your cpu ,use -n param to adjust the cpu rate
run the sersync:
watch path is: /opt/tongbu

表明,sersync已经开启,可以在本地监控路径下建立文件,查看远程是否同步成功。

2.在开启实时监控的之前对主服务器目录与远程目标机目录进行一次整体同步
./sersync -r
如果需要将sersync运行前,已经存在的所有文件或目录全部同步到远程,要以-r参数运行sersync,将本地与远程整体同步一次。
如果设置了过滤器,即在xml文件中,filter为true,则暂时不能使用-r参数进行整体同步。-r参数将会无效

3.查看启动参数帮助

./sersync –help


4.指定配置文件
./sersync -o XXXX.xml

对于sersync使用可执行文件目录下的默认配置文件confxml.xml,如果需要使用另一个配置文件,可以使用-o参数指定其它配置文件。

5.指定默认的线程池的线程总数
./sersync -n num
例如 ./sersync -n 5 则指定线程总数为5,如果不指定,默认启动线程池数量是10,如果cpu使用过高,可以通过这个参数调低,如果机器配置较高,可以用-n跳高线程总数。
6.不进行同步,只运行插件
./sersync -m pluginName

       例如./sersync -m command,则在监控到文件事件后,不对远程目标服务器进行同步,而是直接运行command插件。
7.多个参数可以配合使用
./sersync -n 8 -o abc.xml -r -d

表示,设置线程池工作线程为8个,指定abc.xml作为配置文件,在实时监控前作一次整体同步,以守护进程方式在后台运行。
8.通常情况下,对本地到远程整体同步一遍后,在后台运行实时同步。
./sersync -r -d

发表回复