看啥

导航

sersync实时同步

1.什么是实时同步
实时同步是⼀种只要当前⽬录发⽣变化则会触发⼀个事件,事件触发后会将变化的⽬录同步⾄远程服务器。
2.为什么实时同步
保证数据的连续性, 减少⼈⼒维护成本,解决nfs单点故障
3.实现同步的原理
实时同步需要借助inotify通知接⼝,⽤来监控⽬录的变化,如果监控的⽬录发⽣变更,则触发动作, 这个动作可以是进⾏⼀次同步操作,或其他操作;
4.实时同步⼯具的选择
sersync+RSYNC(√)、inotify+rsync
Inotify是⼀个通知接⼝,⽤来监控⽂件系统的各种变化,如果⽂件存取,删除,移动。可以⾮常⽅便 地实现⽂件异动告警,增量备份,并针对⽬录或⽂件的变化及时作出响应。rsync+inotify可以做到实 时增量备份
sersync是国⼈基于rsync+inotify-tools开发的⼯具,不仅保留了优点同时还强化了实时监控,⽂件过滤,简化配置等功能,帮助⽤户提⾼运⾏效率,节省时间和⽹络资源。

sersync项⽬实战

1.环境准备

主机 内网 安装
web01 172.16.1.7 部署XX代码
nfs 172.16.1.31 rsync+inotify+sersync、NFS服务端
backup 172.16.1.41 rsync服务端

2.nfs服务器部署sersync

1)安装rsync和inotify

[root@nfs ~]# yum install -y rsync inotify-tools

2)下载sersync

[root@nfs ~]# wget
http://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.g z

3)安装sersync(⼆进制包)

[root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz

源码包:解压,⽣成,编译,安装
4)移动并改名

[root@nfs ~]# mv GNU-Linux-x86 /usr/local/sersync

5)配置sersync

[root@nfs sersync]# vim confxml.xml
	<inotify>
#监控的动作,true就推送,false就不推送
        <delete start="true"/>
		<createFolder start="true"/>
		<createFile start="true"/>
		<closeWrite start="true"/>
		<moveFrom start="true"/>
		<moveTo start="true"/>
        <attrib start="true"/>
		<modify start="true"/>
		</inotify>

    <sersync>
    #监控的⽬录
        <localpath watch="/data">
             #rsync服务端IP      #模块名字
            <remote ip="172.16.1.41" name="data"/>
			<!--<remote ip="192.168.8.39" name="tongbu"/>-->
			<!--<remote ip="192.168.8.40" name="tongbu"/>-->               
		</localpath>
        <rsync>
              #rsync推送时的参数
            <commonParams params="-az"/>
    #rsync推送时认证           #认证的虚拟⽤户          #虚拟⽤户对应的密码⽂件
            <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
           #如果rsync不使⽤默认的873端⼝,使⽤改参数指定
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
#超时时间
            <timeout start="false" time="100"/><!-- timeout=100 -->             <ssh start="false"/>
        </rsync>
             #错误⽇志保存路径
        <failLog path="/tmp/rsync_fail_log.sh" 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>
        <plugin start="false" name="command"/>
    </sersync>

6)创建密码⽂件

[root@nfs sersync]# echo "123" > /etc/rsync.password [root@nfs sersync]# chmod 600 /etc/rsync.password

7)查看sersync命令

[root@nfs sersync]# ./sersync2 -h 
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches 
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events parse the command param

------------
参数-d:启⽤守护进程模式
参数-r:在监控前,将监控⽬录与远程主机⽤rsync命令推送⼀遍 c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置⽂件,默认使⽤confxml.xml⽂件
参数-m:单独启⽤其他模块,使⽤    -m refreshCDN 开启刷新CDN模块 参数-m:单独启⽤其他模块,使⽤    -m socket 开启socket模块 参数-m:单独启⽤其他模块,使⽤    -m http 开启http模块
不加-m参数,则默认执⾏同步程序
________________________________________________________________ 
[root@nfs sersync]#

8)启动sersync

[root@nfs sersync]# ./sersync2 -dro confxml.xml
[root@nfs sersync]# /usr/local/sersync/sersync2 -dro /usr/local/sersync/confxml.xml

9)验证⽂件实时同步

分享扩展

1.rsync配置多模块

uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200 timeout = 600
ignore errors read only = false list = true
auth users = rsync_backup secrets file = /etc/rsync.passwd ####################
[data]
comment = 我是⽂件共享⽬录 path = /data
[backup]
comment = 我是数据备份⽬录 path = /backup

2.rsync配置多模块不通虚拟⽤户

[root@backup backup]# vim /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200 
timeout = 600
ignore errors read only = false list = true
secrets file = /etc/rsync.passwd ####################
[data]
comment = 我是⽂件共享⽬录
path = /data
auth users = rsync_data
[backup]
comment = 我是数据备份⽬录
path = /backup
auth users = rsync_backup

[root@backup backup]# vim /etc/rsync.passwd 
rsync_backup:123
rsync_data:123

3.NFS配置多个⽬录可以挂载

[root@nfs ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666) /backup 172.16.1.0/24(rw,sync,all_squash)
[root@nfs ~]# systemctl restart nfs

[root@web01 html]# showmount -e 172.16.1.31 Export list for 172.16.1.31:
/backup 172.16.1.0/24 /data 172.16.1.0/24

4.sersync实时同步多个不同的⽬录

root@nfs sersync]# vim confxml2.xml  <sersync>
        <localpath watch="/backup">
            <remote ip="172.16.1.41" name="backup"/>

[root@nfs sersync]# vim confxml.xml
 <sersync>
        <localpath watch="/data">
            <remote ip="172.16.1.41" name="data"/>

posted on 2021-09-27 22:12  看啥  阅读(959)  评论(0编辑  收藏  举报