文章目录
实时同步概述
(监控端:安装inotify-tools,rsync,准备要传到备份服务器的一端
备份端:存储监控端的一端
监控端增加减少文件,备份端实时同步
备份端增加减少文集,监控端没变化)
-
什么是实时同步:
只要当前目录发生变化则会触发一个事件,事件触发后将变化的目录同步至远程服务器; -
为什么要实时同步:
保证数据的连续性,减少人力维护成本,解决nfs单点故障 -
实时同步实现原理:
实时同步需要借助inotify通知接口,用来监控目录的变化,如果监控的目录发生变更,则触发动作,这个动作可以是进行一次同步操作,或其他操作; -
实时同步工具选择:
有sersync、inotify+rsync,通常我们会选择sersync,因为sersync是国人基于rsync+inotify-tools开发的工具,不仅保留了有点同事还强化了试试监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。sersync项目地址
lnotify简介
Inotify是一种强大的,细粒度的,异步的文件系统事件监视机制,Linux2.6.13起加入了inotify支持,通过inotify可以监控文件系统中添加,删除,修改,移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施这样监控的软件,另外一个这样效果的软件是中国人周洋在金山公司开发的sersync,还有一个配置更简单的软件叫lsyncd
#查看当前系统是否支持inotify
[root@nfs ~]# uname -r
3.10.0-957.27.2.el7.x86_64
[root@nfs ~]# ls -l /proc/sys/fs/inotify/
total 0
-rw-r--r-- 1 root root 0 Sep 12 16:17 max_queued_events
-rw-r--r-- 1 root root 0 Sep 12 16:17 max_user_instances
-rw-r--r-- 1 root root 0 Sep 12 16:17 max_user_watches
[root@nfs ~]# rpm -qc inotify-tools
package inotify-tools is not installed
[root@nfs ~]# yum -y install inotify-tools
[root@nfs01 ~]# ls -l /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 7月 18 18:06 max_queued_events
-rw-r--r-- 1 root root 0 7月 18 18:06 max_user_instances
-rw-r--r-- 1 root root 0 7月 18 18:06 max_user_watches
########################################################
max_queued_events =====>设置inotify设置inotify实例事件(event)队列可容纳的事件数量
max_user_instances =====>设置每个用户可以运行的inotify或者inotifywatch命令的进程数
max_user_watches =====>设置inotifywait或者inotifywatch命令可以监视的文件数量(单进程)
sysctl命令 被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。它包含一些TCP/ip堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。
[root@nfs01 ~]# inotifywait --help
inotifywait参数说明
参数名称 参数说明
-m ,-monitor 始终保持事件监听状态
-r,-recursive 递归查询目录
-q,-quiet 只打印监控事件的信息
-exclude 排除文件或目录时,不区分大小写
-t,-timeout 超时时间
-timefmt 指定时间输出格式
-format 指定时间输出格式
-e,event 后面指定增,删,改等事件
inotifywait events 事件说明
access 读取文件或目录内容
modify 修改文件或目录内容
attrib 文件或目录的属性改变
close_write 修改真实文件内容
close_nowrite
close
open 文件或目录被打开
moved_to 文件或目录移动到
moved_from 文件或目录从...移动到
move 移动文件或目录移动到监视目录
create 在监视目录下创建文件或目录
delete 删除监视目录下的文件或目录
delete_self
umount 卸载文件系统
sersync主要用于服务器同步,web镜像等功能.基于boost1.41.0,inotify api,rsync command开发.
实时同步实践
角色 | 外围IP(NAT) | 内网IP(LAN) | 安装工具 |
---|---|---|---|
web01 | eth0:10.0.0.7 | eth1:172.16.1.7 | 部署代码(提交东西) |
nfs-server | eth0:10.0.0.31 | eth1:172.16.1.31 | rsync+inotify+sersync |
backup | eth0:10.0.0.31 | eth1:172.16.1.41 | rsync |