一、Sersync服务介绍
1 为什么要用sersync
- sersync是基于inotify开发的,类似于inotify-tools的工具
- sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的文件或者目录
- 因为服务异常导致的同步失败有记录,便于恢复,确保高可用!
rsync+inotify-tools
a、inotify只能记录下被监听的目录发生了变化(增,删,改)并没有把具体是哪个文件或者哪个目录发生了变化记录下来;
b、rsync在同步的时候,并不知道具体是哪个文件或目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此效率很低
rsync+sersync
a、sersync可以记录被监听目录中发生变化的(增,删,改)具体某个文件或目录的名字;
b、rsync在同步时,只同步发生变化的文件或目录(每次发生变化的数据相对整个同步目录数据来说很小,rsync在遍历查找对比文件时,速度很快),因此效率很高。
二、同步过程和原理
1 同步过程
- 在同步服务器上开启sersync服务,sersync负责监控配置路径中的文件系统事件变化
- 调用rsync命令把更新的文件同步到目标服务器;
- 需要在主服务器配置sersync,在同步目标服务器配置rsync server(注意:是rsync服务
2 同步原理
- 用户实时的往sersync服务器上写入更新文件数据;
- 此时需要在同步主服务器上配置sersync服务;
- 在另一台服务器开启rsync守护进程服务,以同步拉取来自sersync服务器上的数据;
通过rsync的守护进程服务后可以发现,实际上sersync就是监控本地的数据写入或更新事件;然后,再调用rsync客户端的命令,将写入或更新事件对应的文件通过rsync推送到目标服务器。
三、案例
案例: 实现web上传视频文件,实则是写入NFS至存储,当NFS存在新的数据则会实时的复制到备份服务器
角色 |
内网IP(LAN) |
外网IP(NAT) |
安装工具 |
web01 |
eth1:172.16.1.7 |
eth0:10.0.0.7 |
httpd php |
nfs-server |
eth1:172.16.1.31 |
eth0:10.0.0.31 |
nfsServer、rsync+inotify+sersync |
backup |
eth1:172.16.1.41 |
eth0:10.0.0.41 |
rsync-server |
1 web上传视频至nfs存储
2 web和nfs的数据都备份在备份服务器的/backup
3 如何将nfs的数据实时的同步到备份服务器的/data目录
4 如何平滑的迁移nfs数据到backup服务器。并且让后续的上传都是上传至backup (不能出现业务中断)