Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1635110
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 646
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-26 18:02
个人简介

祸兮福之所倚,福兮祸之所伏

文章分类

全部博文(63)

文章存档

2020年(11)

2019年(10)

2017年(10)

2016年(25)

2015年(7)

我的朋友

分类: 系统运维

2016-06-02 14:52:24

        由于线上的使用的是tomcat集群,所以每次上传程序都要传好几个服务器,因此决定使用rsync+inotify实现自动同步程序。
        实现方案:  tomcat-01    10.0.0.41    同步镜像           安装rsync服务,默认监听tcp873端口,接受主服务器文件
                          tomcat-02    10.0.0.42    发布服务器        实现inotify监控动作,执行rsync同步命令

        程序只要在tomcat-02上更新一次,程序会自动同步到tomcat-01上。
        tomcat-01: 安装rsync,安装过程很简单,直接yum install rsync -y 即可
        我安装的是rsync 3.0.6
        配置文件 /etc/rsync.conf
             

          uid=root                              启动守护进程使用的用户
          gid=root 
          use chroot = no                           不使用chroot                          
          max connections=200                   最大连接数
          timeout=300                                  
          pid file=/var/run/rsync.pid
          lock file=/var/run/rsync.lock
          log file=/var/log/rsync.log            可以分析日志查看同步时的错误


          [java]                                         模块名,需要跟主服务器一致
          path=/usr/local/tomcat/               需要同步的目录,注意不要跟主的同步目录一致,比如要同步主的/usr/local/tomcat/webapps,就一定要写这个目录,不然会出现webapps下面出现                                                              webapps的情况
         ignore errors
         read only=false
         auth users=root
         secrets file=/etc/rsync.pas            使用传输的账户密码文件,设置好读写属性,文件名随意,最好用一致的用户,可以设置/sbin/nologin属性

        /etc/rsync.pas
        root                            用户名
        root:root                     用户名:密码
       必须遵循这个格式,不然报错,可能我这个版本需要如此
       启动rsync 作为守护进程    /usr/bin/rsync --config=/etc/rsync.con --daemon 
       从服务器配置到此结束

      主服务器 10.0.0.42 
        安装rsync 和inotify       可以通过yum 下载安装
       制作监控脚本 vim inotify.sh   

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #
  3. host01=10.0.0.41 #inotify-slave的ip地址
  4. src=/usr/local/tomcat/webapps #本地监控的目录
  5. dst=java #inotify-slave的rsync服务的模块名
  6. user=root #inotify-slave的rsync服务的虚拟用户
  7. rsync_passfile=/etc/rsyn.pas #本地调用rsync服务的密码文件
  8. inotify_home=/usr/local/inotify-3.14 #inotify的安装目录
  9. #judge
  10. /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \
  11. | while read file
  12. do
  13. rsync -avz --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1
  14. #cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1
  15. done
  16. exit 0
         注意: src必须写同步的具体的文件夹不用加/  ,dst设置为从服务器的模块名,rsync.pas 格式一样,inotify那个表示监控增删改的动作,一旦发现这个动作就执行rsync命令,rsync命令表示发送修改的文件信息
        实现后台运行/root/inotify.sh &
        经过测试没问题,线上已经使用一段时间,未发现问题。















阅读(1412) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~