sersync基于rsync+inotify实现数据实时同步

一、环境描述

需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步

主服务器A:192.168.1.23

从服务器B:192.168.1.243

实时同步/var/atlassian目录到从服务器。

二、实施

1.从服务器192.168.1.243 rsync服务搭建

1.1安装软件包

wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
tar xf rsync-3.1.1.tar.gz –C /opt/
mv /opt/rsync-3.1.1 /opt/rsync
cd /opt/rsync
./configure
make && make install
创建rsyncd.conf文件
vi /etc/rsyncd.conf
vim /etc/rsyncd.conf
#以root用户运行rsync服务
uid = root
#以root用户运行rsync服务
gid = root
#增加对目录文件软连接的备份
use chroot = no
#最大连接数
max connections = 1200
#超时时间
timeout = 800
#PID存放位置
pid file = /var/run/rsyncd.pid
#锁文件存放位置
lockfile = /var/run/rsyncd.lock
#日志存放位置
log file = /var/log/rsyncd.log
#认证模块名
[atlassian]
path = /var/atlassian
ignore errors = yes
hosts allow = 192.168.1.23
hosts deny = * 
read only = no
write only = no
list = yes#主服务器的同步用户
auth users = ihome
secrets file = /etc/rsync.pass

注:/etc/rsync.pass 文件格式为username:password

文件权限必须为600否则服务不正常

hosts allow 定义可为单独IP也可为网段,网段格式为172.26.7.0/24

也可为172.26.7.0/255.255.255.0

创建rsync.pass文件

echo “root:password”>>/etc/rsync.pass
chmod 600 /etc/rsync.pass

1.3启动服务

[[email protected] atlassian]#rsync --daemon –v
开机自启动
[[email protected]-db atlassian]#echo "rsync --daemon –v">>/etc/rc.local

2.主服务器192.168.1.23配置

2.1软件安装

下载wget  http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz

解压
tar xf rsync-3.1.1.tar.gz –C /opt
tar xf inotify-tools-3.14.tar.gz –C /opt
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz –C /opt

cd /opt
mv rsync-3.1.1 rsync
mv inotify-tools-3.14 inotify-tools
mv GNU-Linux-x86 sersync

编译安装rsync
cd rsync
./configure && make && make install
编译安装inotify-tools
cd inotify-tools
./configure && make && make install

2.3 sersync服务配置

vim /opt/sersync/confxml.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="8008"></host>
    <debug start="false"/>
    <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="/var/atlassian">
            <remote ip="192.168.1.243" name="atlassian"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
        </localpath>
        <rsync>
            <commonParams params="-artuzlpog"/>
            <auth start="true" users="ihome" passwordfile="/opt/sersync/user.pass"/>
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="false" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
        </rsync>
        <failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
        <crontab start="false" 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>

    <plugin name="socket">
        <localpath watch="/var/atlassian">
            <deshost ip="192.168.1.243" port="8009"/>
        </localpath>
    </plugin>
    <plugin name="refreshCDN">
        <localpath watch="/data0/htdocs/cms.xoyo.com/site/">
            <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
            <sendurl base="http://pic.xoyo.com/cms"/>
            <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
        </localpath>
    </plugin>
</head>

配置密码文件

echo “password”>>/opt/sersync/user.pass

注:文件权限必须为600否则启动异常

2.4服务启动

nohup /opt/sersync/sersync2  -r -d -o/opt/sersync/confxml.xml >/opt/sersync/rsync.log  2>&1 &
#######如果是多个目录同步需要启动两个进程
nohup /opt/sersync/sersync2  -r -d -o/opt/sersync/downxml.xml >/opt/sersync/downrsync.log  2>&1
-d:启用守护进程模式
-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
-n:指定开启守护线程的数量,默认为10个
-o:指定配置文件,默认使用confxml.xml文件
开机启动echo "nohup /opt/sersync/sersync2  -r -d -o/opt/sersync/confxml.xml >/opt/sersync/rsync.log  2>&1 & ">>/etc/rc.local

三、验证

在主服务器上的/var/atlassian目录下创建文件查看从服务器192.168.1.243上是否有同步。

参考:http://9402618.blog.51cto.com/9392618/1728794

时间: 2024-12-28 01:41:42

sersync基于rsync+inotify实现数据实时同步的相关文章

[转帖]sersync基于rsync+inotify实现数据实时同步

sersync基于rsync+inotify实现数据实时同步 https://www.jianshu.com/p/d532a34e5cc5 前言 提到数据同步就必然会谈到rsync,一般简单的服务器数据传输会使用ftp/sftp等方式,但是这样的方式效率不高,不支持差异化增量同步也不支持实时传输. 原文地址:https://www.cnblogs.com/nbxcnxvcnb/p/12393252.html

基于rsync+inotify实现数据实时同步传输

前言 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但随着文件数量的增大和实时同步的要求,rsync已不能满足需求,随之rsync+inotify便应运而生.本文将讲解rsync的基础知识和如何基于rsync+inotify实现数据实时同步传输. rsync相关介绍 rsync(remote sync)是一款快速增量备份工具(远程同步),支持本地复制,或者与其他SSH(安全传输).rsync主机同步.

利用rsync+inotify实现数据实时同步脚本文件

将代码放在Server端,实现其它web服务器同步.首先创建rsync.shell,rsync.shell代码如下: #!/bin/bash host1=133.96.7.100 host2=133.96.7.101 host3=133.96.7.102 src=/data/www/ dst1=web1 dst2=web2 dst3=web3 user1=web1 user2=web2 user3=web3 /usr/local/inotify/bin/inotifywait -mrq --ti

rsync+inotify实现数据实时同步备份

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性.可靠性.时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记. 实验背景: 操作系统          IP         机器名        角色 CentOS 7.2       172.16.22.1     nginx01        数据源(服务器端) CentOS 7.2       172.16.22

rsync + inotify 实现数据实时同步

要求:两台Web服务器实现数据同步(我这里使用的是Centos 6.2-x64) 服务器一:172.16.11.126 服务器二:172.16.11.127 一.配置ssh备份源172.16.11.126(这里推荐使用专用的普通用户,注意相应的权限问题,如遇特殊情况使用root用户也可以,即不用考虑权限问题了. ) 1.新建备份用户rget rput 分别用来上传下载 [root@localhost ~]#  useradd rget [root@localhost ~]#  useradd r

rsync+inotify实现数据实时同步

inotify简介 inotify是一种强大的.细粒度的.异步的文件系统事件监控机制,Linux内核从2.6.13开始引入,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,例如打开.关闭.移动/重命名.删除.创建或者改变属性. 配置inotify需要rsync服务能直接传输数据(免密码传输). rsync配置请参考我的另一篇利用rsync进行数据同步. 服务端已配置完毕,inotify配置在客户端. 1.[[email protected] ~]# wget http://

基于rsync+inotify实现文件实时同步

rsync英文名remote  synchronization,可使本地和远程两台主机之间的数据快速复制同步镜像 远程备份的功能,rsync在拷贝时候会先比较源数据跟目标数据,不一致才复制,实现增量拷贝 监听于873/tcp rsync有许多选项: -n: 在不确定命令是否能按意愿执行时,务必要事先测试:-n可以完成此功能: -v: --verbose,详细输出模式 -q: --quiet,静默模式 尽可能输出少 -c: --checksum,开启校验功能,强制对文件传输进行校验 -r: --r

通过rsync+inotify实现数据实时备份同步

一.环境描述 测试环境 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 环境描述: 主服务器172.26.7.50 ,从服务器172.26.7.51 实时同步/home/ 及/download 目录到从服务器 二.实施方法 1.从服务器172.26.7.51 rsync服务搭建 1.1下载软件包至从服务器 下载地址:http://rsync.samba.org/ftp/rsync/src 可根据环境需求下载相应的软件

Rsync+inotify实现文件实时同步

数据备份.文件备份是运维.DBA等岗位最熟悉不过的话题,这里不介绍数据库的备份,简单介绍一下文件同步工具,这样的工具有很多,Windows环境下有Goodsync.FreeFileSync等,Linux下rsync.unison等,常用的实时同步,是几种工具的组合,经过组合的工具达到文件实时同步的效果. 一.常用实时同步方案 1.NFS网络文件系统 该方案是分布式架构中,解决不同节点对同一资源访问的问题,搭建NFS服务器,将其挂载在不同的节点,每个节点将公用的数据存储在NFS服务器上,实现文件的