Day43-2-企业级实时复制intofy介绍及实践

Day43-2-企业级实时复制intofy介绍及实践

  • 1. 企业级备份方案介绍
    • 1.1 利用定时方式,实现周期备份重要数据信息。
    • 1.2 实时数据备份方案
    • 1.3 实时复制环境准备
    • 1.4 实时复制软件介绍
    • 1.5 实时复制inotify机制介绍
    • 1.6 项目部署实施
      • 1.6.1 部署环境准备
      • 1.6.2 检查Linux系统支持inotify实时监控
      • 1.6.3 inotify-tools工具安装过程
      • 1.6.4 inotifywait命令参数
      • 1.6.5 监控事件说明
      • 1.6.6 测试事件
      • 1.6.7 inotify-tools软件部署项目实战
      • 1.6.8 生产脚本(nfs01)
      • 1.6.9 inotify-tools软件优化企业案例
  • 2. 排错思路:
    • 2.1 tree backup目录乱码问题
    • 2.2 检查脚本无误但是tree backup目录依然多出文件或目录
    • 2.3 推送文件报错(auth failed on module backup验证模块备份失败)
    • 2.4 执行脚本报错:
    • 2.5 能正常推送数据,但是报错
    • 2.6 双模块注意事项

集群架构-inotify-sersync-实时复制

1. 企业级备份方案介绍

1.1 利用定时方式,实现周期备份重要数据信息。

在这里插入图片描述

1.2 实时数据备份方案

在这里插入图片描述

1.3 实时复制环境准备

主机名称角色IP(eth1)目录信息
nfs01NFS服务器端172.16.1.31/data
backupRsync备份服务器172.16.1.41/backup

1.4 实时复制软件介绍

随着互联网技术的不断发展,数据复制软件服务也层出不穷,目前企业中较为常用的实时复制软件有如下两种列表显示:
实时复制软件对比

软件服务依赖程序部署难点说明
inotify-toolsrsync守护进程服务复制脚本编写监控目录数据变化,实时数据复制
sersync*rsync守护进程服务配置文件编写监控目录数据变化,实时数据复制

inotify-tools #原始的监控软件。sersync #封装了intotify,增加了一些功能。

实时复制细节实现说明

  • 实时复制软件会监控磁盘文件系统的变化,比如:指定一个/data目录,实时复制软件服务进程会实时监控这个/data目录中对应文件系统数据的变化。
  • 一旦/data目录文件发生变化,就会执行rsync命令,将变化的数据信息推送到备份服务器相应的备份目录中,从而完成数据的实时备份。

提示:根据实时复制原理描述,可发现rsync备份服务器是需要先行搭建的;搭建完成rsync备份服务器后,在进行实时复制软件服务的部署。

1.5 实时复制inotify机制介绍

Inotify是一种异步的系统事件监控机制,Linux内核从2.6.13起,加入了Imotify支持,通过notify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施这样监控的软件。实际上inotify-tools是一个监控指定目录数据实时变化的软件程序。

Inotify程序原理是一种事件驱动机制,它为应用程序监控文件系统事件提供了实时响应事件的机制,可以做到对事件处理的实时响应。

inotify的实现有几款软件:inotify-tools、sersync。

提示:sersync 软件在inotify基础上进行开发的,功能要更加强大些,支持配置文件配置,多了定时重试复制机制,过滤机制,提供接口做CDN数据更新,支持多线程操作。

  • inotify机制优点
    • 监控文件文件系统事件变化,通过复制工具实现实时数据复制。
    • 支持多线程实时复制。
  • inotify机制缺点
    • 实测并发如果大于200个文件(10-100k),复制会有延迟

1.6 项目部署实施

1.6.1 部署环境准备

确保rsync服务端配置完成
确保远程数据传输服务部署完成

[root@nfs01 data]# rsync -avz /data rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
data/
data/oldboy-2.ev4
data/潘晓婷.jpg
data/花瓶美女1.jfif
data/花瓶美女2.jfif
data/老男孩Linux77期视频/
data/老男孩Linux77期视频/02-老男孩77期-什么是集群?.ev4
sent 51,802,259 bytes received 135 bytes 20,720,957.60
bytes/sec
total size is 52,144,218 speedup is 1.01
[root@nfs01 data]# rsync -avz /data rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
sending incremental file list
sent 310 bytes received 26 bytes 672.00 bytes/sec
total size is 52,144,218 speedup is 155,191.12

1.6.2 检查Linux系统支持inotify实时监控

[root@nfs01 data]# uname -r
3.10.0-1160.31.1.el7.x86_64
[root@nfs01 data]# ls -l /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 72 17:07 max_queued_events
-rw-r--r-- 1 root root 0 72 17:07 max_user_instances
-rw-r--r-- 1 root root 0 72 17:07 max_user_watches
[root@nfs01 data]# cat /proc/sys/fs/inotify/max_queued_events
16384
[root@nfs01 data]# cat /proc/sys/fs/inotify/max_user_instances
128
[root@nfs01 data]# cat /proc/sys/fs/inotify/max_user_watches
8192
文件名称作用说明
max_user_watches设置inotify命令可以监视的文件数量(单进程)
max_user_instances设置每个用户可以运行的inotify命令的进程数
max_queued_events设置inotify实例事件(event)队列可容纳的事件数量

1.6.3 inotify-tools工具安装过程

安装inotify-tools工具比较简单,执行的命令过程如下:
[root@nfs01 ~]# yum install epel-release -y #<==需先安装epel,默认官方没有。
[root@nfs01 ~]# yum install inotify-tools -y #<==下载inotify软件工具。
[root@nfs01 ~]# rpm -ql inotify-tools|head -2
/usr/bin/inotifywait #<==inotifywait软件命令(重要)。
/usr/bin/inotifywatch #<==inotifywatch软件命令(重要)。# inotifywait:在被监控的目录等待特定文件系统事件(open、close、delete等)发生,执行后处于阻塞状态,适合在Shell脚本中使用,此命令是实现监控的重点。
# inotifywatch:收集被监控的文件系统使用的统计数据,指文件系统事件发生的次数统计。

1.6.4 inotifywait命令参数

命令参数参数说明
-m| --monitor始终保持事件监听状态(重要参数)
-d | --daemon类似于-m参数,只是将命令运行在后台记录触发的事件信息在指定文件中,利用–outfile参数定义程序日志使用–syslog参数
-r递归监控目录数据信息变化(重要参数)
-o | --outfile打印事件到文件中,相当于标准正确输出
-s | --syslog发送错误到syslog相当于标准错误输出
-q | --quiet输出信息少(只打印事件信息)
–exclude排除文件或目录时,不区分大小写
–timefmt指定时间输出的格式
–format打印使用指定的输出类似格式字符串;即实际监控输出的内容
-e指定监听指定的事件,如果省略,表示所有事件都进行监听。(重要参数)

1.6.5 监控事件说明

常用监控文件事件功能参数

事件名称事件说明
access文件或目录内容被读取
modify文件或目录内容被写入
attrib文件或目录属性改变
close_write文件或目录关闭,在写入模式打开之后关闭的。(重要参数)
close_nowrite文件或目录关闭,在只读模式打开之后关闭的
close文件或目录关闭,不管读或是写模式
open文件或目录被打开(重要)
moved_to文件或目录被移动到监控的目录中
moved_from文件或目录从监控的目录中被移动
move文件或目录不管移动到或是移动出监控目录都触发事件
create文件或目录创建在监控的目录中(重要参数)
delete文件或目录被删除在监控的目录中(重要参数)
delete_self文件或目录被删除
unmount文件系统包含的文件或目录不能卸

1.6.6 测试事件

测试create事件

# 在NFS服务器上开启inotify相应监控功能
[root@nfs01 ~]# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e create /data     #<==监控/data目录创建事件显示信息。
14/04/19 19:26 /data/a.txt #<==目录随着下面的操作,文件实时出现。
14/04/19 19:26 /data/b.txt#再开启一个NFS服务器连接窗口进行测试验证相应事件
[root@nfs01 ~]# touch /data/a.txt
[root@nfs01 ~]# touch /data/b.txt说明:只监控create创建事件,其它事件并没有进行监控,其它事件产生,监控服务没有信息输出

测试delete事件

# 在NFS服务器上开启inotify相应监控功能。
[root@nfs01 data]# inotifywait -mrq -e delete /data
/data/ DELETE 1.txt
/data/ DELETE 2.txt
/data/ DELETE 3.txt[root@nfs01 data]# inotifywait -mrq -e delete,close_write /data
/data/ CLOSE_WRITE,CLOSE oldboy.txt
/data/ CLOSE_WRITE,CLOSE oldboy.txt
/data/ DELETE oldboy.txt

1.6.7 inotify-tools软件部署项目实战

在NFS服务器上开启inotify相应监控功能

[root@nfs01 ~]# inotifywait -mrq -e close_write,delete/data #<==监控/data目录增删改事件。# 编写实时监控和复制脚本
本例涉及while循环脚本语法示例:
[root@nfs01 ~]# seq 3 >test.txt #<==生成3个数字,每行一个到test.txt文件里。
[root@nfs01 ~]# cat test.txt #<==查看结果。
1
2
3
[root@nfs01 ~]# cat w.sh #<==开发脚本。
cat ./test.txt|\ #<==按行读取test.txt文件,将每一行赋值给下文的$line变量。
while read line #<==循环读取line变量的内容。
do
echo $line #<==打印line变量的内容。
done #<==读取完test.txt内容后才会终止循环。
[root@nfs01 ~]# sh -x w.sh #<==查看执行原理过程。
+ read line
+ cat ./test.txt #<==按行读取test.txt文件,将第一行赋值给line。
+ echo 1 #<==输出1。
1
+ read line #<==按行读取test.txt文件,将第二行赋值给line。
+ echo 2 #<==输出2。
2
+ read line #<==按行读取test.txt文件,将第三行赋值给line。
+ echo 3 #<==输出3。
3
+ read line
# 有关Shell知识,读者可以学习《跟老男孩学习Linux运维:Shell编程实战一书

1.6.8 生产脚本(nfs01)

#!/bin/sh
cmd="/usr/bin/inotifywait"
$cmd -mrq -e close_write,delete /data|\
while read line
do
cd /data&&\
rsync -az --delete ./ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
done
#sh -x 脚本名 #<==调试脚本

nfs01上执行脚本

/bin/sh /server/scripts/monitoy1.sh &
touch /data/{1..10}.txt

backup服务器上检查

ls /backup

nfs01上执行:

测试没有问题后,在nfs01上让脚本在后台运行,并放入/etc/rc.local里。
[root@nfs01 scripts]# /bin/sh /server/scripts/monitor.sh &>/dev/null & #<==&表示让脚本在后台运行。
[root@nfs01 scripts]# tail -2 /etc/rc.local
#inotify sync data by oldboy at 201808
/bin/sh /server/scripts/monitor.sh &>/dev/null & #<==放到开机自启动文件里。
说明:让脚本在后台运行

1.6.9 inotify-tools软件优化企业案例

利用inotify对应的proc目录中的三个文件,可以适当对inotify软件进行优化,企业实战中调整为如下配置:
[root@nfs01 scripts]# echo "50000000" >/proc/sys/fs/inotify/max_user_watches #<==单进程可以监控的文件数量。
[root@nfs01 scripts]# echo "50000000" >/proc/sys/fs/inotify/max_queued_events #<==队列容纳事件的数量。
# 说明:以上配置重启可能会失效,需要放置在rc.local文件中。
# 设置开机自动进行实时监控优化。[root@nfs01 data]# tail -5 /etc/rc.local  #inotiy-tools 命令
/bin/sh /server/scripts/monitoy1.sh &
######inotify 优化
echo "50000000" >/proc/sys/fs/inotify/max_user_watches
echo "50000000" >/proc/sys/fs/inotify/max_queued_events

课后作业:
1)sersync实时复制工具
2)下图项目搞定。
在这里插入图片描述

2. 排错思路:

2.1 tree backup目录乱码问题

解决:
检查
/etc/hosts(主机名是否正确)
/etc/hostname(内网网址和对应主机名是否正确)

2.2 检查脚本无误但是tree backup目录依然多出文件或目录

解决:
(1)检查是否有每分钟执行脚本的定时任务crontab -l
(2)检查双方的/backup/目录是否有残留文件或目录,如果有用rm-rf *清空

2.3 推送文件报错(auth failed on module backup验证模块备份失败)

(1)密码是否正确
(2)认证用户rsync_backup是否正确
(3)模块名称和对应路径是否正确
(4)密码文件内容是否和backup服务器的/etc/rsync.password内的密码相符
(5)密码文件权限是否为600

2.4 执行脚本报错:

解决:
(1)脚本注释前没加"#"
(2)脚本变量前后不一致
(3)脚本内命令后有多余&&\或者if eles fi后缺少cd进目录&&
(4)命令格式是否多/少空格

2.5 能正常推送数据,但是报错

解决:
査看backup服务器上的rsync配置文件(/etc/rsyncd.conf)是否缺少fake super = yes选项
以及一些其它选项是否正确
黑白名单留一即可

2.6 双模块注意事项

(1)path指向路径目录必须有auth users属主和属组的权限
(2)第二模块认证用户必须写在模块下方
(3)第二模块组id,gid卸载模块下方都为第二模块建立的虚拟或普通用户
(4)secrets file密码路径后的密码文件不要和第一模块重名
(5)注意创建第二模块对应用户(并修改用户uid gid)
(6)对应路径密码文件权限为600

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中电金信:技术实践|Flink维度表关联方案解析

导语&#xff1a;Flink是一个对有界和无界数据流进行状态计算的分布式处理引擎和框架&#xff0c;主要用来处理流式数据。它既可以处理有界的批量数据集&#xff0c;也可以处理无界的实时流数据&#xff0c;为批处理和流处理提供了统一编程模型。 维度表可以看作是用户来分析数…

JavaScript进阶:js的一些学习笔记-this指向,call,apply,bind,防抖,节流

文章目录 1. this指向1. 箭头函数 this的指向 2. 改变this的指向1. call()2. apply()3. bind() 3. 防抖和节流1. 防抖2. 节流 1. this指向 1. 箭头函数 this的指向 箭头函数默认帮我们绑定外层this的值&#xff0c;所以在箭头函数中this的值和外层的this是一样的箭头函数中的…

Spring-1

目录 概念 优点 Autowired和Resource关键字 相同点 不同点 依赖注入的三种方式 概念 Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用&#xff0c;但是有些扩展是针对构建J2EE&#xff08;Java平台企业版&#xff09;平台的web应用。Spring 框架目…

java-ssm-jsp-基于java的客户管理系统的设计与实现

java-ssm-jsp-基于java的客户管理系统的设计与实现 获取源码——》公主号&#xff1a;计算机专业毕设大全

自习室预订系统|基于springboot框架+ Mysql+Java+B/S架构的自习室预订系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 学生功能模块 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参…

DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x800c000d

报出这个问题&#xff0c;应该是对给的url解析不正确&#xff0c;我给的是rtsp的视频流地址&#xff0c;应该是对该格式解析异常。 所以参考两篇文&#xff1a; QT无法播放视频&#xff1a;报错&#xff1a;DirectShowPlayerService::doRender: Unresolved error code 0x8004…

OCP NVME SSD规范解读-12.Telemetry日志要求

以NVME SSD为例&#xff0c;通常大家想到的是观察SMAR-log定位异常&#xff0c;但是这个信息在多数情况下无法只能支撑完整的定位链路。 定位能力的缺失和低效是数据中心问题解决最大的障碍。 为了解决这个问题&#xff0c;Meta的做法是推进OCP组织加入延迟记录页面。同时NVME协…

练习题手撕总结

基础篇 1.基础知识&#xff08;时间复杂度、空间复杂度等&#xff09; 2.线性表&#xff08;顺序表、单链表&#xff09; 3.双链表、循环链表 4.队列 5.栈 6.递归算法 7.树、二叉树&#xff08;递归、非递归遍历&#xff09; 8.二叉搜索树&#xff08;BST&#xff09; 9.二分查…

Android Studio实现内容丰富的安卓宠物医院管理系统

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号128 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.系统公告 3.宠物社区&#xff08;可发布宠物帖子&#xf…

Boyer Moore 算法介绍

1. Boyer Moore 算法介绍 Boyer Moore 算法&#xff1a;简称为 BM 算法&#xff0c;是由它的两位发明者 Robert S. Boyer 和 J Strother Moore 的名字来命名的。BM 算法是他们在 1977 年提出的高效字符串搜索算法。在实际应用中&#xff0c;比 KMP 算法要快 3~5 倍。 BM 算法思…

数据结构 之 队列(Queue)

​​​​​​​ &#x1f389;欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ &#x1f389;感谢各位读者在百忙之中抽出时间来垂阅我的文章&#xff0c;我会尽我所能向的大家分享我的知识和经验&#x1f4d6; &#x1f389;希望我们在一篇篇的文章中能够共同进步&#xff0…

JAVA爬虫系列

目录 准备工作 yml 1.入门程序&#xff08;获取到静态页面&#xff09; 2.HttpClient---Get 2.1 修改成连接池 3.HttpClient---Get带参数 3.1 修改成连接池 4.HttpClient---Post 4.1 修改成连接池 5.HttpClient---Post带参数 6.HttpClient-连接池 7.设置请求信息 …

蓝桥真题——-小蓝重组质数(全排列和质数判断)

小蓝有一个十进制正整数n&#xff0c;其不包含数码0&#xff0c;现在小蓝可以任意打乱数码的顺序&#xff0c;小蓝想知道通过打乱数码顺序,n 可以变成多少个不同的质数。 #include <iostream> #include<bits/stdc.h> using namespace std; bool isprime(int n) {if…

讯鹏Andon系统解决方案帮助工厂打造生产过程透明化

在现代制造业中&#xff0c;高效透明的生产管理模式对企业的发展至关重要。Andon系统作为一种解决方案&#xff0c;通过软硬件结合的方式&#xff0c;为企业打造了高效透明的生产管理模式&#xff0c;帮助企业实现生产过程的优化和管理的可视化。 Andon系统的软硬件结合为企业提…

swiftUI中的可变属性和封装

swiftUI的可变属性 关于swift中的属性&#xff0c;声明常量使用let &#xff0c; 声明变量使用var 如果需要在swiftUI中更改视图变化那么就需要在 var前面加上state 。 通过挂载到state列表 &#xff0c;从而让xcode找到对应的改变的值 例子&#xff1a; import SwiftUIstruc…

【兆易创新GD32H759I-EVAL开发板】图像处理加速器(IPA)的应用

GD32H7系列的IPA&#xff08;Image Pixel Accelerator&#xff09;是一个高效的图像处理硬件加速器&#xff0c;专门设计用于加速图像处理操作&#xff0c;如像素格式转换、图像旋转、缩放等。它的优势在于能够利用硬件加速来实现这些操作&#xff0c;相比于软件实现&#xff0…

BLE---Service interoperability requirements

0 Preface/Foreword references: Bluetooth core specification V5.4 definition&#xff1a;定义 declaration&#xff1a;声明 1 service definition&#xff08;服务定义&#xff09; 服务定义&#xff08;definition&#xff09;&#xff1a;必须包含服务声明(declara…

【JavaScript】JavaScript 运算符 ① ( 运算符分类 | 算术运算符 | 浮点数 的 算术运算 精度问题 )

文章目录 一、JavaScript 运算符1、运算符分类2、算术运算符3、浮点数 的 算术运算 精度问题 一、JavaScript 运算符 1、运算符分类 在 JavaScript 中 , 运算符 又称为 " 操作符 " , 可以实现 赋值 , 比较 > < , 算术运算 -*/ 等功能 , 运算符功能主要分为以下…

MATLAB中visdiff函数用法

目录 语法 说明 示例 比较两个文件 比较两个文件并指定类型 发布比较报告 visdiff函数的功能是比较两个文件或文件夹。 语法 visdiff(filename1,filename2) visdiff(filename1,filename2,type) comparison visdiff(___) 说明 visdiff(filename1,filename2) 打开比较工…

海格里斯HEGERLS托盘搬运机器人四向车引领三维空间集群设备柔性运维

随着市场的不断迅猛发展变化&#xff0c;在物流仓储中&#xff0c;无论是国内还是海外&#xff0c;都对托盘式解决方案需求量很大。顾名思义&#xff0c;托盘式解决方案简单理解就是将产品放置在托盘上进行存储、搬运和拣选。 面对托盘式方案需求&#xff0c;行业中常见的方案是…