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以及密码文件等即可实现多对多的同步。

 

posted @ 2020-03-02 22:31  pantaQ  阅读(774)  评论(0编辑  收藏  举报