文档同步-Rsync+sersync架构搭建

目录

文档数据同步

Rsync+sersync架构

文档同步规划

sync简介

安装Rsync

配置Rsync

主配置文件

密码文件

启动rsync

文件同步测试

安装sersync

配置sersync

维护配置文件

修改内核参数

进程守护

自动同步验证


文档数据同步

通过sersync达到实时同步文档及文件夹到目标主机目录的需求,实现生产中心文档数据的实时备份需求。

Rsync+sersync架构

sersync是基于Inotify开发的,类似于Inotify-tools的工具, sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录。

文档同步规划

操作系统: SUSE Linux Enterprise Server 11 (x86_64)

主数据中心:192.168.20.57 (主数据中心文档服务器)

备数据中心:192.168.30.57 (备数据中心文档服务器)

同步目录:/app/jboss7/jboss-as-7.1.1.Final/docs

sync简介

rsync,remote synchronize顾名思义,它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外它还是免费的软件。

rsync 包括如下的一些特性:

能更新整个目录和树和文件系统;
  有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
  对于安装来说,无任何特殊权限要求;
  对于多个文件来说,内部流水线减少文件等待的延时;
  能用rsh、ssh 或直接端口做为传输入端口;
  支持匿名rsync 同步文件,是理想的镜像工具。

安装Rsync

//rsync的官方网站:http://rsync.samba.org/可以从上面得到最新的版本。该版本也可以满足文档同步的需要,故此直接采用SUSE 11 sp3收录的版本。

配置Rsync

注:此配置主库备库均需配置

//rsync的主要有以下三个配置文件:

/rsyncd.conf(主配置文件)

/rsyncd.secrets(密码文件)

/rsyncd.motd(rysnc服务器信息)

主配置文件

# vim /etc/rsyncd.conf

# chmod 600 /etc/rsyncd.conf

#jboss组

gid = jboss

#jboss用户

uid = jboss7

read only = no

use chroot = no

transfer logging = true

log format = %h %o %f %l %b

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

#此处配置源和目标IP,同时支持配置网段

hosts allow = 192.168.20.57/24 192.168.30.57/24

#slp refresh = 300

 

[home_owen]

path = /app/jboss7/jboss-as-7.1.1.Final/docs

comment = home_owen

#注:关于auth users是必须在服务器上存在的真实的系统用户,如果你想用多个用户以,号隔开,比如auth users = easylife,root

auth users =jboss7

secrets file = /etc/rsyncd.secrets

密码文件

  • 加密密码

//创建主库加密文件,密码不必与用户的登录密码一致

# vim /etc/rsyncd.secrets

# chmod 600 /etc/rsyncd.secrets

  • 解密密码

//密码必须与主库加密密码一致

# vim /etc/passwd.txt

# chmod 600 /etc/passwd.txt

启动rsync

service rsyncd start

文件同步测试

//注:rsync命令中如果源路径末尾有/,只复制指定文件夹内容;如果没有/,会同时复制最后一层文件夹

//主库切换到jboss7用户生成测试文件

# /app/jboss7/jboss-as-7.1.1.Final/docs

# touch test

//主库使用root执行同步命令

rsync -avH --port=873 --progress --delete /app/jboss7/jboss-as-7.1.1.Final/docs/ jboss7@192.168.30.57::home_owen --password-file=/etc/passwd.txt

查看备库文件夹/app/jboss7/jboss-as-7.1.1.Final/docs下,是否生成测试文件test。如有则说明同步成功。

安装sersync

// sersync实时触发rsync进行同步

//创建安装路径

# mkdir -p /usr/local/sersync

//解压

# tar -xzvf sersync2.5.4_64bit_binary_stable_final.tar.gz

# mv GNU-Linux-x86/* /usr/local/sersync/

# rm -rf GNU-Linux-x86

配置sersync

 

维护配置文件

 

# /usr/local/sersync/

# vim confxml.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<head version="2.5">

<!--主库IP-->

    <host hostip="192.168.20.57" port="8008"></host>

    <debug start="true"/>

    <fileSystem xfs="false"/>

    <filter start="false">

         <exclude expression="(.*)\.svn"></exclude>

         <exclude expression="(.*)\.gz"></exclude>

         <exclude expression="^info/*"></exclude>

         <exclude expression="^static/*"></exclude>

    </filter>

    <inotify>

         <delete start="true"/>

         <createFolder start="true"/>

         <createFile start="false"/>

         <closeWrite start="true"/>

         <moveFrom start="true"/>

         <moveTo start="true"/>

         <attrib start="false"/>

         <modify start="false"/>

    </inotify>

 

<sersync>

<!-- 同步目录-->

         <localpath watch="/app/jboss7/jboss-as-7.1.1.Final/docs">

<!--备库IP-->

             <remote ip="192.168.30.57" name="home_owen"/>

             <!--<remote ip="192.168.8.39" name="tongbu"/>-->

             <!--<remote ip="192.168.8.40" name="tongbu"/>-->

         </localpath>

         <rsync>

<!-- 认证参数、是否认证、认证用户及密码文件-->

             <commonParams params="-avH"/>

             <auth start="true" users="jboss7" passwordfile="/etc/passwd.txt"/>

             <userDefinedPort start="false" port="873"/><!-- port=874 -->

             <timeout start="false" time="100"/><!-- timeout=100 -->

             <ssh start="false"/>

         </rsync>

<!--同步传输失败时会重新传送,再次失败写入rsync_fail_log.sh,然后每隔一段时间(timeToExecute),执行该脚本重新传送,然后清空该脚本。可以通过path来设置日志路径-->

         <failLog path="/usr/local/sersync/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->

         <crontab start="true" schedule="600"><!--600mins-->

             <crontabfilter start="false">

                   <exclude expression="*.php"></exclude>

                  <exclude expression="info/*"></exclude>

             </crontabfilter>

         </crontab>

         <plugin start="false" name="command"/>

    </sersync>

    <plugin name="command">

         <param prefix="/bin/sh" suffix="" ignoreError="true"/>   <!--prefix /opt/tongbu/mmm.sh suffix-->

         <filter start="false">

             <include expression="(.*)\.php"/>

             <include expression="(.*)\.sh"/>

         </filter>

    </plugin>

</head>

 

修改内核参数

//查看服务器内核是否支持inotify(SUSE 11sp3 以及以上版本支持)

# cd /proc/sys/fs/inotify/

 

//修改inotify默认参数  

# vim /etc/sysctl.conf

# inotify队列最大长度,如果值太小,会出现"** Event Queue Overflow **"错误,导致监控文件不准确

fs.inotify.max_queued_events=99999999

#保证max_user_watches值大于同步文件数

fs.inotify.max_user_watches=99999999

#每个用户创建inotify实例最大值

fs.inotify.max_user_instances=65535

//使参数生效

# sysctl -p

进程守护

# vim /usr/local/sersync/check_sersync.sh

#!/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

# chmod +x /usr/local/sersync/check_sersync.sh

# crontab -e

*/5 * * * * root /usr/local/sersync/check_sersync.sh > /dev/null 2>&1

自动同步验证

//在主库创建测试文件

# cd /app/jboss7/jboss-as-7.1.1.Final/docs

# touch test123

//inotify自动提示,并在备库对应目录生成文件,代表自动同步成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值