实时同步

预备知识

实时同步概述

什么是实时同步

实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器。

为什么要实时同步

保证数据的连续性 ,减少人力维护成本

实时同步工具选择 , sersync+RSYNC(√) 、 inotify+rsync Inotify、lsyncd

是一个通知接口,用来监控文件系统的各种变化,如果文件存取,删除,移动。可以非常方便地实现文件异动告警,增量备份,并针对目录或文件的变化及时作出响应。 rsync+inotify可以实触发式实时同步增量备份,sersync是国人基于rsync+inotify‐tools的开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化,配置等功能,帮助用户提高运行效率,节省时间和网络资源。
实时同步实战

案例:实现web上传视频文件,实现是写入NFS至存储,当NFS存在新的数据则会实时的复制到备份服务器

角色 外网IP(NAT) 内网IP(LAN) 安装工具
web01 eth0:10.0.0.7 eth1:172.16.1.7
nfs-server eth0:10.0.0.31 eth1:172.16.1.31 rsync+inotify+sersync
backup eth0:10.0.0.41 eth1L172,16,1.41 rsync-server

配置文件

/app/sersync/conf/confxml.xml

[https://www.processon.com/view/link/5bf911c0e4b006dc83a24929]

image.png

[15:53 root@nfs01 ~]#vim /app/sersync/conf/confxml.xml 
  1 
  2 
  3     
  4           
  5        文件系统\\修改为true
  6           \\过滤
  7               \\排除--exclude
  8                \\排除--exclude
  9                 \\排除--exclude
 10               \\排除--exclude
 11         
 12     
 13                   \\配置inotify的监控事件,实时监控目录变量 是否有变化
 14         
 15         
 16         
 17         
 18         
 19                  \\文件属性
 20                  \\mtime修改时间
 21                       \\sersync什么时候用rsync推送
 22 
 23     
 24                          \\要监控哪个目录 发生变量
 25                  \\rsync服务端ip name=模块名
 26                
 27             
 28         
 29                                  \\rsync命令配置
 30                              \\rsync的参数
 31               \\认证哪个用户和密码文件
 32             
 33             
 34             
 35         
 36         
                    \\rsync错误日志指定的路径
 37             \\定时任务
 38             
 39                 
 40                 
 41                 
 42         
 43         
 44     
 45 
 46     
 47           
 48         
 49             
 50             
 51         
 52     
 53 
 54     
 55         
 56             
 57         
 58     
 59     
 60         
 61             
 62             
 63             
 64         
 65     
 66 

在客户端修改此配置文件,如下内容即可


  5       

 23     
 24              
 25             
 26             
 27             
 28         
 29         
 30             
 31             
 32             
 33             
 34             
 35         
 36           #sersersync日志文件

5.sersync软件添加x权限并创建软连接到/sbin下

[root@nfs01 /usr/local/sersync]# chmod +x /usr/local/sersync/bin/sersync 
[root@nfs01 /usr/local/sersync]# ln -s /usr/local/sersync/bin/sersync /sbin/sersync2
[root@nfs01 /usr/local/sersync]# ll -d  /sbin/sersync2
lrwxrwxrwx 1 root root 30 May 25 11:43 /sbin/sersync2 -> /usr/local/sersync/bin/sersync

6.启动sersync服务守护模式

查看sersync启动参数

[root@nfs01 /usr/local/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参数,则默认执行同步程序


启动Sersync ,如果需要同时同步多个目录,那么配置多套环境

[root@nfs01 /usr/local/sersync]# sersync2 -rd -o /usr/local/sersync/conf/confxml.xml 

检查测试:

1.nfs01创建文件

[root@nfs01 /usr/local/sersync]# touch /nfsbackup/oldboy{1..3}.txt
[root@nfs01 /usr/local/sersync]# ll /nfsbackup
total 0
-rw-r--r-- 1 root root 0 May 25 13:01 oldboy1.txt
-rw-r--r-- 1 root root 0 May 25 13:01 oldboy2.txt
-rw-r--r-- 1 root root 0 May 25 13:01 oldboy3.txt

2.backup端检查

[root@backup ~]# ll  /nfsbackup
total 0
-rw-r--r-- 1 rsync rsync 0 May 25 13:01 oldboy10.txt
-rw-r--r-- 1 rsync rsync 0 May 25 13:01 oldboy1.txt
-rw-r--r-- 1 rsync rsync 0 May 25 13:01 oldboy2.txt
-rw-r--r-- 1 rsync rsync 0 May 25 13:01 oldboy3.txt

3.nfs01删除文件

[root@nfs01 /usr/local/sersync]# rm -rf /nfsbackup/*
[root@nfs01 /usr/local/sersync]# ll /nfsbackup
total 0

4.backup检查

[root@backup ~]# ll  /nfsbackup
total 0

第二个实时同步方式

Lsyncd实时同步

lsyncd实时同步是指backup服务器和nfs服务器之间进行实时同步,将nfs共享目录和backup某一目录进行实时同步。

1、nfs下载lsyncd

yum install -y lsyncd 将源配置文件清空,/etc/lsyncd.conf

settings {                                      ---设置
 logfile = "/var/log/lsyncd/lsyncd.log",        ---日志文件
 statusFile = "/var/log/lsyncd/lsyncd.status",  ---状态文件
 inotifyMode = "CloseWrite",                    ---通知模式=关闭写
 maxProcesses = 8,                              ---进程数
}
sync {
 default.rsync,                                ---默认模式
 source = "/data",                             ---源 客户端要同步的目录
 target = "[email protected]::backup",  ---服务端的地址
 delete= true,                                 ---无差异同步=运行
 exclude = { ".*" },                           ---排除
 delay = 1,                                    ---延迟1秒 检测文件有变化后等待1秒同步
rsync = {                                      ---这个模块专门配置rsync的配置
 binary = "/usr/bin/rsync",                    ---rsync命令的路径
 archive = true,                               ---是否存档
 compress = true,                              ---三个参数 -avz
 verbose = true,                               
 password_file = "/etc/rsync.password",        ---密码文件(和backup服务器一样权限600 密码一样)
 _extra = {"--bwlimit=200"}                    ---速率、限速
}
}

注意:权限问题 使用运行的用户问题(/etc/rsyncd.conf uid和gid )

2、配置完成后进行启动、检查、重启lsyncd

systemctl start lsyncd
systemctl status lsyncd
systemctl enable lsynncd

你可能感兴趣的:(实时同步)