4. Real-time synchronization


01. Introduction to course concepts
01. Why use real-time synchronization service
Because of the defects of scheduled tasks, data within one minute cannot be synchronized, which may easily cause data loss

02. How real-time synchronization works
a Create a directory to store data
b Use real-time synchronization The software monitors the data directory we are backing up c Use the rsync service for
data push transmission backup : Is there an epel source wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo [root@nfs01 ~ ]# rpm -ql inotify-tools /usr/bin/inotifywait <--- Realize change monitoring of data directory information (command to understand) /usr/bin/inotifywatch <--- Monitor data information changes, and monitor changes in data make statistics












[root@nfs01 ~]# cd /proc/sys/fs/inotify/
[root@nfs01 inotify]# ll
total usage 0
-rw-r--r-- 1 root root 0 2018-02-25 19:45 max_queued_events
-rw-r--r-- 1 root root 0 2018-02-25 19:45 max_user_instances
-rw-r--r-- 1 root root 0 2018-02-25 19:45 max_user_watches
max_user_watches: set inotifywait or inotifywatch The number of files that the command can monitor (single process)
can only monitor 8192 files by default

max_user_instances: Set the number of processes that each user can run the inotifywait or inotifywatch command.
By default, each user can start 128 processes of the inotify service

max_queued_events: Set the number of events that the inotify instance event queue can hold. The default
monitoring event queue length is 16384

Two miles: Deploy the rsync daemon mode and deploy the
rsync server
a Check whether the rsync software has been installed
b Write the main configuration file of the rsync software
c Create a backup directory to manage users
d Create a backup directory and authorize
e Create an authentication file and write an authentication User and password information, set the file permission to 600
f Start the rsync daemon service

rsync client deployment
a Check whether the rsync software has been installed
b Create an authentication file, write the authentication user password information, set the file permission to 600
c Use the client to perform Data synchronization test


The third mileage: To let the inotify software and the rsync software service establish a connection (shell script)
rsync software application command:
rsync -avz /etc/hosts [email protected]::backup --password-file=/etc /rsync.password

inotify software application command:
inotifywait
-m|--monitor 始终保持事件监听状态
-r 进行递归监控
-q|--quiet 将无用的输出信息,不进行显示
--timefmt <fmt> 设定日期的格式
man strftime 获取更多时间参数信息
--format <fmt> 命令执行过程中,输出的信息格式

-e 指定监控的事件信息
man inotifywait 查看所有参数说明和所有可以监控的事件信息

总结主要用到的事件信息:
create创建、delete删除、moved_to移入、close_write修改

inotifywait -mrq --timefmt "%F" --format "%T %w%f 事件信息:%e" /data <-- 相对完整的命令应用
inotifywait -mrq --timefmt "%F" --format "%T %w%f 事件信息:%e" -e create /data <-- 指定监控什么事件信息

inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /data
以上为实现实时同步过程,所需要的重要监控命令

编写脚本:实现inotify与rsync软件结合
#!/bin/bash
####################
inotifywait -mrq --format "%w%f" -e create,delete,moved_to,close_write /data|\
while read line
do
rsync -az --delete /data/ [email protected]::backup --password-file=/etc/rsync.password
done

shell循环语法总结:
for循环 for xx in 循环条件内容信息;do xxx;done
while循环 while 循环条件;do xx ;done <-- 只要条件满足,就一直循环
while true;do xx ;done <-- 死循环

运维工作中编写自动化脚本规范:
1. 先完成基本功能需求
2. 优化完善脚本内容
3. 写上一些注释说明信息
4. 进行反复测试

第四个里程:最终的测试
sh -x intofy.sh

b sersync+rsync实现实时同步备份
第一个里程:下载安装sersync软件
先进行软件下载,把软件包上传到系统中
unzip sersync_installdir_64bit.zip
cd sersync_installdir_64bit
mv sersync /usr/local/
tree

第二个里程:编写sersync配置文件
[root@nfs01 sersync]# cd /usr/local/sersync/conf/
[root@nfs01 conf]# ll
总用量 4
-rw-r--r-- 1 root root 2214 2011-10-26 11:54 confxml.xml

6 <filter start="false">
7 <exclude expression="(.*)\.svn"></exclude>
8 <exclude expression="(.*)\.gz"></exclude>
9 <exclude expression="^info/*"></exclude>
10 <exclude expression="^static/*"></exclude>
11 </filter>
说明:实现同步数据过滤排除功能

12 <inotify>
13 <delete start="true"/>
14 <createFolder start="true"/>
15 <createFile start="false"/>
16 <closeWrite start="true"/>
17 <moveFrom start="true"/>
18 <moveTo start="true"/>
19 <attrib start="false"/>
20 <modify start="false"/>
21 </inotify>
说明:类似于inotify的-e参数功能,指定监控的事件信息

23 <sersync>
24 <localpath watch="/data">
25 <remote ip="172.16.1.41" name="backup"/>
26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28 </localpath>
29 <rsync>
30 <commonParams params="-az"/>
31 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
32 <userDefinedPort start="false" port="874"/><!-- port=874 -->
33 <timeout start="false" time="100"/><!-- timeout=100 -->
34 <ssh start="false"/>
35 </rsync>
说明:以上内容是数据相关的配置信息,是必须进行修改调整配置

第三个里程:应用sersync软件,实现实时同步
[root@nfs01 conf]# cd /usr/local/sersync/
[root@nfs01 sersync]# cd bin/
[root@nfs01 bin]# ll
总用量 1768
-rw-r--r-- 1 root root 1810128 2011-10-26 14:19 sersync
sersync命令参数:
参数-d: 启用守护进程模式
参数-r: 在监控前,将监控目录与远程主机用rsync命令推送一遍(测试)
参数-n: 指定开启守护线程的数量,默认为10个
参数-o: 指定配置文件,默认使用confxml.xml文件

./sersync -dro /usr/local/sersync/conf/confxml.xml


03. 实时同步软件概念介绍
inotify软件
Inotify是一种强大的,细粒度的。异步的文件系统事件监控机制,linux内核从2.6.13起,
加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种事件,
利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,
而inotify-tools正是实施这样监控的软件
软件参考链接:https://github.com/rvoicilas/inotify-tools/wiki

sersync软件
Sersync项目利用inotify与rsync技术实现对服务器数据实时同步的解决方案,
其中inotify用于监控sersync所在服务器上文件系统的事件变化,
rsync是目前广泛使用的本地及异地数据同步工具,
其优点是只对变化的目录数据操作,甚至是一个文件不同的部分进行同步,
所以其优势大大超过使用挂接文件系统或scp等方式进行镜像同步。
软件参考链接:https://github.com/wsgzao/sersync

下一个章节:ssh远程连接服务+ansible批量管理服务

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324797737&siteId=291194637