rsync,nfs,sersync实现用户数据实时同步和配置定时同步

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

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

实时同步工具选择
sersync+RSYNC(√)、inotify+rsync
Inotify是一个通知接口,用来监控文件系统的各种变化,如果文件存取,删除,移动。可以非常方便地实现文件异动告警,增量备份,并针对目录或文件的变化及时作出响应。rsync+inotify可以实触发式实时同步增量备份
sersync是国人基于rsync+inotify-tools开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源。项目地址:https://github.com/wsgzao/sersync

方案一.web和NFS的重要数据 /etc/hosts /etc/passwd 都备份到备份服务器的/backup. (用到rsync技术)
********************各服务器配置/etc/备份********************
           rsync定时备份
web----------------------------->backup
           rsync定时备份
nfs----------------------------->backup
backup安装rsync
**********************************************************
1.1)备份服务器41部署Rsync服务
[root@backup ~]# yum -y install rsync

1.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]
comment= 用于备份web等服务器配置文件
path = /backup

[data]
comment= 用于备份web上传到nfs的视频等资料
path = /data 

1.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

1.4)启动Rsync服务
systemctl start rsyncd
systemctl enable rsyncd

1.5)客户端使用脚本
#在WEB01和NFS上部署客户端脚本
[root@nfs ~]# mkdir -p /server/scripts 
[root@nfs ~]# vim /server/scripts/backup.sh
#1.定义变量
HOST=`hostname`
IP=`ifconfig eth0|awk 'NR==2{print $2}'`
TIME=`date +%F`
DIR=/backup/${IP}
FILENAME=${HOST}_${IP}_$TIME

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

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

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

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

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

1.6)WEB01和NFS 定时任务进行推送
~]# crontab -e
00 01 * * * sh /server/scripts/backup.sh

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

方案二: 实现web上传视频文件,实则是写入NFS存储,当NFS存在新的数据则会实时的复制到备份服务器
********************web数据备份********************
     nfs上传        sersync+rsync实时同步
web1---------->nfs------------------->backup
nfs上配置nfs,sersync
backup上配置rsync
*************************************************
web1      172.16.1.7
nfs     172.16.1.31
backup     172.16.1.41

2.1 web上传视频至NFS存储(NFS技术)

2.1.1)部署NFS服务
nfs机器安装rpcbind和nfs
[root@nfs ~]# yum -y install rpcbind nfs-utils
web1机器安装nfs
[root@web01 ~]# yum -y install nfs-utils

2.1.2)配置NFS服务
[root@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 -R www.www /data

要先启动rpcbind
[root@nfs ~]# systemctl start rpcbind
[root@nfs ~]# systemctl enable rpcbind

[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 ~]# 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.1.3)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 /upload
[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% /upload
[root@web01 ~]# touch /upload/1.txt
[root@web01 ~]# ll /upload/
total 0
-rw-r--r-- 1 666 666 0 Jun 10 09:27 1.txt

2.2 将NFS /data 视频 数据实时同步到备份服务器的/data目录(sersync服务)
2.2.1).部署sersync服务
#下载sersync
[root@nfs tools]# wget  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 ~]# mkdir /server/tools -p
[root@nfs tools]# mv GNU-Linux-x86 /server/tools/sersync
注意: 在运行监控前 一定要先从命令行可以推送成功
rsync -avz /etc/hosts rsync_backup@172.16.1.41::data --password-file=/etc/rsync.passwd

2.2.2).配置sersync服务
需要修改的配置为 
<localpath>指定本地要推送到备份服务器上的目录和备份服务器的ip和备份目录 
<rsync>指定备份所用的用户名和密码文件
      <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"/>

在nfs31上创建rsync_backup验证密码文件
[root@nfs tools]#echo 123456 > /etc/rsync.passwd
[root@nfs tools]#chmod 600 /etc/rsync.passwd

2.2.3).启动sersync服务
[root@nfs sersync] ln -s /server/tools/sersync/sersync2 /bin/
[root@nfs sersync]# sersync2 -dro /server/tools/sersync/confxml.xml 
注意事项: 启动一次进程即可 不要重复启动 如果配置不正确 需要先杀死进程在重新启动
[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]# kill -9 17828 17885
2.2.4).验证是否成功
[root@nfs sersync]#touch /data/1.txt
[root@backup ~]#ll /data/
-rw-r--r-- 1 rsync www 0 Jun 10 11:25 1.txt

2.2.4)如果nfs服务器挂掉,由于nfs的数据已经实时备份到backup服务器上,所以需要在backup服务器上安装nfs,并启动nfs,web卸载31nfs地址,重新挂载41nfs地址
2.2.4.1) 41部署安装NFS服务:
[root@backup ~]# yum -y install rpc-bind 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 修改
uid = www
gid = www
[root@backup ~]# chown -R www.www /backup/
[root@backup ~]# chown -R www.www /data

启动NFS服务:
[root@backup ~]# systemctl start nfs
[root@backup ~]# systemctl enable nfs

2.2.4.2) 客户端测试: 模拟nfs31挂了, web卸载31挂载点,然后挂载到41挂载点
[root@web01 ~]# umount -f /upload
[root@web01 ~]# ll /upload/
[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 /upload
[root@web01 ~]# ll /upload/
[root@web01 upload]# 
-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
 

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值