rsync+inotify 实时双向同步
前言
在遇到需要 nginx 负载均衡,承受较高并发的情况,同时会有双机相同目录内容须保持一致的需求
rsync+inotify 是一个不错的解决方案,相较于 rsync+sersync 在处理大量文件时更具稳定性
本片博文不再赘述安装前准备,详情可查看以往篇
一、安装 rsync 以及修改 /etc/rsyncd.conf
yum install -y rsync
#rsync通用配置文件,配置的注释不要写在配置后面,否则会有问题
uid = root
gid = root
use chroot = 0
port = 873
#允许ip访问设置,请根据实际需要进行配置,这里为了方便设为全网段 *,生产环境下为了安全请指定ip或ip段
hosts allow = *
max connections = 0
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
transfer logging = yes
syslog facility = local3
#方括号中为模块声明,对应命名,这里master_web对应了主web机配置,从服务器可都为[slave_web],方便inotify脚本配置
[master_web]
#指定当前模块在rsync服务器上的同步路径,该参数是必须指定的
path = /data/dh/upload/
#注释,可以同模块名一样,从服务器可都为slave_web
comment = master_web
ignore errors
#是否允许客户端上传文件
read only = no
list = no
#指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块
auth users = rsync
#保存密码和用户名文件,需要自己生成
secrets file = /etc/rsyncd.passwd
二、创建 /etc/rsyncd.passwd 和 /root/rsyncd.passwd
#/etc/rsyncd.passwd中内容格式 用户名:密码
rsync:123456
#/root/rsyncd.passwd中内容只需要填写从服务器的密码
123456
三、给密码文件赋权限
chmod 600 /etc/rsyncd.passwd
chmod 600 /root/rsyncd.passwd
四、以守护进程方式启动 rsync 服务并添加开机自启动
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf">>/etc/rc.local
五、验证代码是否同步
主web服务器推送代码到从web服务器,命令中的192.168.10.230 为从web服务器的ip,slave_web 为从web服务器的 rsyncd.conf 中配置的模块名,
rsync 为从web服务器的中 rsyncd.passwd 中配置的用户名
rsync -vzrtopg --delete --progress /data/dh/upload/ rsync@172.17.0.11::slave_web --password-file=/root/rsyncd.passwd
六、安装inotify(两台服务器都要安装)
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz --no-check-certificate
tar -zxvf inotify-tools-3.14.tar.gz
mkdir /usr/local/inotify
cd inotify-tools-3.14.tar.gz
./configure --prefix=/usr/local/inotify
make && make install
# 查看是否安装成功
ls -alh /usr/local/inotify/bin/inotify*
# 建立软连接
ln -s /usr/local/inotify/bin/inotifywait /usr/bin/inotifywait
ln -s /usr/local/inotify/bin/inotifywatch /usr/bin/inotifywatch
七、配置rsync.sh同步监控脚本
#!/bin/bash
src=/data/dh/upload/
des=master_web
user=rsync host="172.17.0.11"
cd $src
/usr/bin/inotifywait -mrq --exclude=public --exclude=themes --exclude=wap_themes --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib ./ | while read file
do
rsync -vzrtopg --delete --progress --exclude=themes --exclude=wap_themes --exclude=public $src $user@$host::$des --password-file=/root/rsyncd.passwd
echo "$file was rsynced" >> /tmp/rsync.log 2>&1
done
八、给脚本赋权以及运行配置
chmod +x /root/rsync.sh
nohup sh /root/rsync.sh &
#建立守护进程运行rsync.sh脚本
echo “nohup sh /root/rsync.sh &” >> /etc/rc.local
注:主从web服务器双向实时同步配置完全一致,只需修改部分模块名字以及ip即可
rsync+inotify 实时双向同步的更多相关文章
- rsync+inotify实时数据同步多目录实战
rsync+inotify实时数据同步多目录实战 inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...
- rsync+inotify实时数据同步单目录实战
rsync+inotify实时数据同步单目录实战 rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...
- Rsync+inotify 实时数据同步 inotify master 端的配置
强大的,细致的,异步的文件系统事件监控机制.Linux 内科从 2.6.13 起支持 inotify Inotify 实现的几款软件:Inotify,sersync,lsyncd ※Inotify 实 ...
- unison + inotify 实现文件实时双向同步部署步骤
unison + inotify 实现文件实时双向同步部署步骤 一. Unison简介 Unison是Windows.Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或 ...
- rsync+inotify实时同步环境部署记录
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足.首先,rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件 ...
- rsync+inotify实时同步方案
rsync+inotify实时同步,inotify可以实时监控本地文件或目录变化,当检测到本地文件变化,执行rsync同步命令,将变化的文件同步到其他服务器节点. 1.配置环境 3.在服务节点1.服务 ...
- CentOS6.5实现rsync+inotify实时同步
参考博文: 参考1:CentOS6.5实现rsync+inotify实时同步 参考2:inotify-tools+rsync实时同步文件安装和配置 CentOS 6.3下rsync服务器的安装与配置 ...
- 配置rsync+inotify实时同步
与上一篇同步做 配置rsync+inotify实时同步 1:调整inotify内核参数 在linux内核中,默认的inotify机制提供三个调控参数:max_queue_events.max_user ...
- linux设置rsync+inotify实时同步文件
linux设置rsync+inotify实时同步文件 应用场景: 同步接收方:test01 接收目录:/opt/software/test/a/ 同步发起方:test02 同步目录:/opt/so ...
随机推荐
- bootstrap 处理警告
$("#id").bootstrapValidator({}).on('success.field.bv', function (e, data) { })
- 什么时候用assert
assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制.在实现中,assertion就是在程序中的一条语句,它对一个boolean表达式进行检查,一个正确程序必须保证 ...
- VM安装vmtools后centos7无法上网
先安装VmTools工具 文件 /etc/sysconfig/network-scripts/ifcfg-ens33(这里的enp0s3不是固定的,看你具体情况,但是基本是en开头的) 将 ONBOO ...
- VUE【三、指令】
模板指令 1.数据渲染(对应data数据) {{a}} 当使用v-once指令时,数据会一次绑定,后续修改值不会变化 v-text="a" 等同于{{a}} v-html=&quo ...
- 从0到1写rtos:事件的控制块与通知
任务的状态: 未创建:只定义了任务代码,未调用tTaskInit()初始化 就绪:任务已经创建完毕,且等待机会占用CPU运行 运行:任务正在占用CPU运行代码 延时:任务调用tTaskDelay()延 ...
- Build with runtime packages
编译问题:为什么我去掉Build with runtime packages,编译没问题??? 如果不去掉,就有错误:[Linker Error] Unresolved external 'TXNet ...
- Python Scrapy爬虫框架之初次使用
此篇博客为本人对小甲鱼的课程的总结. 关于Scrapy的安装网上都有方法,这里便不再叙述. 使用Scrapy抓取一个网站一共需要四个步骤: 0.创建一个Scrapy项目: 1.定义Item容器: 2. ...
- 【转】高可用Redis(六):瑞士军刀之bitmap,HyperLoglog和GEO
1.bitmap位图 1.1 bitmap位图的概念 首先来看一个例子,字符串big, 字母b的ASCII码为98,转换成二进制为 01100010 字母i的ASCII码为105,转换成二进制为 01 ...
- JavaScript教程——对象的继承
面向对象编程很重要的一个方面,就是对象的继承.A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. 大部分面向对象的编程语言,都是通过“类”(class) ...
- 【换根dp】9.22小偷
换根都不会了 题目大意 给定一棵$n$个点的树和树上一撮关键点,求到所有$m$个关键点距离的最大值$dis_{max}\le LIM$的点的个数. $n,m\le 30000,LIM\le 30000 ...