Sersync 实时同步

Sersync 实时同步

实时同步概述

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

为什么要实时同步
保证数据的连续性, 减少人力维护成本,解决nfs单点故障

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

Inotify是一个通知接口,用来监控文件系统的各种变化,如果文件存取,删除,移动。可以非常方便地实现文件异动告警,增量备份,并针对目录或文件的变化及时作出响应。rsync+inotify可以实触发式实时同步增量备份

sersync是国人基于rsync+inotify-tools开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。项目地址:https://github.com/wsgzao/sersync

如何配置sersync

web1  172.16.1.7
backup 172.16.41 (已完成rsync守护进程模式

1)sersync需要依赖inotify和rsync,所以需要安装对应软件

[root@web1 ~]# yum install rsync -y
[root@web1 ~]# yum install rsync inotify -y

2)下载解压安装包

[root@web1 ~]# tar -xf sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@web1 ~]# mv GNU-Linux-x86 /server/tools/sersync

3)修改配置文件

[root@web1 ~]# vim /server/tools/sersync/confxml.xml

在这里插入图片描述
4)启动sersync服务

[root@web1 sersync]#./sersync2 -dro confxml.xml 

5)查看是否启动成功

[root@web1 sersync]#ps aux|grep sersync
root       2589  0.0  0.0 100520   716 ?        Ssl  17:25   0:00 ./sersync2 -dro confxml.xml
root       3427  0.0  0.0 112808   964 pts/2    R+   18:21   0:00 grep --color=auto sersync

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

一. web上传视频至NFS存储
1)部署NFS服务 10.0.0.31
服务端和客户端安装NFS软件

[root@nfs ~]# yum -y install nfs-utils
[root@web01 ~]# yum -y install nfs-utils

配置NFS服务

vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

创建必要信息:

[root@nfs ~]# groupadd -g666 www
[root@nfs ~]# useradd -u666 -g666 -M -s /sbin/nologin www
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown www.www /data

[root@nfs ~]# systemctl start nfs
[root@nfs ~]# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@nfs ~]# 
[root@nfs ~]# cat /var/lib/nfs/etab 
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)

2)WEB挂载NFS共享目录 10.0.0.7

[root@web01 ~]# showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24
[root@web01 ~]# mount -t nfs 172.16.1.31:/data /mnt
[root@web01 ~]# df -h
Filesystem         Size  Used Avail Use% Mounted on
/dev/sda2           20G  1.7G   19G   9% /
devtmpfs           514M     0  514M   0% /dev
tmpfs              525M     0  525M   0% /dev/shm
tmpfs              525M  8.1M  517M   2% /run
tmpfs              525M     0  525M   0% /sys/fs/cgroup
/dev/sda1          197M  102M   95M  52% /boot
tmpfs              105M     0  105M   0% /run/user/0
172.16.1.31:/data   20G  1.7G   19G   9% /mnt
[root@web01 ~]# touch /mnt/1.txt
[root@web01 ~]# ll /mnt/
total 0
-rw-r--r-- 1 666 666 0 Jun 10 09:27 1.txt

二.web和NFS的重要数据 /etc/hosts /etc/passwd 都备份到备份服务器的/backup
1)41部署Rsync服务

  [root@backup ~]# yum -y install rsync

2)配置Rsync服务

[root@backup ~]# cat /etc/rsyncd.conf 
uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd

[backup]
path = /backup

[data]
path = /data 

3)根据配置创建必要信息
创建虚拟用户rsync

useradd -s /sbin/nologin -M rsync
echo rsync_backup:123456 > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd

创建目录

mkdir /backup /data
chown rsync.rsync /backup 
chown rsync.rsync /data

4)启动Rsync服务

systemctl start rsyncd
systemctl enable rsyncd

5)客户端使用脚本+定时任务进行推送
在WEB01和NFS上部署客户端脚本

[root@nfs ~]# mkdir -p /server/scripts 
[root@nfs ~]# vim /server/scripts/backup.sh
[root@nfs ~]# cat /server/scripts/backup.sh
#定义变量
HOST=`hostname`
IP=`ifconfig eth0|awk 'NR==2{print $2}'`
TIME=`date +%F`
DIR=/backup/${HOST}_${IP}_$TIME

#客户端创建以主机名称+IP地址+时间命名
mkdir -p  $DIR

#2.客户端在本地打包备份放入上面创建好的目录下
cd /etc/
tar zcf $DIR/etc.tar.gz hosts passwd

#3.对打包后的文件做MD5校验值 存入md5.txt文件中
md5sum $DIR/etc.tar.gz > $DIR/md5.txt

#3.客户端最后将备份的数据进行推送至备份服务器
export RSYNC_PASSWORD=123456
rsync -avz $DIR  rsync_backup@172.16.1.41::backup


#4.查找7天前的文件并且删除
find /backup/ -mtime +7|xargs rm &>/dev/null

6)写入定时任务

[root@nfs ~]# crontab -e
00 01 * * * sh /server/scripts/backup.sh

注意: 备份最少三份 备份服务器 企业内部服务器 笔记本 移动硬盘或者网盘

三.如何将NFS/data 视频 数据实时同步到备份服务器的/data目录

NFS: 安装inotify

[root@nfs ~]# yum install rsync inotify -y
[root@nfs ~]# mkdir /server/tools -p
[root@nfs scripts]# cd /server/tools/

1.部署sersync服务

[root@nfs tools]# wget wget #下载sersync软件https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz

解压软件:

[root@nfs tools]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz

修改名称:

[root@nfs tools]# mv GNU-Linux-x86 sersync
[root@nfs tools]# ll
total 0
drwxr-xr-x 2 root root 41 Oct 26  2011 sersync

注意: 在运行监控前 一定要先从命令行可以推送成功
rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.passwd

2.配置sersync服务

  .....
      <inotify>
	<delete start="true"/>
	<createFolder start="true"/>
	<createFile start="true"/>
	<closeWrite start="true"/>
	<moveFrom start="true"/>
	<moveTo start="true"/>
	<attrib start="false"/>
	<modify start="false"/>
	......
	    <sersync>
	<localpath watch="/data/">
	    <remote ip="172.16.1.41" name="data"/>
	    <!--<remote ip="192.168.8.39" name="tongbu"/>-->
	    <!--<remote ip="192.168.8.40" name="tongbu"/>-->
	</localpath>
	<rsync>
	    <commonParams params="-avz"/>
	    <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.passwd"/>
	    <userDefinedPort start="false" port="874"/><!-- port=874 -->
	    <timeout start="false" time="100"/><!-- timeout=100 -->
	    <ssh start="false"/>
	..........

在31上创建rsync_backup验证密码文件

[root@nfs tools]#echo 123456 > /etc/rsync.passwd
[root@nfs tools]#chmod 600 /etc/rsync.passwd

3.启动sersync服务

[root@nfs sersync]# #./sersync2 -dro ./confxml.xml 
[root@nfs sersync]# cd

注意事项: 启动一次进程即可 不要重复启动 如果配置不正确 需要先杀死进程在重新启动

[root@nfs sersync]# ps axu|grep sersync
root      17828  0.0  0.0 108716   728 ?        Ssl  11:06   0:00 /server/tools/sersync/sersync2 -dro /server/tools/sersync/confxml.xml
root      17885  0.0  0.0  92324   716 ?        Ssl  11:23   0:00 /server/tools/sersync/sersync2 -dro /server/tools/sersync/confxml.xml
root      17901  0.0  0.0 112704   956 pts/1    R+   11:23   0:00 grep --color=auto sersync
[root@nfs sersync]# 
[root@nfs sersync]# kill -9 17828 17885

4.验证是否成功

[root@nfs sersync]#touch /data/1.txt
[root@backup ~]#ll /data/
total 0
-rw-r--r-- 1 rsync www 0 Jun 10 11:25 1.txt

4.如果31服务器挂掉 则 卸载重新挂载到41服务器
41部署安装NFS服务:

[root@backup ~]# yum -y install nfs-utils

配置NFS服务:

[root@backup ~]# vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

[root@backup ~]# groupadd -g 666 www
[root@backup ~]# useradd -u666 -g666 -s /sbin/nologin -M www

统一用户 都用www用户
配置文件: rsyncd.conf 修改

[root@backup ~]# head -2 /etc/rsyncd.conf 
uid = www
gid = www

[root@backup ~]# chown www.www /backup/
[root@backup ~]# chown www.www /data

启动NFS服务:

[root@backup ~]# systemctl start nfs
[root@backup ~]# systemctl enable nfs

客户端测试: 假如31挂了 卸载 然后挂载到41服务器上

[root@web01 ~]# umount -f /mnt
[root@web01 ~]# ll /mnt/
total 0
[root@web01 ~]# showmount -e 172.16.1.41
Export list for 172.16.1.41:
/data 172.16.1.0/24
[root@web01 ~]# mount -t nfs 172.16.1.41:/data /mnt
[root@web01 ~]# cd /mnt/
[root@web01 mnt]# ll
total 24
-rw-r--r-- 1 1000 1000     0 Jun 10 10:58 1.txt
-rw-r--r-- 1 1000 1000     0 Jun 10 11:07 2.txt
-rw-r--r-- 1  666  666     0 Jun 10 11:34 test.txt
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值