1.概述

背景
 之前我们通过rsync+定时任务实现定时备份/同步
 对于NFS我们需要进行实时同步
 
选择
 分布式存储
 使用实时同步服务+NFS.
 选择公有云对象存储OSS,七牛存储,腾讯存储COS.
 
选择: nfs+实时同步工具
   inotify(bug需要书写脚本,不推荐使用.):是个命令监控指定目录是否发生变化
   sersync(国产开源,内置inotify+rsync命令,一个命令+一个配置文件)
   lsyncd

1.1Sersync原理及架构

image-20240530102539817.png

2.部署及使用

1.部署,及修改相关配置文件,详情见下方图
目录规划:
/app/tools/sersync/
/app/tools/sersync/bin/
/app/tools/sersync/conf/
修改之前:
GNU-Linux-x86/
GNU-Linux-x86/sersync2
GNU-Linux-x86/confxml.xml
修改完成后样子:
[root@nfs01 /app/tools/sersync]# tree 
.
├── bin
│   └── sersync2
└── conf
   └── confxml.xml


2.启动sersync
创建软连接
ln -s /app/tools/sersync/bin/sersync2 /bin/
启动服务端
sersync2 -rdo /app/tools/sersync/conf/confxml.xml
关闭服务需要使用kill+pid或pkill


3.接入nfs服务
服务端配置
/data/     172.16.1.0/24(rw)
客户端挂载
mount -t nfs 172.16.1.31:/data/   /upload/

image-20240530102722581.png

##参考配置如下
<sersync>
        <localpath watch="/nfs">
            <remote ip="10.0.0.41" name="nfs"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
        </localpath>
        <rsync>
            <commonParams params="-az"/>
            <auth start="true" users="rsync_backup" passwordfile="/opt/rsycn.password"/>
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="false" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
        </rsync>
        <failLog path="/var/log/rsync_fail_log.log" timeToExecute="60"/><!--default every 60mins execute once-->
        <crontab start="false" schedule="600"><!--600mins-->
            <crontabfilter start="false">
                <exclude expression="*.php"></exclude>
                <exclude expression="info/*"></exclude>
            </crontabfilter>
        </crontab>