sersync实时复制工具

sersync实时复制工具介绍

1. sersync工具简介

sersync是一个利用inotify和rsync技术实现的服务器数据实时复制解决方案。inotify监控文件系统的变化,一旦有变化,rsync命令便将数据复制到远端服务器。

2. sersync特点
  • 用C++编写,支持事件过滤。
  • 使用XML配置文件,守护进程启动,配置简单。
  • 多线程复制,支持并发。
  • 出错处理机制,失败队列和定时复制。
  • 支持socket和HTTP协议扩展,便于二次开发。
3. sersync图解原理

在这里插入图片描述
sersync配置文件:干两件事(原理)
用于监控文件系统的变化和进行文件的同步备份

inotifywait -mrq -e createFolder,close_write,delete,moveFrom,moveTo /data
 rsync -avz  /data  rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

第一行命令 inotifywait 是用来监控文件系统中特定事件的发生。具体来说:

-mrq 表示以递归模式(-m 监控子目录)、实时(-r 实时输出)和退出(-q 退出inotifywait,当指定的事件触发时)。
-e createFolder,close_write,delete,moveFrom,moveTo 指定了要监控的事件类型,包括:
createFolder 文件夹被创建。
close_write 文件写入关闭。
delete 文件或文件夹被删除。
moveFrom 文件或文件夹被移动出去。
moveTo 文件或文件夹被移动进来。
/data 是要监控的目录。
这个命令通常用于脚本中,以便在文件系统发生变化时执行某些操作。

第二行命令 rsync 是一个快速、多功能的文件复制工具。它可以用来本地复制文件和目录,也可以用于网络传输。具体参数如下:

-avz 是常用的选项组合:
-a 表示归档模式,保留原始文件的权限、时间戳、软硬链接等。
-v 表示详细模式,输出详细的处理过程。
-z 表示压缩模式,传输过程中压缩数据,以加快传输速度。
/data 是要备份的本地目录。
rsync_backup@172.16.1.41::backup 是rsync的服务器端路径,其中:
rsync_backup 是远程服务器上的用户名。
172.16.1.41 是远程服务器的IP地址。
::backup 表示Rsync模块的名称,这通常用于配置了Rsync模块的服务器上。
–password-file=/etc/rsync.password 指定了密码文件的位置,用于认证过程。
这个命令用于将 /data 目录同步到远程服务器的 backup 模块中。

4. sersync+rsync实时复制方案项目实践
  • 项目方案架构
    在这里插入图片描述

  • 远程数据传输服务:确保rsync服务配置成功,能在客户端推送和拉取数据。

 rsync -avz  /data  rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
  • 系统inotify支持:检查系统是否支持实时监控。
    通过检查/proc/sys/fs/inotify目中是否存在以下三个文件,可以确认系统是否支持实时监控程序。
uname -r # 3.10.0-957.1.3.el7.x86_64  #<==内核是3.10,支持inotify机制。
ls -l /proc/sys/fs/inotify/

-rw-r–r–. 1 root root 0 Apr 14 18:54 max_queued_events
-rw-r–r–. 1 root root 0 Apr 14 18:54 max_user_instances
-rw-r–r–. 1 root root 0 Apr 14 18:54 max_user_watches

  • sersync安装配置
    • 下载sersync二进制文件。
      在nfs01安装配置sersync
mkdir /server/tools
cd /server/tools
wget https://github.com/wsgzao/sersync/blob/master/sersync2.5.4_64bit_binary_stable_final.tar.gz
  • 解压并配置sersync。
tar xf sersync_oldboy_64bit_20160928.tar.gz sersync_oldboy_64bit_20160928.tar.gz
  • 启动sersync
    使用不同参数启动sersync,如守护进程模式、同步前推送、指定配置文件等。
 /application/sersync/bin/sersync -r -o /application/sersync/conf/confxml.xml -d
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
5. 配置systemctl启动sersync
  • 创建sersync.service文件,并添加相应的配置。
sudo vim /etc/rc.d/init.d/sersync
#!/bin/bash
# chkconfig: 2345 21 81
# description: rsync service start and stop scripts
# Author: oldboy
# Organization: www.oldboyedu.com
start(){
    /application/sersync/bin/sersync -d -o /application/sersync/conf/confxml.xml &>/dev/null
}
stop(){
    killall sersync 2>/dev/null
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        sleep 2
        start
        ;;
    *)
        echo $"Usage:$0 {start|stop|restart}"
        exit 1
esac

chmod +x /etc/rc.d/init.d/sersync

使用文本编辑器(如 vim 或 nano)编辑该服务文件

sudo vim /usr/lib/systemd/system/sersync.service
[Unit]
Description=sersyncd service
After=network.target
 
[Service]
Type=forking           
ExecStart=/etc/rc.d/init.d/sersync start   
ExecReload=/etc/rc.d/init.d/sersync restart
ExecStop=/etc/rc.d/init.d/sersync stop     
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
chmod +x /usr/lib/systemd/system/sersync.service

重新加载 systemd 配置:
保存并关闭文件后,重新加载 systemd 配置以识别新服务:

sudo systemctl daemon-reload

启动服务:
使用以下命令启动 sersync 服务:

sudo systemctl start sersync.service

设置开机启动:
要使 sersync 在系统启动时自动运行,可以使用以下命令:

sudo systemctl enable sersync.service

检查服务状态:
检查 sersync 服务是否正在运行:

sudo systemctl status sersync.service

启动停止服务

systemctl start sersync
ps -ef|grep sersync|grep -v grep
systemctl stop sersync
6. 企业级高并发文件实时复制方案

除了本文讲解的数据实时复制方案外,其实,企业运维工作中还有很多的方案,例如:
1.inotify(sersync)+rsync复制方案是文件级别的复制,优点:简单、易用,缺点:速度不快。
2.drbd复制方案是文件系统级别复制,基于block块进行复制,优点:速度快,缺点:主节点工作时,备节点数据处于不可使用状态。
3.借用第三方软件的复制功能复制文件:例如:mysql复制(主从复制),oracle,mongodb自身的复制工具。
4.在业务上开发程序双写不同的服务器,即直接写两台服务器。
5.应用服务器写一台,在写日志(消息队列),利用异步方式复制。
对于复制延迟的问题,可以利用产品业务逻辑解决(例如:读写分离,备读不到读主)。

7. rsync多实例配置
  • 使用--config参数指定不同配置文件启动rsync实例。
rsync --config=/etc/rsyncd01.conf --daemon  #用于nfs实时复制
rsync --config=/etc/rsyncd02.conf --daemon  #用于定时备份
8. rsync配置建议
  • 推荐将www uid和rsync设置一致。
  • rsyncd.conf配置示例包括用户认证、路径设置等。
  • /etc/rsyncd.conf
#rsync_config_______________start
#created by oldboy
#site: http://www.oldboyedu.com
uid = rsync
gid = rsync
use chroot = no
fake  super  = yes
max connections = 200
timeout = 600 
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = true
hosts allow = 172.16.1.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = 所有服务器定时任务备份
path = /backup/

[data]
uid = www
gid = www
comment = 存储NFS实时复制数据
path = /data/

  • 27
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值