• linux下监听和同步代码配置


    dns
    负载均衡  nginx lvs f5
    网络




    yum install inotify-tools
    yum install rsync
    service sshd restart

    使用rsync+inotify-tools+ssh实现文件实时同步
        在某些服务器架构中,会遇到文件同步问题,例如需要做站点镜像备份,同步文件到多个CDN节点等。需要解决的主要有两个问题
    1.如何实现文件同步问题? 2.何时执行同步操作?
        文件同步可以使用rsync+ssh,什么时候自行同步操作呢?可能部分人会想到cron,这个没错,可以实现的,但是确实有点浪费资源,因为cron并不知道文件是否被修改过,只是不停的周期性的执行,如果文件修改后再执行同步操作,不修改就不执行那应该比较好,其实inotify就可以做到,只要你的服务器不是古董级别的,就支持inotify,来几句没用的话:
        Inotify 是一个 Linux特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。

        假设某服务器架构中有两台web服务器(IP为192.168.1.252和192.168.1.254),一台代码更新发布服务器(IP为192.168.1.251),需要同步的目录是/data/www/,结构图如下:下面介绍一下安装步骤
    在代码发布服务器(192.168.1.251)上安装inotify,执行如下命令
    tar xzvf inotify-tools-3.14.tar.gz
    cd inotify-tools-3.14
    ./configure
    make
    make install
    cd ..
    在所有服务器上(代码发布服务器和需要同步的服务器)上安装rsync,命令如下:
    tar zxvf rsync-3.0.9.tar.gz
    cd rsync-3.0.9
    ./configure
    make
    make install
    #------以上命令在每台服务器上都需要执行---------

    在代码发布服务器与需要同步的服务器之间配置ssh key信任,在代码发布服务器上生成公钥和私钥
    ssh-keygen -t rsa
    直接三次回车
    将公钥添加到各个需要更新的主机authorized_keys 文件中,在代码更新服务器上再执行
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.252
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.254
    如果有提示 输入yes
    按提示输入密码回车
    然后两台需要web服务器(192.168.1.252和192.168.1.254 )重启ssh
    service sshd restart
    在代码发布服务器上以root身份创建inotify_rsync.sh脚本vi /root/inotify_rsync.sh 输入

    #!/bin
    SRC=/data/www/    #代码发布服务器目录
    DST=/data/www/    #目标服务器目录
    IP="192.168.1.252 192.168.1.254"    #目标服务器IP,多个以空格隔开
    USER=root
    /usr/local/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' --exclude "(.swp|.swx|.svn)"
    -e create,move,delete,close_write,attrib $SRC | while read files
    do
    for i in $IP
    do
        /usr/local/bin/rsync -ahqzt --exclude Runtime --delete $SRC $USER@$i:$DST
        echo $files >>/tmp/rsync.log 2>&1
    done
    done

    相关解释:
    /usr/local/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w%f %e' --exclude "(.swp|.swx|.svn)"
    -e create,move,delete,close_write,attrib $SRC | while read files

     -m 是保持一直监听
     -r 是递归查看目录
     -q 是打印出事件
     -e create,move,delete,close_write,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件
     
    /usr/local/bin/rsync -ahqzt --exclude Runtime --delete $SRC $USER@$i:$DST
     -a 存档模式
     -h 保存硬连接
     -q 制止非错误信息
     -z 压缩文件数据后传输
     -t 维护修改时间
     -delete 删除于多余文件
    --exclude 排除同步的文件 然后赋予脚本可执行权限
    chmod +x /root/inotify_rsync.sh
    设置开机自启动echo "/root/inotify_rsync.sh &" >> /etc/rc.local
    执行脚本/root/inotify_rsync.sh &
    在代码更新服务器的/data/www/目录中创建文件,测试效果。


    101.201.236.126
    hulu-9302273312.

  • 相关阅读:
    HBase 高性能加入数据
    Please do not register multiple Pages in undefined.js 小程序报错的几种解决方案
    小程序跳转时传多个参数及获取
    vue项目 调用百度地图 BMap is not defined
    vue生命周期小笔记
    解决小程序背景图片在真机上不能查看的问题
    vue项目 菜单侧边栏随着右侧内容盒子的高度实时变化
    vue项目 一行js代码搞定点击图片放大缩小
    微信小程序进行地图导航使用地图功能
    小程序报错Do not have xx handler in current page的解决方法
  • 原文地址:https://www.cnblogs.com/zhanghuilong/p/6696244.html
Copyright © 2020-2023  润新知