zoukankan      html  css  js  c++  java
  • rsync+inotify在linux下的多服务器同步(双向同步)

    单向同步的可参考本文作者另一篇文章:https://www.cnblogs.com/mrtop/p/12396775.html

    本文讲解的是通过rsync+inotify实现*双*向*同*步*

    根据上一篇文章中搭建与配置(本篇也是接续上一篇的配置,参考:https://www.cnblogs.com/mrtop/p/12396775.html,实现1对2的单向同步,已经实现192.168.88.89和192.168.88.90可同步192.168.88.88的/root/rsync/test目录下所有文件。

    接下来我们将实现192.168.88.88的/root/rsync/test目录同步192.168.88.89的/root/rsync/backup89路径下所有文件,即实现双向同步。

    结构图如下:

    步骤1、192.168.88.89配置

    此时192.168.88.89服务器应该是被同步的,相当于源服务器,所以需要配置shell脚本通过inotify监控文件事件变化,再触发rsync同步。

    1,设置同步密码为rsync,别忘记将密码文件设置600权限

    2,配置shell

     步骤2、192.168.88.88配置

    此时192.168.88.88服务器应该是同步的,相当于目标服务器,所以需要配置conf文件。

    1,设置同步密码为rsync,别忘记将密码文件设置600权限

     注意此时因为88服务器作为目标服务器密码应该加上源服务的认证用户名webuser

    2,配置conf文件

     步骤3、启动各自脚本

    在192.168.88.89启动shell脚本监控文件事件变化

    [root@localhost rsync]# sh /root/rsync/rsync1.sh &

    在192.168.88.88启动conf文件,主动同步文件

    [root@localhost test]# /usr/rsync/bin/rsync --daemon --config=/root/rsync/rsync1.conf

    至此,双边的inotify+rsync都已开启实现双向同步。

    Tips:双向与单向的配置区别在于

    单项的同步实际的内部实现是在源服务器(被同步)开启inotify监控某个目录下文件的增加和修改删除等,然后通过rsync配置发起challenge–response authentication会话,找到配置中的ip所对应的认证信息,开始认证,即.sh的shell文件;而目标服务器(同步)会马上响应challenge–response authentication会话,将在自己的conf文件中找到对应的模块去回应比对认证消息,认证通过则同步。

    双向同步的内部实现实际是既将自己作为源又将自己作为目标,即既配置shell脚本又配置conf文件,同时启动这两个文件。

     **后记**

    如果要实现多对多的同步,如3台服务器之间互相同步,那么各自的shell脚本只需要配置1个,.conf也只需配置1个,然后将host和各自模块名称、用户名、密码等等匹对正确即可,如下:

     在这个.conf文件则需要设置多个module(文件中的中括号为module名,如[web] [web2]),配对好各自对应的module以及密码文件等即可实现多对多的同步。

  • 相关阅读:
    C# List对象集合重组为新集合和获取某个字段组成新数组
    sqlserver xml for path html标签被转译问题
    高中信息技术(Python)重难点3:最大公约数
    高中信息技术(Python)重难点2:编码
    高中信息技术(Python)重难点1:数制
    天天快乐编程监考系统使用文档
    2021年OI集训队赛前模拟5题解
    2021年OI集训队赛前模拟4题解
    mysql-shell部署MGR
    GreatSQL手工部署mgr集群
  • 原文地址:https://www.cnblogs.com/mrtop/p/12398561.html
Copyright © 2011-2022 走看看