sersync实时复制工具实践

环境

  • NFS ip = 10.0.0.31
  • backup ip = 10.0.0.41(作为实时共享)
    在backup的rsync服务配置里面加一个模块,创建/nfsbackup并改变权限。
[root@backup ~]#vim /etc/rsyncd.conf
[nfsbackup]
path = /nfsbackup
ignore errors
read only = false
list = false
hosts allow = 172.16.1.0/24 
[root@backup ~]# pkill rsync 配置完后要重启,先删掉目前的进程!
[root@backup ~]# lsof -i :873
[root@backup ~]# rsync --daemon
[root@backup ~]# lsof -i :873  
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsync   1401 root    4u  IPv4  14468      0t0  TCP *:rsync (LISTEN)
rsync   1401 root    5u  IPv6  14469      0t0  TCP *:rsync (LISTEN)
[root@backup ~]# mkdir -p /nfsbackup
[root@backup ~]# chown -R rsync.rsync /nfsbackup

在nfs客户端推送资料到backup里面:

[root@nfs01 data]#   rsync -avz /data/ [email protected]::nfsbackup --password-file=/etc/rsync.password
sending incremental file list
./
a
b
c

sent 182 bytes  received 68 bytes  500.00 bytes/sec
total size is 0  speedup is 0.00
[root@backup nfsbackup]# ls   --->我们回到backup去看看
a  b  c 

实现从nfs客户端到rsync服务端的rsync服务部署

sersync优点:

1)支持配置文件管理
2)真正的守护进程socket
3)可以对失败文件定时重传(定时任务功能)
4)第三方的HTTP接口(更新CDN缓存)
5)默认多线程rsync同步

高并发数据实时同步方案小结:
1.inotify(sersync)+rsync 是文件级别的 ----> 效率不高
2.drbd文件系统级别,文件级别的,基于block。缺点:备节点数据不可用。
3.第三方软件的同步功能: mysql 同步、orcale,mongodb
4.程序双写,直接写两台服务器。
5.透过业务逻辑解决(读写分离,备读不到,读主)
6.NFS集群(双写主存储,备存储用inotify(sersync)+rsync ,备没有找主 解决延迟问题)

sersync实时复制工具实践

rsync部署如上面的例子:
第一个里程碑:实现从nfs客户端到rsync服务端的rsync服务部署

第二个里程碑:在客户端安装sersync

网上源安装:

git clone https://github.com/wsgzao/sersync
把这个档案放在/application 里面,整理成下面的样子
[root@nfs01 sersync]# tree
.
├── bin
│   └── sersync
├── conf
│   └── confxml.xml   ---->配置文件
├── GNU-Linux-x86
├── logs
└── sersync2.5.4_64bit_binary_stable_final.tar.gz

4 directories, 3 files

在confxml.xml里面:

过滤功能:

 6       
  7         
  8         
  9         
 10         
 11     

inotify监控什么属性:(true表示当前有监控的事件)

 12     
 13         
 14         
 15         
 16         
 17         
 18         
 19         
 20         
 21     

sersync同步

    
        
            
            
            
        
        
            
            
            
            
            
        
        
        
            
                
                
            
        
        
    

配置完后,将sersync加上可执行的权限:

chmod +x bin/sersync 

可执行的参数:

[root@nfs01 data]# /application/sersync/bin/sersync -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:

 /application/sersync/bin/sersync -d -r -n 8 -o /application/sersync/conf/confxml.xml

检验成果:

在NFS服务端:  
[root@nfs01 data]# ps -ef | grep sersync                                 root       4180      1  0 10:57 ?        00:00:00 /application/sersync/bin/sersync -d -r -n 8 -o /application/sersync/conf/confxml.xml
root       4194   2910  0 10:57 pts/0    00:00:00 grep sersync
[root@nfs01 data]# cd /data
[root@nfs01 data]# ls
[root@nfs01 data]# touch stu{01..10}
[root@nfs01 data]# ls
stu01  stu02  stu03  stu04  stu05  stu06  stu07  stu08  stu09  stu10

到backup
[root@backup nfsbackup]# ls
stu01  stu02  stu03  stu04  stu05  stu06  stu07  stu08  stu09  stu10