第十二章:实验案例:使用rsync构建镜像网站

发布时间:2023年12月28日

实验环境

某公司在深圳、北京两地各放置了---台网站服务器,分别应对南北大区内不断增长的客户访问需求.两台服务器的网站文档必须保持--致,如图12.3所示,同步链路已通过VPN专用线路实现。

需求描述

1,服务器A(北京〉作为rsync发起端,目录/var /www / html作为原始位置。

2,服务器B(深圳)作为远程rsync服务器,目录/var /www/html 作为目标位置。

3,结合inotify机制实现触发式的上行同步,保持两个站点的网页文档一致。

推荐步骤

1,配置rsync服务器〈深圳.服务器B)。

2,通过inotify机制实现实时同步(北京,服务器A)。

[root@Linux01 ~]# vim /etc/rsyncd.conf 


uid = nobody
gid = nobody
use chroot = yes         //紧固在源目录
address = 192.168.9.30     //监听地址  (本机地址)
port 873              //监听端口
log file = /var/log/rsyncd.log    //日记文件位置
pid file = /var/run/rsyncd.pid  //存放进程ID 的文件位置
hosts allow = 192.168.9.0/24       //允许访问的客户机地址
[wwwroot]     //共享模块名称
        path = /var/www/html     //源目录的实际路径
        comment = http Doc     //描述信息
        read only = yes    //是否为只读
        dont compress = *.gz *.bz2 *.zip *.rar    //同步时不在压缩的文件类型
        auth users = backuper     //授权账户
        secrets file = /etc/rsyncd_users.db   //存放账户信息的数据文件

为备份账户创建数据文件。

根据上--步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔,用户名称为“backuper" .,密码为“qwe123”。由于账号信息采用明文存放,因此应调整文件权限,避免账号信息泄露。

[root@Linux01 ~]# vim /etc/rsyncd_users.db



backuper:qwe@123



[root@Linux01 ~]# chmod 600 /etc/rsyncd_users.db 

?

查询权限

启动 rsync 服务

[root@Linux01 ~]# rsync --daemon

在服务器 (同步源? 192.168.9.30)查看里面有什么文件

在发起端(192,。168.9.31)将指定的资源下载到本地 、root 目录下进行备份



[root@Linux01 ~]# rsync -avz backuper@192.168.9.30::wwwroot /root

备份结果

调整inotify 内核参数

在Lirux内核中.默认的inotify机制提供了三个调控参数:max_queue_events , max_user_instances,max_user_watches,分别表示监控事件队列(16 384)、最多监控实例数(128)、每个实例最多监控文件数〈8192)。

查看监控的参数

[root@Linux01 ~]# cat /proc/sys/fs/inotify/max_queued_events 
16384
[root@Linux01 ~]# cat /proc/sys/fs/inotify/max_user_instances 
128
[root@Linux01 ~]# cat /proc/sys/fs/inotify/max_user_watches
8192

当要监控的目录.文件数量较多或者变化较频繁时,建议加大这三个参数的值。例如,可直接修改/etc/sysctl , conf配置文件.将管理队列设为32768,实例数设为1024.监控数设为1048576,通常情况下,监控数所设的值建议大于监控目标的总文件数。

[root@Linux01 ~]# vim /etc/sysctl.conf



fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576


[root@Linux01 ~]# sysctl -p   //更新数据

去FTP 拿一个 inotify-tools 软件?

[root@Linux01 ~]# tar zxf inotify-tools-3.14.tar.gz 

[root@Linux01 ~]# cd inotify-tools-3.14/
[root@Linux01 inotify-tools-3.14]# ./configure 

[root@Linux01 inotify-tools-3.14]# make

[root@Linux01 inotify-tools-3.14]# make  install

以监控网站目录/var/www /html为例,可以先执行“inotifywait”命令,然后在另--个终端向/var/www/html目录下添加文件、移动文件.跟踪屏幕输出结果。其中,选项“--e”用来指定要监控哪些事件,选项“-m”表示持续监控,选项“一r”表示递归整个目录,选项“-q”简化输出信息。

192.168.9.30 配置  (开两个窗口)

第一个窗口
[root@Linux01 ~]# inotifywait -mrq -e modify,create,move,delete /var/www/html



第二个窗口
[root@Linux01 ~]# cd /var/www/html/
[root@Linux01 html]# echo aaaa >> test.html

[root@Linux01 html]# ls
bdqn1com  bdqn2com  test.html

[root@Linux01 html]#  rm -rf test.html 
[root@Linux01 html]# touch abc.txt
[root@Linux01 html]# mv abc.txt /opt/

[root@Linux01 ~]# mkdir /myweb   //创建 myweb 文件夹

?在第二个窗口修改 或者删除东西 第一个窗口可以实时监控

?

编写触发式同步脚本

[root@Linux01 ~]# vim /opt/inotify_rsync.sh



#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /var/www/html"
RSYNC_CMD="rsync -rav /var/www/html root@192.168.9.31:/myweb"
$INOTIFY_CMD | while reab DIRECTORY EVENT FILE   
                        //一旦读取到 $INOTIFY_CMD 命令的输出结果就执行 do 后面的语句
do
    $RSYNC_CMD
done



[root@Linux01 ~]# chmod +x /opt/inotify_rsync.sh    //给一个执行权限

[root@Linux01 ~]# echo '/opt/inotify_rsync.sh' >> /etc/rc.local

文章来源:https://blog.csdn.net/GUOJUNWEI11/article/details/135269560
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。