三、sersync+rsync实现服务器文件实时同步

一、为什么要用rsync+sersync架构?

1、sersync是基于inotify开发的,类似于inotify-tools的工具

2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录

二、rsync+inotify-tools与rsync+sersync架构的区别?

1、rsync+inotify-tools

a、inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;

b、rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低

2、rsync+sersync

a、sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;

b、rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。

总结:

当同步的目录数据量不大时,建议使用rsync+inotify

当同步的目录数据量很大时(几百G甚至1T以上)文件很多时,建议使用rsync+sersync

#rsync服务器上配置

1.部署rsync服务

yum install rsync  #安装rsync,如果嫌yum版本过低也可以源码安装

2.vim /etc/rsyncd.conf #默认rsync没有配置文件,创建一个,文件中#和汉字仅为注释,使用中请将所有注释清除


#Rsync server
uid = root
gid = root
use chroot = no                         # 安全相关
max connections = 2000                  # 并发连接数
timeout = 600                           # 超时时间(秒)
pid file =/var/run/rsyncd.pid           # 指定rsync的pid目录
lock file =/var/run/rsync.lock          # 指定rsync的锁文件【重要】
log file = /var/log/rsyncd.log          # 指定rsync的日志目录
ignore errors                             #忽略一些I/O错误
read only = false                       #设置rsync服务端文件为读写权限
list = false                            #不显示rsync服务端资源列表
hosts allow = 10.1.0.0/16               #允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
hosts deny = 0.0.0.0/32                 #禁止数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
auth users = rsync_backup               #执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开
secrets file =/etc/rsync.password       #用户认证配置文件,里面保存用户名称和密码
#################################################
[www]                                   # 模块
comment = www
path = /data/www/
#################################################
[bbs]
comment = bbs
path = /data/bbs/
#################################################
[blog]
comment = blog
path = /data/blog/
#rsync_config____________end

3、创建用户认证文件


echo 
"rsync_backup:123456">/etc/rsync.password  #配置文件,添加以下内容

4、设置文件权限

chmod 600
/etc/rsync.password

5.启动守护进程,并写入开机自启动


rsync --daemon
vim /etc/rc.local
# rsync server progress
/usr/bin/rsync --daemon

6.创建相关待同步的目录

mkdir -p /data/{www,bbs,blog}

#rsync客户端配置

1.安装rsync,方法同上

2.创建rsync配置文件,客户端创建即可,无需内容

touch
/etc/rsyncd.conf

3.配置rsync客户端相关权限认证:

echo "123456">/etc/rsync.password
 chmod 600
/etc/rsync.password

4.创建待同步数据,在客户端创建一些数据

mkdir -p
/data/{www,bbs,blog}
touch /data/www/www.log /data/bbs/bbs.log  /data/blog/blog.log

5.测试rsync是否同步


rsync  -avzP /data/www/
[email protected]::www 
--password-file=/etc/rsync.password
#rsync 
-avzP /backup/ rsync://[email protected]/backup/   --password-file=/etc/rsync.password 两种方法
#rsync 
-avzP /backup/ rsync://[email protected]/backup/test/   --password-file=/etc/rsync.password #test为服务器上的目录
参数: --delete 无差异同步
         
--bwlimit=KB/S  限速
          
--exclude=PATTERN       exclude
files matching PATTERN
          
--exclude-from=FILE     read
exclude patterns from FILE
          
--include=PATTERN       don’t
exclude files matching PATTERN
          
--include-from=FILE     read
include patterns from FILE

#此步骤必须成功才能进行下一步

6.开始部署sersync服务

tar fxz
sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/
cd /usr/local/
mv GNU-Linux-x86 sersync

7.配置sersync

cp
sersync/confxml.xml 
sersync/confxml.xml-bak
vim 
sersync/confxml.xml


修改24--28行
 24         <localpath
watch="/opt/tongbu">   ##监控的目录
 25             <remote
ip="127.0.0.1" name="tongbu1"/> ##备份服务器的ip和模块
 26             <!--<remote ip="192.168.8.39"
name="tongbu"/>-->
 27             <!--<remote
ip="192.168.8.40" name="tongbu"/>-->
 28         </localpath>
修改后的内容为:
24        
<localpath watch="/data/www">
25            
<remote ip="10.1.20.109" name="www"/>
26        
</localpath>

修改29--35行,认证部分(rsync密码认证)
29        
<rsync>
30            
<commonParams params="-artuz"/>   ##rsync命令的参数
31            
<auth start="false" users="root"
passwordfile="/etc/rsync.pas"/> ##认证用户和密码文件的位置
32            
<userDefinedPort start="false"
port="874"/><!-- port=874 -->
33            
<timeout start="false" time="100"/><!--
timeout=100 -->
34            
<ssh start="false"/>
35        
</rsync>

修改后的内容如下:
27        
<rsync>
28            
<commonParams params="-artuz"/>
29             <auth start="true"
users="rsync_backup"
passwordfile="/etc/rsync.password"/>
30            
<userDefinedPort start="false"
port="874"/><!-- port=874 -->
31            
<timeout start="true" time="100"/><!--
timeout=100 -->
32            
<ssh start="false"/>
33        
</rsync>

8.开启sersync守护进程同步数据

/usr/local/sersync/bin/sersync  -d -r -o /usr/local/sersync/conf/confxml.xml
配置sersync环境变量
echo"PATH=$PATH:/usr/local/sersync/">>/etc/profile
source /etc/profil

启动命令后返回结果如下为正常:**

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
option: -d    
run as a daemon
option: -r    
rsync all the local files to the remote servers before the sersync work
option: -o    
config xml name:  ./confxml.xml
daemon thread num: 10
parse xml config file
XML Parsing error inside file ‘./confxml.xml‘.
Error: File not found
At line 0, column 0.

同步测试

[[email protected] GNU-Linux-x86]#
./sersync2 -d -r -o ./confxml-www.xml

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
option: -d    
run as a daemon
option: -r    
rsync all the local files to the remote servers before the sersync work
option: -o    
config xml name:  ./confxml-www.xml
daemon thread num: 10
parse xml config file
host ip : localhost   
host port: 8008
daemon start,sersync
run behind the console
use rsync password-file :
user is   
rsync_backup
passwordfile is    
/etc/rsync.password
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)
Max threads numbers is: 22 = 12(Thread pool nums) +
10(Sub threads)
please according your cpu ,use -n param to adjust the cpu rate
------------------------------------------
rsync the directory recursivly to the remote servers
once
working please wait...
execute command: cd /data/www && rsync -artuz
-R --delete ./  --timeout=100
[email protected]::www --password-file=/etc/rsync.password >/dev/null
2>&1
run the sersync:
watch path is: /data/www

9.多实例情况

1、配置多个confxml.xml文件(比如:www、bbs、blog....等等)
    confxml-bbs.xml  confxml-blog.xml  confxml-www.xml(按照单个实例配置即可)
    2、根据不同的需求同步对应的实例文件
    rsync -avzP
/data/www/ [email protected]::www/  
--password-file=/etc/rsync.password
    rsync -avzP
/data/bbs/ [email protected]::bbs/  
--password-file=/etc/rsync.password
    rsync -avzP
/data/test/ [email protected]::blog/  
--password-file=/etc/rsync.passwor
分别启动即可

rsync缺点:

1.大量小文件同步时,比对时间长,有时候rsync进程会停止

2.同步大文件,10G这样的大文件有时也会有问题,会中断。未完整同步之前是隐藏文件,可通过参数续传

sersync的参数信息

参数-d:启用守护进程模式 参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍 c参数-n: 指定开启守护线程的数量,默认为10个 参数-o:指定配置文件,默认使用confxml.xml文件 参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块 参数-m:单独启用其他模块,使用 -m socket 开启socket模块 参数-m:单独启用其他模块,使用 -m http 开启http模块 不加-m参数,则默认执行同步程序

原文地址:https://www.cnblogs.com/yaokaka/p/11620753.html

时间: 2024-10-05 03:33:28

三、sersync+rsync实现服务器文件实时同步的相关文章

rsync+inotify 实现服务器文件实时同步

rsync+inotify 实现服务器文件实时同步 操作系统:CentOS 6.X 源服务器:192.168.80.132 目标服务器:192.168.80.128 目的:把源服务器上/data/app目录实时同步到目标服务器的/data/app下 具体操作: 第一部分:在目标服务器192.168.80.128上操作 一.在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config #SELINUX=enforcing #SELINUXTYPE=targ

Rsync+inotify实现文件实时同步

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

Centos 6.5 rsync+inotify 两台服务器文件实时同步

rsync和inotify是什么我这里就不在介绍了,有专门的文章介绍这两个工具. 1.两台服务器IP地址分别为: 源服务器:192.168.1.2 目标服务器:192.168.1.3 @todo:从源服务器(192.168.1.2)的/www/目录下的所有的文件实时同步到目标服务器(192.168.1.3)的/www_bak/目录下 源服务器下需要安装rsync和inotify,源服务器做为server端,实时的向目标服务器client端发送数据 2.安装 rsync 一般centos6.5下都

rsync+ssh+inotify实现服务器文件实时同步

如何实现两台web服务器的文件同步的,答案是rsync,但是,如何做到实时同步呢,cron已经达不到这样的要求了,同步的再快,也会有时间间隔,cron时刻执行,也会浪费系统的资源,下面,我将介绍ssh+rsync+inotify来实现两台web间的文件实时同步. 拓扑如下:  实验的linux系统为CentOS 6.5,实验之前确保开发环境已安装完毕 首先,我们介绍一下inotify,这是linux的一个新特性,在2.6的内核开始加入,它是监控文件系统,并且及时的向我们的rsync发出相关信息,

rsync+lsyncd实现文件实时同步

可参考http://seanlook.com/2015/05/06/lsyncd-synchronize-realtime/ 可参考http://openlinuxfly.blog.51cto.com/7120723/1679279 一.环境 lsyncd    192.168.3.71 rsync     192.168.3.72 二.配置rsync服务器 配置rsync以xinetd方式运行 [[email protected] ~]# yum install rsync -y [[emai

linux下两台服务器文件实时同步方案设计和实现

转:http://blog.csdn.net/5iasp/article/details/13630927 假设有如下需求: 假设两个服务器: 192.168.0.1 源服务器  有目录 /opt/test/ 192.168.0.2 目标服务器  有目录 /opt/bak/test/ 实现的目的就是保持这两个服务器某个文件目录保持实时同步 实现方式: 通过rsync+inotify-tools结合来实现 需要安装软件: 1.  rsync 同步软件 在 源服务器 和 目标服务器 都需要安装 源服

rsync+inotify实现文件实时同步-步骤详解

实验拓扑(centos7下):192.168.80.181 服务器端(主机名www.aa.com)192.168.80.182 客户端(主机名www.ab.com)1.使用SSH源:安装rsync,服务端和客户端同时安装,只使用客户端命令就OK了.systemctl stop firewalldsetenforce 0yum install -y rsync---以上三句在服务器端和客户端都要执行---------rsync -avz [email protected]:/tmp/ /opt/

centos7安装sersync2+rsync+inotify-tools实现文件实时同步

服务器准备: A:100.251.70.190 (客户图片文件的上传)从A同步到B B:100.251.70.191 (客服浏览器浏览下载) 操作步骤: (A和B服务器都必须安装的) # rpm -qa|grep rsync rsync-3.0.9-15.el7.x86_64 # yum install rsync(没有rsync就安装一下) (B服务器安装配置) #工作中指定用户(需要指定用户) uid = root gid = root #相当于黑洞.出错定位 use chroot = no

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

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