关于远程监控的那些实验 ftp ---- rsync及其自动化

rsync概述

什么是rsync

rsync一款快速增量备份工具Remote Sync,远程同步支持本地复制,或者与其他SSH、
rsync主机同步官网:http://rsync.samba.org

rsync应用场景

1、内容的一致性 1000节点 如tomcat (HTML,css,js)
2、网站内容更新 scp要1000次 这是太复杂了 用shell脚本自动执行首先你的地址要有 但是你的地址要是不连续的呢 这就是比较笨重了
3、解决问题:你仅仅需要更新一个节点其他的所有节点内容与你同步 这就是有了rsync 作用:拉去的同步 监控可以实现它的自动同步

配置rsync源服务器

rsync同步源又称备份源指的是备份超作远程服务器
如下图:客户机要拉取同步源的内容这个就需要rsync了 中间需要网络 一般情况下网络易出问题;
在这里插入图片描述

基本思路:

建立rsyncd.conf配置文件、独立的账号文件-------(为了安全起见必须有独立账号)
启用rsync的–daemon模式-----------------------------(–daemon模式又叫守护进程(没人访问端口还是一直开着))

应用实例

用户backer,允许下行同步
操作的目录为:/var/www/html/

配置文件rsyncd.conf:

需手动建立,语法类似于Samba配置
认证配置auth users、secrets file,不加则为匿名

rsync账号文件

采用“用户名:密码”的记录格式,每行一个用户记录 —(如果要是多个用户记录就是多行)
独立的账号数据,不依赖于系统账号

启用rsync服务

通过–daemon独自提供服务
执行kill $(cat /var/run/rsyncd.pid) 关闭rsync服务

使用rsync备份工具

基本格式

rsync [选项] 原始位置 目标位置

常用选项(前三个最常用)

  1. -a:归档模式,递归并保留对象属性,等同于 -rlptgoD
  2. -v:显示同步过程的详细(verbose)信息
  3. -z:在传输文件时进行压缩(compress)
  4. -H:保留硬链接文件
  5. -A:保留ACL属性信息
  6. –delete:删除目标位置有而原始位置没有的文件(这个用的时候要小心点比较)
  7. –checksum:根据对象的校验来决定是否跳过文件

配置源两种表示方法(源很重要的)

格式1:用户名@主机地址::共享模块名 (注意是双冒号)
格式2:rsync://用户名@主机地址/共享模块名
例如:
格式一:rsync -avz backuper@20.0.0.8::wwwroot /opt
格式二:rsync -avz rsync://backuper@20.0.0.8/wwwroot /opt

rsync同步操作示例

下行rsync源:wwwroot共享->/myweb

解析:就是说你从源站点(服务端A)去同步到目标站点(客户机)中去 如果你加–delete那么就会将你A端没有的B端有的东西给删除掉 总之帮别人清理东西

面交互

就是不需要手动敲密码直接连接到想到的设备或软件。### rsync源的免交互处理

用法: --passwd-file=密码文件
注意的是要对文件进行授权600(只有文件的主人能看其他人都看不了)
然后可以做个计划任务多长时间同步一次 记得重启cront 和让它开机自启

rsync实验

实验环境

源点服务器(A):20.0.0.8
目标点服务器(B):20.0.0.69
Xshell6
关闭防火墙组件(两台服务器都要做)

systemctl stop firewalld
iptables -F
setemforce 0
补充知识可用进行:搭建ftp实验

1、两台服务器都安装ftp

yum -y install vsftpd
yum -y install ftp*
systemctl start vsftpd
netstat -natp |grep vsftp
[root@localhost ~]# netstat -natp |grep vsftpd			##ftp有两个端口的20是数据传输 21是连接
tcp6       0      0 :::21                   :::*                    LISTEN      7097/vsftpd   

2、在A服务器上去远程B服务器

yum -y install ftp*
[root@localhost ~]# yum -y install ftp*			##下面是ftp的依赖包
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.ustc.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.ustc.edu.cn
Resolving Dependencies
[root@localhost ~]# ftp 20.0.0.69	##远程B服务器
Connected to 20.0.0.69 (20.0.0.69).
220 (vsFTPd 3.0.2)
Name (20.0.0.69:root): ftp		##输入一个用户
331 Please specify the password.
Password:				##输入密码
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls					##查看都有什么

ftp> ls		##你会发现你只能在B的/var/ftp/这个站点上不能去/或者/etc
227 Entering Passive Mode (20,0,0,69,203,241).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Oct 23 07:00 abc
drwxr-xr-x    2 0        0               6 Aug 03  2017 pub
ftp> cd /	##看上去在跟其实还是在站点ftp上
250 Directory successfully changed.
quit		##退出
但是当你用另为一个用户登录如lai	在B的/home/中有的账户
ftp> cd /etc
250 Directory successfully changed.
ftp> ls				##发现可以任意切换说明安全
227 Entering Passive Mode (20,0,0,69,131,188).
150 Here comes the directory listing.
-rw-r--r--    1 0        0            5090 Nov 04  2016 DI
接下来就是做的rsync的实验

在A服务上部署
1、编辑rsync配置文件

[root@localhost ~]# rpm -q rsync		##查软件包有没有装
rsync-3.0.9-18.el7.x86_64			##已装好(两台都要装、若没有装直接yum -y install rsync装就行)
vim /etc/rsyncd.conf
添加或修改成如下内容:
uid = nobody			   ##管理的程序型用户
gid = nobody			   ##开启组
use chroot = yes	           ##开启禁锢家目录功能
address = 20.0.0.8
port 873			   ##端口号与表的不能冲突
hosts allow = 20.0.0.0/24
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

添加同步模块:
[wwwroot]           			## 模块名
path = /var/www/html          		## 同步源目录
comment = www.zhongguo.com        		## 描述
read only = yes       			## 源站只读
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2     ## 不进行压缩的文件格式
auth users = backuper          		## 用户定义
secrets file = /etc/rsyncd_users.db     ## 用户密码文件存放路径

2、下载http

yum -y install httpd
cd /var/www/html/
echo "this is rsync" > abc.txt

3、创建密码文件

vim /etc/rsyncd_users.db
backuper:lai123

chmod 600 rsyncd_users.db   #为了不让他人访问修改权限(只有属主可以查看)

4、开启

rsync --daemon
netstat -natp |grep 873
tcp        0      0 20.0.0.8:873            0.0.0.0:*               LISTEN      51059/rsyn

5、用B服务器去拉起对方文件

[root@localhost ~]# rsync -avz backuper@20.0.0.8::wwwroot /opt/
Password: 
receiving incremental file list
./
abc.txt

或者用第二种方法拉去
[root@localhost opt]# rsync -avz rsync://backuper@20.0.0.8/wwwroot /opt/   ##从backuper这个用户拉去文件到自己的/opt目录下
Password: 

cd /opt
ls
abc.txt

5、在B服务器上也设置面交互的计划性任务

vim /etc/server.pass
lai123
rm -rf abc.txt 
rsync -avz --delete --password-file=/etc/server.pass backuper@20.0.0.8::wwwroot /opt/		##你会发现它把/opt下的sh目录删除了 仅同步了abc.txt

监控

rsync实时同步

定期同步的不足

执行备份的时间固定,延迟明显、实时性差
当同步源长期不变化时,密集的定期任务是不必要的

实时同步的优点

一旦同步源出现变化,立即启动备份
只要同步源无变化,则不执行备份
为了解决这个问题可以使用Linux内核提供额inotifu机制

从版本2.6.13开始提供

可以监控文件系统的变动情况,并做出通知响应
用到的辅助软件:inotifu-tools
在这里插入图片描述

调整inotifu内核参数

max_queue_events:监控事件队列大小
max_user_instances:最多监控实例数
max_user_watches:每个实例最多监控文件数

inotify-tools工具参数

inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果

命令选项:

-m:持续进行监控
-r: 递归监控所有子对象
-q:简化输出信息
-e:指定要监控哪些事件类型

接上面的实验做

1、在B机上安装http服务安装编译环境

yum -y install httpd
yum -y install gcc gcc-c++

2、调整内核参数

vim /etc/sysctl.conf   ## 编辑配置文件

fs.inotify.max_queued_events = 16384        ## 监控事件队列大小
fs.inotify.max_user_instances = 1024            ## 最多监控实例数
fs.inotify.max_user_watches = 1048576         ## 每个实例最多监控文件数

使用命令:sysctl -p  使配置立即生效

3、解压缩软件(先上传到/opt目录下)并进行配置与安装

tar zxvf inotify-tools-3.14.tar.gz -C /opt

cd /opt/inotify-tools-3.14    ## 进入软件目录

./configure   ## 进行配置

make && make install   ## 编译及安装

4、测试inotify软件是否可以正常监控

inotifywait -mrq -e modify,create,move,delete /var/www/html   ## 执行命令后会进入监听模式,无法操作,所以需要另开一个终端页面操作

PS-m:持续进行监控
-r递归监控所有子对象
-q:简化输出信息
-e:指定要监控哪些事件类型

随机创建文件并写入内容测试inotify是否可以监控操作动作:
cd /var/www/html
touch b 
echo "123" > c

另一个终端输出信息,说明软件工作正常:
[root@localhost inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html
/var/www/html/ CREATE b
/var/www/html/ MODIFY b

在这里插入图片描述
5、编写一个shell脚本,通过inotifuwait触发rsync同步操作

vim /opt/inotify.sh   ## 创建脚本

在脚本中写入:

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.50.135::wwwroot/"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ];then
       $RSYNC_CMD
    fi
done

PS:注意!192.168.50.135 IP是A机的

chmod +x /opt/inotify.sh    ## 为脚本添加执行权限

6、因为涉及到读写操作,所以需要把A、B机的/var/www/html/目录的权限放开

chmod 777 /var/www/html/   ## 分别在A、B机上进行操作
[root@localhost www]# ll
总用量 0
drwxrwxrwx 2 root root 25 10月 23 18:29 html

7、在A服务器开启写的权限和重启A服务器的rsync

vim /etc/rsyncd.conf
省略部分内容
comment = www.zhongguo.com        	  ## 描述
read only = no           		  ## 源站只读

下面是重启rsync
pkill -9 rsync
[root@localhost www]# rsync --daemon			###开启的时候发现不能开启因为有有这个文件还在
failed to create pid file /var/run/rsyncd.pid: File exists
cd /var/run/
cat rsyncd.pid 
51059				##发现这和进程还在  所以要把它删除
rm -rf rsyncd.pid
rsync --daemon			##这就能开启了

8、到B服务器开启监控并测试运行的情况

[root@localhost opt]# ./inotify.sh 		##开启监控
[root@localhost html]# touch chs		##再开一个终端创建修改文件
[root@localhost html]# touch lai
[root@localhost html]# echo "zhenghao" lai1
zhenghao lai1
[root@localhost html]# echo "zhenghao" > lai1

可去看源来的B终端看情况
[root@localhost opt]# ./inotify.sh 
rsync: failed to set times on "/." (in wwwroot): Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code ...省略

这个时候到A上去看看有什么是不是在/var/www/html/上面已经和A刚创建的同步了

[root@localhost html]# cat lai1			##发现同步了
zhenghao

实验总结

在做监控实验的时候应该注意点就是A配置文件的
vim /etc/rsyncd.conf
comment = www.zhongguo.com ## 描述 一定必须是com结尾的
read only = no ##一定要是能写的模式
还有就是修改这配合文件后要重启 记得注意开启的时候可能要删除原来的

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值