linux运维、架构之路-实时同步方案

1、inotify+rsync实时同步

1、介绍

        inotify-tools是一种强大的、细粒度的、异步的文件系统事件监控机制,可以用来监控文件系统的事件。inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数。

2、实现原理

3、根据原理进行部署

①查看系统是否支持inotify

[[email protected] ~]# ll /proc/sys/fs/inotify/
-rw-r--r-- 1 root root 0 Aug 22 18:13 max_queued_events
-rw-r--r-- 1 root root 0 Aug 28 14:30 max_user_instances
-rw-r--r-- 1 root root 0 Aug 22 18:13 max_user_watches

②软件安装

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo    #安装epel源才可以yum安装inotify
yum install -y inotify-tools

测试监控事件create、delete、close_write、moved_to、moved_from,定义inotify监控命令参数

inotifywait -mrq -e create,delete,moved_to,close_write --format ‘%w%f‘ /data
#/data为监控的目录

编写脚本让rsync与inotify服务结合实现实时同步

cat >>inotify.sh <<EOF
#!/bin/sh
/usr/bin/inotifywait -mrq --format “%w%f” -e moved_to,delete,create,close_write /data|while read line
do
   rsync -az --delete /data/  [email protected]172.16.1.41::nfsbackup --password-file=/etc/rsync.password
done
EOF

⑤inotify优化

[[email protected] ~]# ll /proc/sys/fs/inotify/
-rw-r--r-- 1 root root 0 Aug 22 18:13 max_queued_events——>设置监控服务实例可以监控的事件的个数
-rw-r--r-- 1 root root 0 Aug 28 14:30 max_user_instances——>设置用户可以开启的服务进程数
-rw-r--r-- 1 root root 0 Aug 22 18:13 max_user_watches——>可以监控的最大文件数
优化参数调整:
echo “50000000” >/proc/sys/fs/inotify/max_user_watches
echo “50000000” >/proc/sys/fs/inotify/max_queued_events

⑥inotifywait命令参数


参数名称


参数说明


-m,--monitor *****


始终保持事件监听状态


-r,--recursive *****


递归监控目录数据信息变化


-q,-quiet    *****


输出信息少(只打印事件信息)


--exclude


排除文件或目录时,不区分大小写


--timefmt     *****


指定时间输出格式


--format      *****


打印使用指定的输出类似格式字符串,实际监控输出的内容


-e           *****


指定监听的事件,如果省略,表示所有事件都进行监听

⑦inotifywait events监控事件


事件名称


事件说明


access


文件或目录内容被读取


modify


文件或目录内容被写入


attrib


文件或目录属性改变


close_write   *****


文件或目录关闭,在写入模式打开之后关闭


chose_nowrite


文件或目录关闭,在只读模式打开之后关闭的


close


文件或目录关闭,不管读或写模式


open


文件或目录被打开


moved_to


文件或目录被移动到监控的目录中


moved_from


文件或目录被移动从监控的目录中


move   *****


文件或目录不管移动或是移动出监控目录都触发事件


create   *****


文件或目录创建在监控的目录中


delete


文件或目录被删除在监控的目录中

2、sersync实时同步

1、介绍

 数据同步就必然会想到rsync,一般简单的服务器数据传输会使用ftp/sftp等方式,但是这样的方式效率不高,不支持差异化增量同步也不支持实时传输。针对数据实时同步需求大多数人会选择rsync+inotify-tools的解决方案,但是这样的方案也存在一些缺陷,sersync是国人基于前两者开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。https://github.com/wsgzao/sersync官方资料

2、sersync优点

①sersync对linux系统文件系统产生的临时文件和重复的文件操作进行过滤所以在结合rsync同步的时候,节省了运行时耗和网络资源,因此更快。

②相比较inotify+rsync,sersync配置起来简单,bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。

③另外sersync相比较其他脚本开源软件,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。

④sersync有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。

⑤自带crontab功能,只需在xml配置文件中开启,即可按要求,隔一段时间整体同步一次,无需再额外配置crontab功能。

⑥sersync有socket与http插件扩展,满足二次开发的需要

3、实现原理图

4、sersync服务部署

①软件下载安装

https://github.com/wsgzao/sersync
cd /server/tools/
unzip sersync_installdir_64bit.zip
mv sersync_installdir_64bit /usr/local/sersync
cd /usr/local/sersync/
mv sersync/* ./
rm sersync/ -rf
chmod +x /usr/local/sersync/bin/sersync
cp conf/confxml.xml  conf/confxml.xml.bak

②修改配置文件

③启动sersync服务

/usr/local/sersync/bin/sersync -dro /usr/local/sersync/conf/confxml.xml

5、高并发场景无分布式存储实时同步解决方案

①inotify(sersync)+rsync 系统文件级别

②drbd文件系统级别

③第三方软件的同步功能 mysql同步,oracle,mongodb

④业务上,通过程序双写

⑤弃用nfs方案

时间: 2024-08-06 03:45:04

linux运维、架构之路-实时同步方案的相关文章

20170705L07-09-03老男孩linux运维实战培训-Sersync实时同步软件实战应用指南-2

接上一节继续说的sersync 这一节讲的是sersync的实际实验 主服务器sersync的安装,设置 然后是同步的演示 让人能更加了解同步自动化软件的原理 其中对实时同步进行了说明 当同步量很大的时候 可能客户机并不能实时进行更新

20170710L07-09-03老男孩Linux运维实战培训-Sersync实时同步软件实战应用指南08

还是说的sersync的压力测试 for n in 'seq 100' ; do mkdir -p test/$n:done        #创建100目录 还是压力测试的实际测试.这次好像加入了一个脚本去记录同步的延时

《Linux运维架构师课程 - 门徒班》【招生中】

课程简介 阿良的课程内容主要以企业核心技术为讲解对象,避免过多在企业中很少用的技术,从而减少学习负担,这样就可以把精力主要花费在更重要的技术上, 而不像其他培训机构那样,讲很多高大上的技术名词,其中可能50%的知识在工作中都用不到,学员抓不住重点,时间长了就忘了.    所以,阿良的教学模式讲究是精益求精,"好钢用到刀刃上,只求精,不求多".    只要你肯学,阿良就肯教.帮助你掌握这门技能,成功就业,初学者月薪达到6000以上. 授课对象 ■ 计算机相关专业在校学生/应届生 ■ 网络

Linux运维架构师课程介绍

课程体系:     RHCE(RedHat Certification Engineer): RH033(基础) RH133(系统管理) RH253(服务管理)     RHCA(Redhat Centification Architect): RH401 RH423(LDAP协议) RH442         RH436(集群和存储) RHS333     MySQL     NoSQL 工作岗位: 系统架构师:设计蓝图 系统工程师:系统上线 运维工程师:系统运维 DBA:数据库管理员 计算机

Linux运维架构师学习开篇——笔记

从毕业从事硬件失效分析方面工作近三年, 偏冷门的行业,一直在工厂产线,吸着产品线散发出的一道道气息,闲暇之余我也在思考难道我今后只能在工厂待一辈子吗?我的职业只能在生产线处理不良产品,我的未来就是作为一个硬件高级维修工吗?我想走出产品线,对未来的职业发展充满迷茫,内心思想一直在挣扎.马上奔三后该做什么,能做什么? 以前接触过Linux,但仅仅是复制粘贴指令,配置IP,最基本操作而已,没有接触到真正的技术,为了今后能有一技之长,有个明确的发展方向(云端),也为了能拿到一份不错的薪水,提高生活质量,

linux运维之路第一篇章:决心书

这一次很有毅力的选择了linux运维的这条路 为什么会这样选择? 自身往技术发展的需求! 身边朋友的推荐! 对在北京生活的一种追求! 来到北京很多人是想着挣钱的,我也是一样,在北京一家不知名的民办学校上了二年学,呵呵,就是野鸡大学,虽然学校对于教育放来来说不是怎么回事,但是对于技术方面还有两把刷子,可能自己对于网络有写喜欢,学了电子商务,工作之后做了SEO优化,到如今也有近两年的时间了.两年自己一直处在底薪阶层(3~6k),然而谁没有一个追求,展现自身更多的价值,拿更高的薪资,过上更好的生活,也

linux运维之路

Linux入门必备内容 成为一个优秀的linux运维人员必要条件 如何能高标准的掌握linux运维实战技术 计算机硬件组成.工作原理 CPU.内存.磁盘.raid卡生产工作标准详解 企业生产主流品牌服务器及型号内部拆卸讲解 操作系统cache与buffer的原理及硬件设计哲学 结合企业生产实战运维场景如何利用硬件优化 操作系统.Unix及Linux介绍 linux操作系统种类及运维人员选择建议 CentOS Linux原理深入.安装 Linux入门知识进阶 远程连接工具原理及使用 编辑工具 比较

Linux运维需要懂什么web集群架构知识?

Linux运维需要懂什么web集群架构知识? 在充斥着各种的互联网+的数字时代,IT运维方面也越来越趋于Linux系统的应用,掌握 Linux 运维技术已成为IT 技术人员的必经之路,但是,构建在Linux系统上的高性能.高并发企业级网站集群架构上的网站集群架构,又会涉及到哪些具体的内容呢? 1.需要学习与Linux 相关的基础且重要的知识 Linux 的历史沿革.Linux 的企业级选型.学习环境的搭建.Linux 的企业级系统安装.Linux 系统的基础优化,以及远程连接Linux 及客户端

了解Linux运维要用到的web集群架构知识

了解Linux运维要用到的web集群架构知识 在充斥着各种的互联网+的数字时代,IT运维方面也越来越趋于Linux系统的应用,掌握 Linux 运维技术已成为IT 技术人员的必经之路,但是,构建在Linux系统上的高性能.高并发企业级网站集群架构上的网站集群架构,又会涉及到哪些具体的内容呢? 1.需要学习与Linux 相关的基础且重要的知识 Linux 的历史沿革.Linux 的企业级选型.学习环境的搭建.Linux 的企业级系统安装.Linux 系统的基础优化,以及远程连接Linux 及客户端