移动版网站开发,黄页网站怎么查,天津做网站的公司有哪家,室内设计心得体会500字Day43-2-企业级实时复制intofy介绍及实践 1. 企业级备份方案介绍1.1 利用定时方式#xff0c;实现周期备份重要数据信息。1.2 实时数据备份方案1.3 实时复制环境准备1.4 实时复制软件介绍1.5 实时复制inotify机制介绍1.6 项目部署实施1.6.1 部署环境准备1.6.2 检查Linux系统支… 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 生产脚本nfs011.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/databackupRsync备份服务器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服务端配置完成 确保远程数据传输服务部署完成
[rootnfs01 data]# rsync -avz /data rsync_backup172.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
[rootnfs01 data]# rsync -avz /data rsync_backup172.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.121.6.2 检查Linux系统支持inotify实时监控
[rootnfs01 data]# uname -r
3.10.0-1160.31.1.el7.x86_64
[rootnfs01 data]# ls -l /proc/sys/fs/inotify/
总用量 0
-rw-r--r-- 1 root root 0 7月 2 17:07 max_queued_events
-rw-r--r-- 1 root root 0 7月 2 17:07 max_user_instances
-rw-r--r-- 1 root root 0 7月 2 17:07 max_user_watches
[rootnfs01 data]# cat /proc/sys/fs/inotify/max_queued_events
16384
[rootnfs01 data]# cat /proc/sys/fs/inotify/max_user_instances
128
[rootnfs01 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工具比较简单执行的命令过程如下
[rootnfs01 ~]# yum install epel-release -y #需先安装epel默认官方没有。
[rootnfs01 ~]# yum install inotify-tools -y #下载inotify软件工具。
[rootnfs01 ~]# 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相应监控功能
[rootnfs01 ~]# 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服务器连接窗口进行测试验证相应事件
[rootnfs01 ~]# touch /data/a.txt
[rootnfs01 ~]# touch /data/b.txt说明只监控create创建事件其它事件并没有进行监控其它事件产生监控服务没有信息输出测试delete事件
# 在NFS服务器上开启inotify相应监控功能。
[rootnfs01 data]# inotifywait -mrq -e delete /data
/data/ DELETE 1.txt
/data/ DELETE 2.txt
/data/ DELETE 3.txt[rootnfs01 data]# inotifywait -mrq -e delete,close_write /data
/data/ CLOSE_WRITE,CLOSE oldboy.txt
/data/ CLOSE_WRITE,CLOSE oldboy.txt
/data/ DELETE oldboy.txt1.6.7 inotify-tools软件部署项目实战
在NFS服务器上开启inotify相应监控功能
[rootnfs01 ~]# inotifywait -mrq -e close_write,delete/data #监控/data目录增删改事件。# 编写实时监控和复制脚本
本例涉及while循环脚本语法示例
[rootnfs01 ~]# seq 3 test.txt #生成3个数字每行一个到test.txt文件里。
[rootnfs01 ~]# cat test.txt #查看结果。
1
2
3
[rootnfs01 ~]# cat w.sh #开发脚本。
cat ./test.txt|\ #按行读取test.txt文件将每一行赋值给下文的$line变量。
while read line #循环读取line变量的内容。
do
echo $line #打印line变量的内容。
done #读取完test.txt内容后才会终止循环。
[rootnfs01 ~]# sh -x w.sh #查看执行原理过程。read linecat ./test.txt #按行读取test.txt文件将第一行赋值给line。echo 1 #输出1。
1read line #按行读取test.txt文件将第二行赋值给line。echo 2 #输出2。
2read line #按行读取test.txt文件将第三行赋值给line。echo 3 #输出3。
3read 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_backup172.16.1.41::backup --password-file/etc/rsync.password
done
#sh -x 脚本名 #调试脚本nfs01上执行脚本
/bin/sh /server/scripts/monitoy1.sh
touch /data/{1..10}.txtbackup服务器上检查
ls /backupnfs01上执行
测试没有问题后在nfs01上让脚本在后台运行并放入/etc/rc.local里。
[rootnfs01 scripts]# /bin/sh /server/scripts/monitor.sh /dev/null #表示让脚本在后台运行。
[rootnfs01 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软件进行优化企业实战中调整为如下配置
[rootnfs01 scripts]# echo 50000000 /proc/sys/fs/inotify/max_user_watches #单进程可以监控的文件数量。
[rootnfs01 scripts]# echo 50000000 /proc/sys/fs/inotify/max_queued_events #队列容纳事件的数量。
# 说明以上配置重启可能会失效需要放置在rc.local文件中。
# 设置开机自动进行实时监控优化。[rootnfs01 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课后作业 1sersync实时复制工具 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)第二模块组idgid卸载模块下方都为第二模块建立的虚拟或普通用户 (4)secrets file密码路径后的密码文件不要和第一模块重名 (5)注意创建第二模块对应用户(并修改用户uid gid) (6)对应路径密码文件权限为600