专栏首页小白博客LINUX运维学习之综合架构篇——综合架构实时同步服务

LINUX运维学习之综合架构篇——综合架构实时同步服务

1、实时同步服务原理/概念

1)需要部署好rsync守护进程服务,实现数据传输 2)需要部署好inotify服务,实现目录中数据变化监控 3)将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输

2、实时同步服务部署

1)部署rsync守护进程(之前已配置过:点击送达) 服务器端配置操作 客户端配置操作 2)配置inotify监控服务 a、安装软件(在备份服务器的客户端安装(我是在NFS服务器安装的,web服务器也可以))

    yum install -y inotify-tools

b、熟悉命令的使用 我们先查看以下命令

    rpm -ql inotify-tools
    /usr/bin/inotifywait   #监控目录数据信息变化
    /usr/bin/inotifywatch  #对监控的变化信息进行统计

inotifywait命令使用

    inotifywait 3.14
    Wait for a particular event on a file or set of files.
    Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
    Options:
        -h|--help         Show this help text.
        @<file>           Exclude the specified file from being watched.
        --exclude <pattern>
                          Exclude all events on files matching the
                          extended regular expression <pattern>.
        --excludei <pattern>
                          Like --exclude but case insensitive.
        -m|--monitor      Keep listening for events forever.  Without
                          this option, inotifywait will exit after one
                          event is received.
        -d|--daemon       Same as --monitor, except run in the background
                          logging events to a file specified by --outfile.
                          Implies --syslog.
        -r|--recursive    Watch directories recursively.
        --fromfile <file>
                          Read files to watch from <file> or `-' for stdin.
        -o|--outfile <file>
                          Print events to <file> rather than stdout.
        -s|--syslog       Send errors to syslog rather than stderr.
        -q|--quiet        Print less (only print events).
        -qq               Print nothing (not even events).
        --format <fmt>    Print using a specified printf-like format
                          string; read the man page for more details.
        --timefmt <fmt>    strftime-compatible format string for use with
                          %T in --format string.
        -c|--csv          Print events in CSV format.
        -t|--timeout <seconds>
                          When listening for a single event, time out after
                          waiting for an event for <seconds> seconds.
                          If <seconds> is 0, inotifywait will never time out.
        -e|--event <event1> [ -e|--event <event2> ... ]
            Listen for specific event(s).  If omitted, all events are 
            listened for.
    
    Exit status:
        0  -  An event you asked to watch for was received.
        1  -  An event you did not ask to watch for was received
              (usually delete_self or unmount), or some error occurred.
        2  -  The --timeout option was given and no events occurred
              in the specified interval of time.
    
    Events:
        access        file or directory contents were read
        modify        file or directory contents were written
        attrib        file or directory attributes changed
        close_write    file or directory closed, after being opened in
                       writeable mode
        close_nowrite    file or directory closed, after being opened in
                       read-only mode
        close        file or directory closed, regardless of read/write mode
        open        file or directory opened
        moved_to    file or directory moved to watched directory
        moved_from    file or directory moved from watched directory
        move        file or directory moved to or from watched directory
        create        file or directory created within watched directory
        delete        file or directory deleted within watched directory
        delete_self    file or directory was deleted
        unmount        file system containing file or directory unmounted
inotifywait [参数]  监控的目录
    -m|--monitor   --- 实现一直监控目录的数据变化
    -r|--recursive --- 进行递归监控
    -q|--quiet     --- 尽量减少信息的输出
    --format <fmt> --- 指定输出信息的格式 
    --timefmt      --- 指定输出的时间信息格式 
    -e|--event     --- 指定监控的事件信息

创建文件监控信息输出

    /test/ CREATE user1    --- 一个文件被创建
    /test/ OPEN user1      --- 打开创建的文件
    /test/ ATTRIB user1    --- 修改文件的属性信息
    /test/ CLOSE_WRITE,CLOSE user1    --- 保存关闭一个文件

删除文件监控信息输出

修改文件监控信息输出

sed命令修改文件原理

    /test/ OPEN user1                     打开文件
    /test/ CREATE sedioUSRr               创建一个临时文件(内存)
    /test/ OPEN sedioUSRr                 临时文件打开
    /test/ ACCESS user1                   读取源文件内容
    /test/ MODIFY sedioUSRr               修改临时文件
    /test/ ATTRIB sedioUSRr               临时文件属性变化
    /test/ CLOSE_NOWRITE,CLOSE user1      不编辑直接关闭源文件
    /test/ CLOSE_WRITE,CLOSE sedioUSRr    写入关闭临时文件
    /test/ MOVED_FROM sedioUSRr           将临时文件移除
    /test/ MOVED_TO user1                 移入一个新的user1源文件

inotify参数事件说明:

inotify监控命令格式:

    inotifywait -mrq --timefmt "%F" --format "%T %w %f 事件信息:%e" /data -e CREATE

主要监控 create创建、delete删除、moved_to移入、close_write修改

企业应用:防止系统重要文件被破坏 需要用到inotify进行实时一直监控 /etc passwd /var/spool/cron/root

3、sersync同步服务

a、下载软件,保留上传到linux服务器中 sersync 或者下载我用的sersync 上传linux服务器 rz -y --- 选择需要上传的数据信息 PS:软件尽量都统一保存在/server/tools目录中 b、解压软件压缩包,将解压的数据进行保存

    unzip sersync-master.zip

解压之后把sersync目录移动的 /usr/local/

    mv sersync /usr/local/

c、编写配置文件:

vim conf/confxml.xml
    6     <filter start="false">
    7         <exclude expression="(.*)\.svn"></exclude>
    8         <exclude expression="(.*)\.gz"></exclude>
    9         <exclude expression="^info/*"></exclude>
    10         <exclude expression="^static/*"></exclude>
    11     </filter>
    说明:排除指定数据信息不要进行实时传输同步
    12     <inotify>
    13         <delete start="true"/>
    14         <createFolder start="true"/>
    15         <createFile start="false"/>
    16         <closeWrite start="true"/>
    17         <moveFrom start="true"/>
    18         <moveTo start="true"/>
    19         <attrib start="false"/>
    20         <modify start="false"/>
    21     </inotify>
    说明:定义inotify程序需要监控的事件
      
    24         <localpath watch="/opt/tongbu">
    25             <remote ip="127.0.0.1" name="tongbu1"/>
    26             <!--<remote ip="192.168.8.39" name="tongbu"/>-->
    27             <!--<remote ip="192.168.8.40" name="tongbu"/>-->
    28         </localpath>
    29         <rsync>
    30             <commonParams params="-artuz"/>
    31             <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
    32             <userDefinedPort start="false" port="874"/><!-- port=874 -->

修改24到32行内容

     <localpath watch="/test">
     25             <remote ip="172.16.1.41" name="backup"/>
     26             <!--<remote ip="192.168.8.39" name="tongbu"/>-->
     27             <!--<remote ip="192.168.8.40" name="tongbu"/>-->
     28         </localpath>
     29         <rsync>
     30             <commonParams params="-az"/>
     31             <auth start="true" users="rsync_backup" passwordfil
     32             <userDefinedPort start="false" port="874"/><!-- por=874 -->

d、启动sersync服务程序 由于这边服务不是通过yum安装的所有不能用systemctl restart xxx 命令启动,要到它的命令目录中(bin)启动服务 先赋予目录执行权限

    cd bin/
    chmod a+x sersync
    export PATH="$PATH:/usr/local/sersync/bin"
    echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sersync/bin

查看命令文档

    sersync -dro  /usr/local/sersync/conf/confxml.xml    启动实时同步服务
    yum install -y psmisc
    killall sersync                                     停止实时同步服务
    /etc/rc.local <-- sersync -dro  /usr/local/sersync/conf/confxml.xml   开机自动启动  

4、实时同步服务概念总结

1) 实现实时同步的原理 监控目录数据变化 --- inotify 将数据进行传输 --- rsync 将监控和传输进行整合 --- sersync 2) 实现实时同步部署方法

  1. 部署rsync守护进程
  2. 部署inotify软件
  3. 部署sersync软件

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LINUX运维学习之综合架构篇——综合架构远程管理服务(SSH)

    SSH是一个安全的远程连接,它的数据信息是加密的,端口号为22,SSH服务默认可以为root用户连接。 TELNET是一个不安全的远程连接,它的数据信息为明文,...

    小黑Sir
  • LINUX运维学习之综合架构篇——架构搭建准备

    web服务器:让用户访问需要公网IP地址,域名解析,当访问网站的用户较多,同时写入增多消耗IO,服务器磁盘压力,为了缓解压力,用户在网站的注册等某些字符串信息,...

    小黑Sir
  • LINUX运维学习之综合架构篇——Ansible 批量管理服务上

    1、主机清单配置 2、 软件模块信息 3、 基于秘钥连接主机 4、 主机需要关闭selinux 5、 软件剧本功能 7、a...

    小黑Sir
  • LINUX运维学习之综合架构篇——Ansible 批量管理服务(中)

    service模块: 管理服务器的运行状态 停止 开启 重启 name: --- 指定管理的服务名称 state: --- 指定服务状态 started...

    小黑Sir
  • LINUX运维学习之综合架构篇——NFS存储服务器概念介绍及搭建

    NFS是网络文件共享系统 它主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录 NFS客户端(一般是应用服务器,例如web)可以通过挂载(...

    小黑Sir
  • 初级Java程序员需要掌握哪些主流技术才能拿20K?

    傻呀,干嘛不使用全文检索工具lucene或者分布式搜索Elasticsearch来优化搜索服务。

    程序猿DD
  • Kubernetes 弃用 Docker刷爆网络,有什么替代品?

    通过以上架构图,可以看到每个 Kubernetes 节点都与控制平面彼此通信。各个节点上的 kubelet 获取元数据,并执行 CRI 以在该节点上创建 / 删...

    java进阶架构师
  • 大数据技术学习路线

    加米谷大数据
  • 什么是linux云计算?用来做什么?

    什么是linux云计算?云计算基于互联网的相关服务的增加、使用和交付模式,涉及通过互联网来提供动态容易扩展而且虚拟化的资源。随时随地、便捷地、随需应变从可配置计...

    用户8639654
  • 2019精炼的大数据技术学习路线

    近年来大数据BigData、人工智能AI、物联网Iot等行业发展迅猛,很多人都想要从事大数据技术开发工作,但是,请问要怎么做,路线是什么?从哪里开始学?学哪些?...

    用户2292346
  • Mall电商实战项目专属学习路线,主流技术一网打尽!

    由于mall项目涵盖了现阶段主流技术,如果你是个Java初学者的话,最好先看下面的资料打个基础,资料具体介绍可以参考mall学习所需知识点。

    macrozheng
  • 技术书单

    《编码:隐匿在计算机软硬件背后的语言》 :零基础入门 《穿越计算机的迷雾》:零基础,但是读起来没有《编码》流畅 《程序是怎么跑起来的》 :除了第6章是讲压缩...

    神秘的寇先森
  • 不忘初心,砥砺前行|暨 InfoQ 写作平台一周年

    与 InfoQ 相识的时间不算短了,2017 年 10 月 22 日加入,但 2020 年 9 月才在平台上发布第一篇文章,11 月后才开始连载。

    程序员架构进阶
  • 学Linux运维自动化无头绪?这21个学习资源值得看

    运维工种对于自动化的强烈需求已经显露无疑——作为一个古老的技术工种,在几台、几十台服务器时尚可人肉维护,面对云计算时代动辄上百上千的服务器,单凭人肉维护显然束手...

    小小科
  • 2020年 Python学习路线及学习目标规划 拿走不谢!

    找不到完整的学习路线?小编分享2020年Python学习路线及学习目标规划拿走不谢,Python作为今年来特别受欢迎的编程语言,是AI时代头牌语言AI领域的敲门...

    python学习教程
  • CV Papers|计算机视觉论文推荐周报20200601期

    6月第一周的周末,分享几篇本周CV领域的论文,其中上海交大实时语义分割模型LRNNet和Facebook借助NAS得到的主干网模型FBNetV3很吸引人。

    CV君
  • Python爬取拉钩招聘网

    我们发现网页内容是通过post请求得到的,返回数据是json格式,那我们直接拿到json数据即可。

    python学习教程
  • 厉害!某生鲜电商平台竟然是这样设计监控模块的(已开源)~

    公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。

    java进阶架构师
  • 教程 | Linux的性能调优的思路

    作者:Linux云计算架构 链接:https://mp.weixin.qq.com/s/r8SvHyPKWUG1AwRIn9ah5w

    用户6543014

扫码关注云+社区

领取腾讯云代金券