Rsync+inotify搭建实时同步系统
Rsync 优点
rsync具有安全性高、备份迅速、支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期地备份文件服务器数据到远程服务器上,对本地磁盘定期进行数据镜像等。
Rsync 不足
随着应用系统规模的不断扩大,对数据的安全性和可靠性提出了更高的要求,rsync便暴露出了很多不足之处。首先,rsync同步数据时,需要扫描所有文件后进行比对,然后进行差量传输。如果文件数量达到了百万量级及以上时,扫描文件就非常耗费时间,有时还会出现只是很少一部分数据发生了变化,因此rsync就变得非常低效了。其次,rsync不能够实时监测、同步数据,虽然它可以通过Linux守护进程的方式触发同步,但是两次触发动作一定会出现时间差,可能导致服务器端和客户端的数据出现不一致,后期无法在出现故障时完全恢复数据。
Rsync+inotify组合
为解决以上问题而出现的,实现了数据的实时同步
inotify是什么 ?
inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,Linux内核从2.6.13版本起,加入了对inotify的支持。通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,inotify-tools便可以监控文件系统下文件的各种变化情况了。
检查内核是否支持inotify:
实验案例:rsync+inotify搭建实时同步系统
案例描述:在前文Haproxy搭建高可用Web集群的网站拓扑架构图基础上,实现两台Web站点数据的实时同步,web1服务器为内容发布节点,web2服务器为同步节点(本文主要说明rsync+inotify实时同步数据技术,其他请阅读前文,谢谢!)。
系统环境
主机 | 操作系统 | IP地址 | web站点目录 | 软件包 |
---|---|---|---|---|
负载调度服务器: | CentOS 7.0 x86_64 | 192.168.100.25 | 无 | haproxy-1.5.19.tar.gz |
web1节点服务器: | CentOS 7.0 x86_64 | 192.168.100.26 | /www/wwwroot | nginx-1.12.0.tar.gz、rsync-3.1.3.tar.gz、inotify-tools-3.14.tar.gz |
web2节点服务器: | CentOS 7.0 x86_64 | 192.168.100.27 | /web2/wwwroot | nginx-1.12.0.tar.gz、rsync-3.1.3.tar.gz |
Win 7 客户端: | Windows 7 | 192.168.100.30 | 无 | 无 |
关闭防火墙及Selinux
systemctl stop firewalld setenforce 0
软件包:rsync+inotify 密码:do45
开始部署
inotify-tools是用来监控文件系统变化的工具,因此必须安装在内容发布系统上,服务节点无需安装它,而web2服务器上需要安装rsync实现文件传输。
一、web2服务器(待同步数据:rsync)
1.安装rsync软件包
#解压 tar zxvf rsync-3.1.3.tar.gz -C /opt #切换目录 cd /opt/rsync-3.1.3 #配置 ./configure #编译及安装 make && make install
2.修改rsync配置文件:
vim /etc/rsyncd.conf
#/etc/rsyncd: configuration file for rsync daemon mode #See rsyncd.conf man page for more options. #configuration example: uid = nobody gid = nobody use chroot = yes max connections = 10 strict mode=yes pid file = /var/run/rsyncd.pid lock file=/var/run/rsync.lock log file=/var/log/rsyncd.log [web1] path = /web1/wwwroot comment = web1 file ignore errrors read only=no write only=no hosts allow=* hosts deny=192.168.100.10 list=false uid=root gid=root auth users=web1user secrets file=/etc/web1.pass
3.创建密码文件(文件格式:user:pass)
/etc/web1.pass
web1user:www123
修改密码文件权限
chmod 600 /etc/web1.pass
4.启动rsync守护进程
/usr/local/bin/rsync --daemon
5.加入系统自启动文件
echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local
6.查看rsync进程
ps -ef | grep rsync
二、web1服务器(内发发布节点:rsync+inotify)
1.安装rsync软件包
#解压 tar zxvf rsync-3.1.3.tar.gz -C /opt #切换目录 cd /opt/rsync-3.1.3 #配置 ./configure #编译及安装 make && make install
2.新建密码文件,需和节点服务器密码一致
vim /etc/server.pass
www123
3.修改密码文件权限
chmod 600 /etc/server.pass
4.启动rsync守护进程
/usr/local/bin/rsync --daemon
5.加入系统自启动文件
echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local
6.安装inotify-tools
#解压 tar zxvf inotify-tools-3.14.tar.gz -C /opt #切换目录 cd -C /opt/inotify-tools-3.14 #配置 ./configure #编译及安装 make && make install
7.编写shell脚本来配置内容发布节点
vim /web/inotifyrsync.sh
#!/bin/bash host1=192.168.100.26 src=/web/wwwroot/ dst1=web1 user1=web1user /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src \ | while read files do /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/server.pass $src $user1@$host1::$dst1 > /dev/null 2>&1 echo "${files} was rsynced." >> /tmp/rsync.log 2>&1 done
8.为其指定可执行权限,然后放入后台运行
chmod 755 /web/inotifyrsync.sh /web/inotifyrsync.sh &
9.将脚本加入系统自启动文件
echo "/web/inotifyrsync.sh &" >> /etc/rc.local
测试
在web1服务器节点的/web/wwwroot目录下添加、删除、修改文件,然后到web2服务器节点对应目录去查看文件是否跟随发布节点同步变化。
web1服务器为内容发布节点:
web2服务器进行数据同步:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ProxySQL+Mysql实现数据库读写分离实战
ProxySQL介绍 ProxySQL是一个高性能的MySQL中间件,拥有强大的规则引擎。具有以下特性:http://www.proxysql.com/ 1、连接池,而且是multiplexing 2、主机和用户的最大连接数限制 3、自动下线后端DB延迟超过阀值ping 延迟超过阀值网络不通或宕机 4、强大的规则路由引擎实现读写分离查询重写sql流量镜像 5、支持prepared statement 6、支持Query Cache 7、支持负载均衡,与gelera结合自动failover 整体环境介绍 1、系统环境三台服务器系统环境一致如下 [root@db1 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@db1 ~]# uname -r 3.10.0-693.el7.x86_64 2、IP地址与软件版本 proxy 192.168.22.171 db1 192.168.22.173 db2 192.168.22.174 mysql 5.7.17 proxy sql 1.4.8 3、关闭防火...
- 下一篇
记一次PHP优化案例
记一次php优化案例 网站架构简介: 现在很多的企业都是使用lnmp或者lamp来做企业的网站服务器架构,这两种网站的服务架构,我们都是比较熟悉的;基于nginx的性能优于Apache,现阶段的很多公司,都是逐渐把Apache替换成nginx,毕竟nginx的自带的高可用配置,反向代理等等功能相当突出。 Lnmp网站服务器架构,其实就是linx+nginx+mysql+php架构体系,架构安装我就不多说了。接下来我们来谈谈,我遇到案例吧 案例: 有一天,后台的同事,说后台访问很慢,而且有时候出现502错误。然后反馈给技术上级,接着又找到我处理一下(那时在喝着茶),然后我知道又有事干了。 分析: 然后我直接找到那个同事,问问是不是网络原因啊,我也叫其他的同事,访问一下,还是出现访问忙的问题。这时我就知道事情没那么简单了。公司应用的是lnmp网站服务器架构,以前没有做太多的优化,接下来我们需要优化网站的服务架构了 一、案例分析。 我们可以想到,既然是访问缓慢,有时候直接访问不了,以前是没问题的,到现在就突然出现了问题,那必定是我们的nginx与php响应不过来导致的,原因可能是其他...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果