目录
1. 监控目录数据变化 --- inotify 2. 将数据进行传输 --- rsync 3.将监控和传输进行整合 --- sersync
1. 部署rsync守护进程 2. 部署inotify软件 3. 部署sersync软件
一、实时同步服务介绍
1)为什么要使用实时同步服务?
a 因为定时任务有缺陷,一分钟以内的数据无法进行同步,容易造成数据丢失;
b 用户上传数据信息需要实时备份保存到备份服务器防止数据丢失。
c 实时监控变化,当出现增 删 改 时,触发一个动作事件,就会推送数据到远程备份服务器。
2)实时同步服务工作原理
类型 | IP地址 | 安装服务 | 服务介绍 | |
服务端 | backup | 172.16.1.41 | rsync守护进程 | rsync实现远程数据传输 |
客户端 | nfs01 | 172.16.1.31 | rsync守护进程 inotify服务 sersync服务 | rsync实现远程数据传输 inotify实现目录中数据变化监控 sersync实现实时同步 |
二、实时同步服务部署
1)部署rsync守护进程
01.服务端--backup备份服务器
第一步:下载安装软件
[root@backup ~]# rpm -qa|grep rsync
[root@backup ~]# yum install -y rsync
第二步:编写配置文件
[root@backup ~]# man rsyncd.conf
[root@backup ~]# vim /etc/rsyncd.conf
##created by YB at 2020
###rsyncd.conf start##
uid = rsync --- 指定管理备份目录的用户
gid = rsync --- 指定管理备份目录的用户组
port = 873 --- 定义rsync备份服务的网络端口号
fake super = yes --- 将rsync虚拟用户伪装成为一个超级管理员用户
use chroot = no --- 和安全相关的配置
max connections = 200 --- 最大连接数 同时只能有200个客户端连接到备份服务器
timeout = 300 --- 超时时间(单位秒)
pid file = /var/run/rsyncd.pid --- 记录进程号码信息 1.让程序快速停止进程 2. 判断一个服务是否正在运行
lock file = /var/run/rsync.lock --- 锁文件
log file = /var/log/rsyncd.log --- rsync服务的日志文件 用于排错分析问题
ignore errors --- 忽略传输中的简单错误
read only = false --- 指定备份目录是可读可写
list = false --- 使客户端可以查看服务端的模块信息
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 = "backup dir by oldboy"
path = /backup --- 模块中配置参数 指定备份目录
第三步:创建rsync的虚拟用户
[root@backup ~]# useradd rsync -M -s /sbin/nologin
第四步:创建备份服务认证密码文件
[root@backup ~]# echo "rsync_backup:123456" >/etc/rsync.password
[root@backup ~]# chmod 600 /etc/rsync.password
第五步:创建备份目录并修改属主属组信息
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup/
第六步:启动备份服务
[root@backup ~]# systemctl start rsyncd
[root@backup ~]# systemctl enable rsyncd
[root@backup ~]# systemctl status rsyncd
02.客户端--nfs存储服务器
第一步:创建认证密码文件
[root@nfs01 ~]# echo "123456" >/etc/rsync.password
[root@nfs01 ~]# chmod 600 /etc/rsync.password
第二步:进行面交互数据传输测试
[root@nfs01 ~]# rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
2)部署inotify监控服务 --nfs01客户端
第一步:安装软件
[root@nfs01 ~]# yum install -y inotify-tools
第二步:熟悉命令使用
/usr/bin/inotifywait --- 监控目录数据信息变化
/usr/bin/inotifywatch --- 对监控的变化信息进行统计
inotifywait命令使用方法:
inotifywait [参数] 监控的目录
-m | monitor | 实现一直监控目录的数据变化 |
-r | recursive | 进行递归监控 |
-q | quiet | 尽量减少信息的输出 |
--format <fmt> | 指定输出信息的格式 | |
--timefmt | 指定输出的时间信息格式 | |
-e | event | 指定监控的事件信息 |
inotify监控命令格式:
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
3)部署sersync同步服务--nfs01客户端
第一步:下载sersync软件上传到nfs客户端
地址:https://github.com/wsgzao/sersync
上传linux服务器
[root@nfs01 ~]# rz -y --- 选择需要上传的数据信息
PS:软件尽量都统一保存在/server/tools目录中
第二步:解压软件压缩包,将解压的数据进行保存
[root@nfs01 tools]# unzip sersync_installdir_64bit.zip
[root@nfs01 tools]# tree sersync_installdir_64bit
sersync_installdir_64bit
└── sersync
├── bin --- sersync软件命令目录
│?? └── sersync
├── conf --- sersync软件配置目录
│?? └── confxml.xml
└── logs --- sersync软件日志目录
[root@nfs01 tools]# mv sersync_installdir_64bit/sersync/ /usr/local/
第三步:编写配置文件
[root@nfs01 /usr/local/sersync]# vim conf/confxml.xml
24 <localpath watch="/data">
25 <remote ip="172.16.1.41" name="backup"/>
30 <commonParams params="-az"/>
31 <auth start="true" users="rsync_backup"passwordfile="/etc/rsync.password"/>
32 <userDefinedPort start="true" port="874"/><!-- port=874 -->
参数-d: 启用守护进程模式
参数-r: 在监控前,将监控目录与远程主机用rsync命令推送一遍进行同步测试
参数-o: 指定配置文件,默认使用confxml.xml文件
-o /usr/local/sersync/conf/confxml.xml
-o /usr/local/sersync/conf/confxml02.xml
第四步:启动sersync服务
[root@nfs01 bin]# export PATH="$PATH:/usr/local/sersync/bin"
[root@nfs01 bin]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sersync/bin
[root@nfs01 ~]# sersync -dro /usr/local/sersync/conf/confxml.xml 启动实时同步服务
[root@nfs01 ~]# yum install -y psmisc
[root@nfs01 ~]# killall sersync 停止实时同步服务
/etc/rc.local <-- sersync -dro /usr/local/sersync/conf/confxml.xml 开机自动启动
第五步:实现开机自启
[root@nfs01 ~]# vim /etc/profile
export PATH='/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sersync/bin'
[root@nfs01 ~]# vim /etc/rc.local
/usr/local/sersync/bin/sersync -dro /usr/local/sersync/conf/confxml.xml
[root@nfs01 ~]# chmod a+x /etc/rc.d/rc.local
三、实时同步服务总结
1) 实现实时同步的原理
1. 监控目录数据变化 --- inotify
2. 将数据进行传输 --- rsync
3.将监控和传输进行整合 --- sersync
2) 实现实时同步部署方法
1. 部署rsync守护进程
2. 部署inotify软件
3. 部署sersync软件