触发式文件同步在Sersync+Rsync中实现

admin5个月前笔记49
背景

通常我们在服务器上使用rsync加上crontab来定时地完成一些同步、备份文件的任务。随着业务和应用需求的不断扩大、实时性要求越来越高。一般rsync是通过校验所有文件后,进行差量同步,如果文件量十分庞大,那么rsync进行校验的过程也是十分耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过crontab方式进行触 发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。而Sersync+Rsync的组合能够较好地解决这种问题。

Sersync介绍

sersync是使用c++编写,而且对linux系统文 件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。 因此更快。
相比较上面两个项目,sersync配置起来很简单,其中bin目录下 已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。
另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状 态。
本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则 每10个小时对同步失败的文件重新同步。
本项目自带crontab功能,只需在 xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。
本项目socket与http插件扩展,满足您二次开发的需要。

实战过程
一、服务器环境
服务端:172.16.57.26 centos6.7 rsync-server  接收文件

客户端:172.16.57.25 centos6.7 sersync+rsync-client 发送文件
二、服务端安装rsync-server

1.安装rsync

rpm -qa | grep rsync #查看rsync是否已经安装,如果没有安装,yum install直接安装即可

2. 使用xinetd方式启动rsync

vim /etc/xinetd.d/rsync #修改disable = no,flags = IPv4

3. 修改rsync配置文件

mkdir /etc/rsyncd
vim /etc/rsyncd/rsyncd.conf #修改配置文件如下
# GLOBAL OPTIONS
motd file=/etc/motd
port=873
pid file=/var/run/rsyncd.pid
lock file = /var/lock/rsyncd
log file=/var/log/rsyncd
transfer logging = yes
log format = [op]:%o [ip]:%a [module]:%m [path]:%P [file]:%f [size]:%l
syslog facility=daemon
max connections=100

[recv]
comment = "recv data from 57.25"
path = /opt/rsync_data/recv #这边的目录的宿主要改为apprun,在这里同步过程中使用的是普通账户apprun
list = yes
use chroot = yes
uid = apprun
gid = apprun
read only = no
write only = no
exclude =
include =
auth users = rsync
secrets file = /etc/rsyncd/rsyncd.secrets
strict modes = yes
hosts allow = 172.16.57.25
hosts deny = *
 ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

4. 建立用户认证文件

vim /etc/rsyncd/rsyncd.secrets
test:111111     #格式   用户名:口令

chmod 600 /etc/rsyncd/rsyncd.secrets #权限设为600,否则启动会报错

5. 启动rsync

/etc/init.d/xinetd start
netstat -tpln | grep 873 #查看873端口是否已经在监听了
三、客户端安装sersync+rsync-client

1.安装rsync,和服务端一样,没有安装的话yum install安装

2.安装sersync

tar xzvf sersync2.5_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86 /opt/programs/sersync #解压并拷贝到安装目录

3. 服务端密码认证     

vim /etc/rsync.pas #在相应的目录下配置身份验证文件,里面输入服务端的密码,并chmod 600
chmod 600 /etc/rsync.pas

4. 启动sersync

./sersync2 -d -o confxml.xml
四、测试认证

在客户端下监控目录/opt/rsync_data/send下添加文件或者删除,服务端的接受目录都会实时地进行更新。

在此例中,服务器iptables和selinux均处于关闭状态。

这种方法同步文件的时候,同步文件的数量如果很多,可能会有部分文件在同步过程中缺失。查阅相关资料后,找到了如下的解决方案。由于本例中,使用的是xinetd方式启动的rsync服务,在xinetd的配置文件中,修改几个参数如下:

vim /etc/xinetd.conf
修改几个参数:
 cps             = 500 30
 instances       = UNLIMITED
 per_source      = UNLIMITED


相关文章

为啥一震就坏?机械硬盘的构造原理是什么

为啥一震就坏?机械硬盘的构造原理是什么

最近本人的一块2TB机械硬盘挂掉了,里面有工作五六年的重要数据,以及一些生活当中比较重要的照片被销存了。其实这块硬盘之前没有任何的异样,用鲁大师查询硬盘的时候,也没有出现任何警告等消息,仔细回想,有可...

Flex 布局教程

Flex 布局教程

网页布局(layout)是 CSS 的一个重点应用。布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。...

轻量应用服务器和云服务器的区别

轻量应用服务器和云服务器的区别

轻量应用服务器和云服务器都是提供虚拟化服务的服务器。但是,它们在提供服务的方式和规模上有所区别。轻量应用服务器主要针对单个应用程序的部署和运行,通常不提供完整的操作系统环境和服务。它可以更快地响应请求...

如何解决mysql主从延迟

MySQL内建的复制功能是构建大型、高性能应用程序的基础。将MySQL的数据分布到多个系统上去,这种分布式的机制,是通过将MySQL的某一台主机的数据,复制到其他的主机slaves上,并重新执行一边来...

Linux下su与su -命令的本质区别

Linux下su与su -命令的本质区别

su与su -命令的本质区别我首先是用su命令切换到root身份的,但是运行useradd时,出现错误:bash: useradd: command not found。google了一下,原因是在这...

亚马逊云免费搭建服务器创建你的实例

亚马逊云免费搭建服务器创建你的实例

作为一个开发者,一直希望能拥有一台自己的服务器能部署应用,很早就打上了阿里云/腾讯云的主意,但是二者的试用时长都不长,阿里是最多30天,而腾讯更是只有7天.因为没有特别的需求所以一直搁置在一边之前就听...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。