美文网首页
5、综合架构详解-实时同步服务

5、综合架构详解-实时同步服务

作者: 一个反派人物 | 来源:发表于2020-12-15 18:34 被阅读0次

1 实现原理

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

2 服务部署过程

2.1 部署rsync守护进程

https://www.jianshu.com/p/1e6dac48fa33
服务端配置操作
客户端配置操作

2.2 部署inotify监控服务

2.2.1 安装软件

yum -y install inotify-tools

2.2.2 inotifywait命令

inotifywait [参数] 文件...

常见参数:
-m monitor         一直监控数据的变化
-r recursive       递归监控
-q quiet           尽量减少输出信息
--format  <fmt>    指定输出信息的格式
--timefmt          指定输出的时间信息格式
-e event           指定监控的事件信息
                   常监控的事件:create 创建、delete 删除、moved_to 移入、close_write 修改
          

常用的配置

[root@nfs01]$ inotifywait -mrq --timefmt "%F" --format "%T %w %f 事件信息:%e" -e create /data
2020-12-15 /data/ f3.txt 事件信息:CREATE

2.3 部署lsyncd同步服务

2.3.1 lsyncd简介

lsyncd是lua语言封装了inotify和rsync的工具,用inotify的触发机制,通过rsync去差异同步,达到实时效果。

2.3.2 安装软件

yum -y install lsyncd

2.3.3 配置文件

lsyncd的配置主要分两部分:全局配置和局部配置
示例:

[root@nfs01 data]# cat /tmp/lsyncd_01.conf 
settings {
   pidfile = "/var/run/lsyncd.pid",
   logfile    = "/var/log/lsyncd/lsyncd.log",
   statusFile = "/var/log/lsyncd/lsyncd.status",
   insist = true,
   -- nodaemon   = true,
}

sync {
  default.rsync,
  source = "/data",
  target = "rsync_backup@172.16.1.41::backup",
  delete = "running",
  rsync = {
    archive = true,
    password_file = "/etc/rsync.password",
    compress = true,
 }
}

2.3.3.1 全局配置

由settings{ }包括的内容属于全局配置,例如

settings {
   pidfile = "/var/run/lsyncd.pid",
   logfile = "/var/log/lsyncd/lsyncd.log",
   statusFile = "/var/log/lsyncd/lsyncd.status",
   insist = true,
   -- nodaemon = true,
}

可以设定的参数如下:


1. pidfile
文件记录lsyncd当前进程id值,如果没有pid文件,那么则可以启动多个lsyncd进程,这会导致多个lsyncd进程同时运行造成同步的数据混乱。如果设置了pid文件,同时只能启动一个lsyncd进程。避免多个lsyncd进程导致同步混乱的情况,pid文件一定要设置。
2. inotifyMode
指定lsyncd监控的事件,其值有:CloseWrite, Modify, CloseWrite or Modify
默认是CloseWrite,CloseWrite事件并不是单一事件而是包含了很多inotify事件,如下:
CloseWrite包含了以下inotify事件:
    IN_ATTRIB       文件属性被修改,如 chmod、chown、touch 等
    IN_CLOSE_WRITE  可写文件被关闭
    IN_CREATE       创建新文件
    IN_DELETE       文件/目录已在监控目录中删除
    IN_DELETE_SELF  监控的项目本身已删除
    IN_MOVED_FROM   文件被移出监控目录,如 mv
    IN_MOVED_TO     文件被移动到监控目录,如 mv、cp
    IN_DONT_FOLLOW  不追踪符号链接的真实路径
    IN_ONLYDIR;     仅监视目录

Modify是在CloseWrite的基础上增加了IN_MODIFY事件,并删除了IN_CLOSE_WRITE事件
    IN_MODIFY       文件已被修改

CloseWrite or Modify 是在CloseWrite的基础上增加了IN_MODIFY事件

3. Insist
默认情况下,当启动lsyncd失败时,Lsyncd会结束允许并显示一条错误消息。开启了容错模式以后,lsyncd并不会因为某个配置的错误导致启动失败,而是记录错误日志并忽略错误配置继续运行。
4. maxProcesses
lsyncd会产生一个子进程去运行sync任务。多个sync的时候,lsyncd会产生多个子进程并发运行sync任务,但最多不会超过maxProcesses的值。
5. maxDelays
累计到多少所监控的事件激活一次同步,即使后面的sync配置的delay延迟时间还未到

2.3.3.2 局部配置

sync{ }是lsyncd执行具体的同步配置,每个sync配置都是独立的,可以同时执行多个sync配置。下面是一个例子

sync {
  default.rsync,
  source = "/data",
  target = "rsync_backup@172.16.1.41::backup",
  delete = "running",
  rsync = {
    archive = true,
    password_file = "/etc/rsync.password",
    compress = true,
 }

常用参数如下:
1. rsync、rsyncssh、direct三种模式

  • default.rsync :
    使用rsync进行本地目录间同步,或使用rsync的ssh形式进行远程同步,或使用rsync的daemon方式进行远程同步(需要目标主机也安装rsync)
  • default.direct :
    本地目录间同步,使用cp、rm等命令完成差异文件备份
  • default.rsyncssh :
    同步到远程主机目录,使用rsync的ssh模式,需要先配置ssh免密登录(密钥登录)

2. source
同步的源目录,使用绝对路径。
3. target
目标地址,仅用于direct, rsync模式, 对应不同的模式有几种写法例如

1. /tmp/dest
    本地目录同步  root@172.16.1.31:/opt/
    使用远程shell(如rsh、ssh) 同步到远程服务器目录,
    root@可以省略,默认是root用户 。用于rsync模式。
2. root@172.29.88.223::var/back
    使用rsync的daemon模式同步到远程服务器目录,目标主机也需要安装rsync。
    var/back等于/var/back,root@可以省略,默认是root用户。
    用于rsync模式。

4. targetdir
目标地址,仅用于rsyncssh模式,例如:/tmp/dest
5. init
当init = false,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步。默认是true
6. delay
等待rsync同步延时时间,默认15秒(最大累计到1000个不可合并的事件,settings中的maxDelays,默认1000)。也就是15s内监控目录下发生的改动,会累积到一次rsync同步,避免过于频繁的同步。(可合并的意思是,15s内两次修改了同一文件,最后只同步最新的文件)
7. excludeFrom
从文件加载排除规则,如excludeFrom = "/etc/lsyncd.exclude"
8. exclude
从字符串加载排除规则,如exclude = { '*.bak' , '*.tmp' }

这里的规则写法与原生rsync有点不同,更为简单:
如果规则以斜线/开头,则从头开始要匹配全部
如果规则以/结尾,则要匹配监控路径的末尾
?匹配任何字符,但不包括/
*匹配0或多个字符,但不包括/
**匹配0或多个字符,可以是/

9. delete
为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除。它除了false,还有startup、running值。

true
    Lsyncd在启动时会删除目标上的文件,正常操作过程中删除的文件也会删除。
false
    Lsyncd不会删除目标上的任何文件。既不在启动时也不在正常运行时。(但是可能会覆盖)
startup
    Lsyncd在启动时会删除目标上的文件,但在正常运行时不会删除。
running
    Lsyncd在启动时不会删除目标上的文件,但会删除在正常操作过程中删除的文件。

10. rsync
配置rsync的命令行参数。仅适用于,default.rsyncssh和default.rsync模式。

下图是所有rsync模式的参数详解:


11. host
远程主机地址,例如: 192.168.1.1 或者 zhai@192.168.8.1.1

12. ssh
配置ssh参数,例如端口:port=1234

2.3.3.3 启动守护进程

lsyncd [OPTIONS] [CONFIG-FILE]

lsyncd /tmp/lsyncd_01.conf 

3 实时同步服务部署总结

1)部署rsyncd守护进程及客户端
2)安装inotify
3)部署lsyncd守护进程

相关文章

  • Linux学习-week12-综合架构实时同步

    老男孩教育64期--week12--综合架构实时同步 综合架构知识概述说明存储服务客户端配置参数实时同步备份数据方...

  • 综合架构实时同步详解

    day35 综合架构实时同步 课程介绍: 1.实时同步原理概念2.实现实时同步方式3.实现实时同步方式1)利用脚本...

  • 实时同步服务详解

    1. 实时同步服务原理及概念 部署 rsync 守护进程服务,实现数据传输 部署 inotify 服务,实现目录中...

  • day 35综合架构实时同步

    课程介绍部分 (补充扩展) 课程总结 一:网站实时同步服务 二.数据监控软件 inotify 三.实现实时同步数据...

  • D-35综合架构实时同步

    一、NFS服务耦合度 nfs耦合度: 是指nfs客户端和服务端关系过于紧密,当nfs服务没有正常启动的情况下,会使...

  • 备份服务之实时同步备份(sersync)

    实时同步备份方法1)利用脚本实现实时同步2)利用软件实现实时同步 实时同步备份原理 存储服务器 --...

  • Day33综合架构Sersync实时同步

    需要准备的虚拟机 角色外网内网安装工具web01eth0:10.0.0.7eth1:172.16.1.7httpd...

  • 39-综合架构-sersync实时同步实战

    一、如何提高网站并发访问量高的方法? 二、sersync介绍 1>实时同步是一种只要当前目录发生变化则会触发一个事...

  • sersync 对网站数据实时同步备份

    sersync 实现实时同步数据 1 sersync实时同步原理 rsync守护进程服务,实现数据传输 inoti...

  • Linux sersync day35

    什么是实时同步为什么要实时同步实时同步的原理实时同步的场景实时同步工具选择实时同步案例演示 一、什么是实时同步 实...

网友评论

      本文标题:5、综合架构详解-实时同步服务

      本文链接:https://www.haomeiwen.com/subject/esqggktx.html