一、实时同步服务原理、概念

image.png
1)需要部署好rsync守护进程服务,实现数据传输
2)需要部署好inotify服务,实现目录中数据变化监控
3)将rsync服务和inotify服务建立联系,将变化的数据尽心实时备份传输

二、服务部署

2.1 部署rsync守护进程

前文已经部署好,这里不再做说明

2.2 部署inotify监控服务

第一步、安装软件
yum install -y inotity-tools
第二步、熟悉命令的使用
/usr/bin/inotifywait —-监控目录数据信息变化
/usr/bin/inotifywatch —-对监控的变化信息进行统计
inotifywait命令使用方法
inotifywait [参数] 监控的目录
-m | —monitor 实现一直监控目录的数据变化
-r —recursive 进行递归监控
-q —quite —尽量减少信息的输出
—format —-指定输出的信息的格式
—timefmt —-指定输出的时间信息格式
-e —event —-指定监控事件信息

创建文件进行监控信息
/data/ CREATE testfile01 —-创建一个文件
/data/ OPEN testfile01 —-打开文件
/data/ ATTRIB testfile01 —-文件属性变化
/data/ CLOSE_WRITE,CLOSE testfile01 —-写入关闭文件
删除一个文件
/data/ DELETE testfile01 —-删除文件
修改一个文件
/data/ MODIFY xiang_test.txt —-修改文件
/data/ OPEN xiang_test.txt
/data/ MODIFY xiang_test.txt
/data/ CLOSE_WRITE,CLOSE xiang_test.txt

[root@nfs01 ~]# sed -i “s#abcdefg#1234567#g” /data/xiang_test.txt
/data/ OPEN xiang_test.txt —打开文件
/data/ CREATE sed2RGMjy —创建一个临时文件(内存)
/data/ OPEN sed2RGMjy —打开临时文件
/data/ ACCESS xiang_test.txt —读取源文件内容
/data/ MODIFY sed2RGMjy —修改临时文件内容
/data/ ATTRIB sed2RGMjy —临时文件属性变化
/data/ CLOSE_NOWRITE,CLOSE xiang_test.txt —不编辑直接关闭源文件
/data/ CLOSE_WRITE,CLOSE sed2RGMjy —写入关闭临时文件
/data/ MOVED_FROM sed2RGMjy —将临时文件移除
/data/ MOVED_TO xiang_test.txt —移入一个新的xiang_test.txt源文件

inotify监控命令格式:
[root@nfs01 ~]# inotifywait -mrq —timefmt “%F” —format “%T %w %f 事件信息:%e” /data -e CREATE
create创建、delete删除、moved_to移入、close_write修改
企业应用:防止系统重要文件被破坏
需要用到inotify进行实时一直监控 /etc/passwd /var/spool/cron/root

2.3 部署sersync同步服务

第一步、下载安装,该文件无法直接yum安装,需到github.com/wsgzao/sersync这个地址下载
第二步、上传该文件至服务器并解压,移至/usr/local目录下
第三步、编写配置文件
vim conf/confxml.xml
排除指定数据信息不要进行实时传输同步
6
7
8
9
10
11

说明:定义inotify程序需要监控的事件
12
13
14
15
16
17
18
19
20
21

主配置文件
23
24
25
26
27
28

29
30
31
32
33
34
35

36
37
38
39
40
41

42

43
44

image.png
第四步、启动服务
将sersync程序添加至环境变量
[root@nfs01 sersync]# export PATH=”$PATH:/usr/local/sersync”
参数
[root@nfs01 sersync]# sersync2 -h
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/maxuserwatches
execute:echo 327679 > /proc/sys/fs/inotify/maxqueuedevents
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参数,则默认执行同步程序
启动程序:

  1. [root@nfs01 ~]# sersync2 -dro /usr/local/sersync/confxml.xml
  2. set the system param
  3. executeecho 50000000 > /proc/sys/fs/inotify/max_user_watches
  4. executeecho 327679 > /proc/sys/fs/inotify/max_queued_events
  5. parse the command param
  6. option: -d run as a daemon
  7. option: -r rsync all the local files to the remote servers before the sersync work
  8. option: -o config xml name /usr/local/sersync/confxml.xml
  9. daemon thread num: 10
  10. parse xml config file
  11. host ip : localhost host port: 8008
  12. daemon startsersync run behind the console
  13. use rsync password-file :
  14. user is rsync_backup
  15. passwordfile is /etc/rsync.password
  16. config xml parse success
  17. please set /etc/rsyncd.conf max connections=0 Manually
  18. sersync working thread 12 = 1(primary thread) + 1(fail retry thread) + 10(daemon sub threads)
  19. Max threads numbers is: 22 = 12(Thread pool nums) + 10(Sub threads)
  20. please according your cpu use -n param to adjust the cpu rate
  21. ------------------------------------------
  22. rsync the directory recursivly to the remote servers once
  23. working please wait...
  24. execute command: cd /data && rsync -az -R --delete ./ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password >/dev/null 2>&1
  25. run the sersync:
  26. watch path is: /data
  27. [root@nfs01 ~]# ps -ef | grep sersync
  28. root 107648 1 0 16:50 ? 00:00:00 sersync2 -dro /usr/local/sersync/confxml.xml
  29. root 107715 99659 0 16:51 pts/2 00:00:00 grep --color=auto sersync
  30. You have new mail in /var/spool/mail/root

结束进程:sersync程序没有提供结束命令
killall命令工具默认没有安装
yum provides killall
yum install -y psmisc
killall sersync2
开机自启动:将启动命令添加到/etc/rc.local文件中

2.4 总结

实时同步服务概念总结
1、实现实时同步的原理
监控目录数据变化 —inotify
将数据进行传输 —rsync
将监控和传输进行整合 —-sersync
2、实现实时同步部署方法
1、部署rsync守护进程
2、部署inotify软件
3、部署sersync软件