rsync可以实现触发式的文件同步,但是通过crontab守护进程方式进行触发,同步的数据和实际数据会有差异,而inotify可以监控文件系统的各种变化,当文件有任何变动时,就触发rsync同步,这样就可以解决同步数据的实时性问题。rsync+inotify我在工作中会经常用到,大家部署这种时请注意以下方面:
一、rsync服务器的uid和gid请将nobody:nobody改为www:www,因为是考虑到我们的Nginx服务器是由www:www运行的,而其对应目录很多时候有写日志或其它相关写文件的需求。
二、/data/htdocs/www目录对于www用户而言是需要写权限的,所以记得运行如下命令:
chown -R www:www /data/htdocs/www。
另外工作中rsync+inotify的优点和缺点也总结了下,如下:
rsync+inotify的优势所在:
一、部署和维护都比较简单,由于数据都部署在Web应用服务器上面,较之单一NFS文件服务器而言没有磁盘I/O压力大的问题,原因很简单:来自客户端大量对图片及数据的访问需求,都分散在负载均衡器后面的N台Web应用服务器上面了。
二、改动较大的程序,在正式发布上线之前可以拿其中一台Web应用服务器作为线上的测试服务器,这样较之发布以后再版本回退带来的损失较小。
rsync+inotify其缺点也比较明显:
一、rsync+inotify在同步大文件效果明显不如小文件方面好;
二、在对线上机器进行巡查时,发现rsync+inotify在内存占用方面比较多,16G内存的机器可使用内存总是寥寥无几(CentOS系统内存的实际使用值一直都是5365左右),之前一直以为是内存泄露的问题,最后经重重排查,发现确实是rsync+inotify的原因。
其部署安装方面详见PDF附件。