设为首页 收藏本站
查看: 830|回复: 0

[经验分享] Inotify+Rsync实时同步文件并轮流重启多台Apache服务

[复制链接]

尚未签到

发表于 2018-11-18 07:13:34 | 显示全部楼层 |阅读模式
  一、实验环境:CentOS7
DSC0000.png

  二、实验目标:
   Web_001到Web_N所有的服务器/var/www/html/目录下的数据一致,当该目录下的数据发生变化时,依次重启Apache服务。
   (应用场景:用于发布tomcat或Apache等根目录下的项目)

  三、实验步骤:
  1.登录到每台服务器,修改主机名、IP地址、DNS、并关闭firewalld和selinux防火墙等(改完需要重启电脑才可生效),并安装rsync、httpd、inotify-tools软件等

          (1)主机名称、防火墙等相关修改

DSC0001.png

  (2)安装rsync、httpd软件
  yum install rsync httpd -y

  

  至此,就可以使用rsync同步目录或者是文件,使用方法和scp类似,再配合计划任务就可以作为日常的周期性数据备份。但需要注意的是,scp只能用于复制小的目录,他的工作原理是需要遍历所有文件后才执行复制数据的动作。
  例如:/usr/bin/rsync -aqzP --delete /tmp/hbgslz/ root@192.168.1.45:/tmp/hbgslz/
  192.168.1.45为远程服务器

  
-l  --links         保留软链结
-p  --perms         保持文件权限
-o  --owner         保持文件属主信息
-g  --group         保持文件属组信息
-D  --devices      
保持设备文件信息
-P              显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
-q  --quiet      忽略错误信息的输出
-a --archive     归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"。
-r --recursive    递
归到目录中去。
-t --times      保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新检查出mtime不同从而导致增量传输无效。
-z          在传输过程中压缩文件数据
--delete        以SRC为主
,对DEST进行镜像同步。多则删之,少则补之,注意"--delete"是在接收端DEST上执行的
           

  (3)安装inotify-tools软件(从kernel 2.6.13开始正式并入内核)
  

  wget -c http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

      tar -zxf inotify-tools-3.14.tar.gz

      cd inotify-tools-3.14
      ./configure --prefix=/usr/local/inotify/
      make  

      make install
  (4)修改/proc/sys/fs/inotify/目录下max_queued_events、max_user_instances、max_user_watches 的默认值

  下图为默认的参数值:
DSC0002.png

  以max_user_watches为例,修改/etc/sysctl.conf下的内核参数:
  文件路径:/proc/sys/fs/inotify/max_user_watches
  /etc/sysctl.conf添加内容:fs.inotify.max_user_watches = 999999999

  将文件路径红色区域的内容复制到/etc/sysctl.conf里面,并将“/”改为“.”,修改完内核参数后,必须执行sysctl -p 使其立即生效         

DSC0003.png

DSC0004.png

  2.登录到Web_N服务器,创建免秘钥登录证书,并复制该秘钥证书到远程服务器Web_001~Web_N台服务器(若服务器数量比较多,可以使用脚本操作,可参考下面重新启动Apache服务的脚本)
  注意:因为脚本是使用的SSH远程访问后执行命令,所以就算是Web_N本地也需要执行ssh-copy-id root@192.168.1.45

DSC0005.png

DSC0006.png

  3.数据同步和远程重启Apache服务脚本:
  inotify_rsync_data.sh:用于数据同步
#!/bin/bash
SRC=/var/www/html/
DEST=root@192.168.1.45:/var/www/html/
/usr/local/inotify/bin/inotifywait -mrq -e access,modify,attrib,close_write,close_nowrite,close,open,moved_to,moved_from,move,create,delete,delete_self,unmount ${SRC} | while read A B C
do
        chmod 755 -R $SRC
        /usr/bin/rsync -aqzP --delete $SRC $DEST
done  inotify_rsync_service.sh:用于数据同步完后重启Apache服务
#!/bin/bash
SRC=/var/www/html/
/usr/local/inotify/bin/inotifywait -mrq -e access,modify,attrib,close_write,close_nowrite,close,open,moved_to,moved_from,move,create,delete,delete_self,unmount ${SRC} | while read A B C
do
        #远程登录指定的服务器执行重启Apache的服务,注意配置SSH免秘钥登录
                for n in {104,45};do
                        ssh 192.168.1.$n "/usr/bin/systemctl restart httpd.service"
                        done
done  

  4.将脚本放置到开机启动文件内,并且后台运行。
DSC0007.png

  注意事项:
  注意观察文件传输时间。

DSC0008.png

DSC0009.png

  

  附:rsync亦可以使用匿名同步,但需要配置/etc/rsyncd.conf、/etc/rsyncd.passwd(该文件需手动在DEST中新建)、/etc/rsyncd.motd(该文件需手动在DEST中新建)等文件
                  DSC00010.png
DSC00011.png

DSC00012.png

DSC00013.png

DSC00014.png

DSC00015.png





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-636352-1-1.html 上篇帖子: Statistics access traffic of apache logs 下篇帖子: httpd服务和apache
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表