rsync + inotify 实时同步
1. 前言
2 台 nginx 需要做集群, 静态文件和php文件都在nginx服务器本地。
有三种方案:
(1)NFS
(2)Rsync + inotify
(3)共享存储服务器
第一种:当 nfs server端宕机,全部完蛋,第三种:共享存储服务器单点,如果宕机也完蛋。因此采用 第二种方式:rsync + inotify
2. 环境配置
2.1 环境介绍
系统:Centos 7.2 x64
server端:192.168.118.14
client端(同步端):192.168.118.15
2.2 搭建过程
默认防火墙和selinux 关闭,这里采用 http web服务器测试。
client 端(同步端)配置:
[root@192.168.118.15 ~]#yum install rsync httpd -y [root@192.168.118.15 ~]#egrep ^[a-z] /etc/rsyncd.conf
uid = root # 设置rsync运行权限为root
gid = root # 设置rsync运行权限为root
use chroot = no # 默认为true,修改为no,增加对目录文件软连接的备份
max connections = # 最大连接数
timeout = # 设置超时时间
pid file = /var/run/rsyncd.pid # pid文件的存放位置
log file = /var/log/rsyncd.log # 日志文件位置,启动rsync后自动产生这个文件,无需提前创建
path = /var/www/html # rsync服务端数据目录路径
read only = false # 设置rsync服务端文件为读写权限
hosts allow = 192.168.118.15 # 允许进行数据同步的客户端IP地址,可以设置多个,用英文状态下逗号隔开
auth users = rsync # 执行数据同步的用户名,可以设置多个,用英文状态下逗号隔开
secrets file = /etc/rsync.password # 用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件 [root@192.168.118.15 ~]#echo "rsync:123456" > /etc/rsync.password # 用户认证配置文件,里面保存用户名称和密码,后面会创建这个文件
[root@192.168.118.15 ~]#chmod /etc/rsync.password # 配置文件权限,如果这里没修改权限,后续会报错
[root@192.168.118.15 ~]#systemctl start rsyncd ; systemctl enable rsyncd
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
到此,客户端(同步端)配置完毕。
server 端配置:
[root@192.168.118.14 ~]#yum install httpd rsync -y 下载 inotify 并编译安装: 下载地址:https://sourceforge.net/projects/inotify-tools/ [root@192.168.118.14 /usr/local/src]#yum install gcc* -y
[root@192.168.118.14 /usr/local/src]#tar xf inotify-tools-3.13.tar.gz
[root@192.168.118.14 /usr/local/src]#cd inotify-tools-3.13
[root@192.168.118.14 /usr/local/src/inotify-tools-3.13]#./configure --prefix=/usr/local/inotify/
[root@192.168.118.14 /usr/local/src/inotify-tools-3.13]#make && make install
[root@192.168.118.14 /usr/local/src/inotify-tools-3.13]#echo "export PATH=$PATH:/usr/local/inotify/bin" > /etc/profile.d/inotify.sh
[root@192.168.118.14 /usr/local/src/inotify-tools-3.13]#. /etc/profile.d/inotify.sh
[root@192.168.118.14 ~]#echo > /etc/server.pass
[root@192.168.118.14 ~]#chmod /etc/server.pass
# 编写同步脚本
[root@192.168.118.14 ~]#vim inotify.sh #!/bin/bash # 同步端的ip
host_slave=192.168.118.15
# 需要同步的目录
master_src=/var/www/html/ /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,modify,delete,create,attrib /var/www/html/ | while read file
do
rsync -az --delete ${master_src} rsync@${host_slave}::apache --password-file=/etc/server.pass
done
3. 测试
4. 配置过程常见错误
报错1:
ERROR: password file must not be other-accessible
rsync error: syntax or usage error (code ) at authenticate.c() [sender=3.0.]
处理办法:
检查服务端的 /etc/server.pass 权限是否是 600
[root@localhost html]# chmod /etc/server.pass
[root@localhost html]# ll /etc/server.pass
-rw-------. root root Apr : /etc/server.pass
报错2:
@ERROR: Unknown module 'apache'
rsync error: error starting client-server protocol (code ) at main.c() [sender=3.0.]
处理办法:
检查 client端 rsyncd.conf ,[apache] 模块内的配置
rsync + inotify 实时同步的更多相关文章
- 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 ...
- (转)rsync+inotify实时同步
原文:http://lxw66.blog.51cto.com/5547576/1331048 声明:rsync inotify 需要逆向思考,当只做rsync不实时同步时,我们一般是从rsync服务端 ...
- 浅谈Rsync+Inotify实时同步
Rsync是Unix/Linux旗下的一款应用软件,利用它可以是多台服务器数据保持同步一致性,第一次同步时rsync会复制全部内容,但在下次只传输修改过的文件 Rsync在传输数据的过程中可以实行压缩 ...
- rsync+inotify实时同步
!!!在安装前要先确保,rsync daemon服务配置成功,在安装inotify-tools前先确认你的linux内核是否达到了2.6.13,并且在编译时开启CONFIG_INOTIFY选项,也可以 ...
- centos 6 rsync+inotify 实时同步
主机名.ip: server 172.31.82.184 client 172.31.82.185 需求: 1.server端 ”/data/server“ 做为client端 “/data/cli ...
随机推荐
- Linux使用技巧(一):vim中选中多行、复制和粘贴
一.选中多行: 使用命令vim打开文件,移动光标至所选行的开头,按v进入视图,键盘上按向下键,选中所需行即可. 二.复制与粘贴 三种方法: 1)在上文第一部分的基础上,按y,然后移动光标至所需粘贴处, ...
- 【codeforces 553E】 Kyoya and Train
http://codeforces.com/problemset/problem/553/E (题目链接) 艹尼玛,CF还卡劳资常数w(゚Д゚)w!!系统complex被卡TLE了T_T,劳资写了一天 ...
- 洛谷P4382 劈配
不知道这个Zayid是谁... 题意: 有n个人,m个导师.每个导师能接纳bi个人,每个人对于这m个导师都有一个志愿档次. 优先满足靠前的人,问到最后每个人匹配的导师是他的第几志愿. 每个人又有一个限 ...
- MVC 中@Html.DropDownListFor() 设置选中项 这么不好使 ? [问题点数:40分,结帖人lkf181]
http://bbs.csdn.net/topics/390867060 由于不知道错误原因在哪 我尽量把代码都贴出来吧:重点是:在 Controller 类里 我给 SelectListItem集合 ...
- sql数据库设计学习---数据库设计规范化的五个要求
http://blog.csdn.net/taijianyu/article/details/5945490 一:表中应该避免可为空的列: 二:表不应该有重复的值或者列: 三: 表中记录应该有一个唯一 ...
- UIImage加载图片的方式以及Images.xcassets对于加载方法的影响
UIImage加载图片的方式以及Images.xcassets对于加载方法的影响 图片缓存 根据是否将创建好的对象缓存入系统内存,有两类创建UIImage对象的方法可选: 缓存:+ imageName ...
- Spss22安装与破解步骤
Spss22安装与破解教程 向师姐请教了一些学术问题,哈哈说的有点大,不过真的很感谢,学到了很多,少走了很多弯路. 1.下载安装包 可以去IBM官网.人大论坛等网站下载,全部文件应包括spss22安装 ...
- python 中的queue, deque
python3 deque(双向队列) 创建双向队列 import collections d = collections.deque() append(往右边添加一个元素) import colle ...
- bootstrap-switch
首先需要引入bootstrap的css和js文件,再引入bootstrap-switch.css和bootstrap-switch.js文件 <script type="text/ja ...
- 蓝桥杯 算法提高 3000米排名预测 DFS 递归搜索 next_permutation()使用
#include <iostream> #include <algorithm> #include <queue> #include <cstring> ...