基于RHEL6使用rsync构建镜像网站

概述html

1rsyncRemote Sync远程同步)服务器

是一款开源的快速备份工具,能够在不一样主机间镜像同步数据,支持本地复制,或与其余SSHrsync主机同步,rsync应用普遍,大多数Linux都将其做为默认组件已安装。负载均衡

2、组成ssh

①发起端:负责发起rsync同步操做的客户机ide

②备份源:负责响应来自客户机rsync同步操做的服务器,能够是SSH备份源或rsync备份源工具

3、同步方式测试

①下行同步:备份源负责提供文档的原始位置;发起端应对该位置有读取权限网站

②上行同步:备份源负责提供文档的目标位置;发起端应对该位置有写入权限spa

4inotify机制rest

Linux内核从2.6.13开始提供inotify机制,能够监控文件系统的变更状况做出通知响应,如能够针对目录或文件的变化及时做出响应

②使用rsync工具与inotify机制相结合,可实现触发式实时同步

inotify机制由内核提供,主要作本机监控,所以更适合上行同步

④辅助工具:inotify-tools

inotifywait:用于持续监控,实时输出结果

inotifywatch:用于短时间监控,任务完成后再出结果

 

实验环境:

Snip20181118_1.png

搭建两台WEB服务器以实现负载均衡,所以两台服务器的网站文档内容必须相同,使用rsync进行远程同步,须要结合inotify机制实现触发式的上行同步,保持两个站点内容一致。

服务器A192.168.4.254,做为rsync发起端,/var/www/html为原始位置

服务器B192.168.4.100,做为远程SSH服务器,/var/www/html为目标位置

注:两台服务器都须要安装配置Apache,请自行解决

 

1、配置SSH备份源(服务器B

1、建立备份用户rput,准备目录/var/www/html

useradd rput

passwd rput

mkdir –p /var/www/html         -----安装Apache时也会自动建立此目录

2、将目录/var/www/html属主改成rput,并设置ACL容许用户daemon写入

chown -R rput:rput /var/www/html

setfacl -R -m user:daemon:rwx /var/www/html

setfacl -R -m default:user:daemon:rwx /var/www/html

getfacl /var/www/html

3、配置并启用sshd服务,容许rput用户登录

vi /etc/ssh/sshd_config

  allowusers rput

service sshd restart

 

2、使用rsync备份工具(服务器A

1、建立备份用户tom,建立目录/var/www/html,并添加测试网页文件

useradd tom

passwd tom

echo "welcome to benet." >  /var/www/html/index.html

2、将目录/var/www/html属主改成tom,并设置ACL容许用户daemon写入

chown -R tom:tom /var/www/html

setfacl -R -m user:daemon:rwx /var/www/html

setfacl -R -m default:user:daemon:rwx /var/www/html

getfacl /var/www/html

3、由tom用户建立SSH密钥对,并将密钥短语设为空,实现无交互登录

su – tom

ssh-keygen -t rsa

4、将tom用户公钥分发给服务器Brput用户,并验证登录

ssh-copy-id rput@192.168.4.100

ssh rput@192.168.4.100

注:①ssh-copy-id命令能够把本地的ssh公钥文件安装到远程主机对应的帐户下

    ②也可以使用scp命令将公钥文件拷贝至服务器,再导入到储存密钥的文件中

    ③例scp  ~/.ssh/id_rsa.pub  rput@192.168.4.100:/tmp

        cat /tmp/id_rsa.pub >> /home/rput/.ssh/authorized_keys

5、使用rsync作上行同步

rsync -az --delete /var/www/html/   rput@192.168.4.100:/var/www/html/

6、在服务器B查看同步的状况

ls /var/www/html

 

注:rsync命令的用法

①基本格式:rsync [选项] 原始位置 目标位置

②经常使用选项:

-a:归档模式,递归并保留对象属性,等同于 -rlptgoD

-v:显示同步过程的详细(verbose)信息

-z:在传输文件时进行压缩(compress

-H:保留硬链接文件

-r:递归模式,包含目录及子目录中全部文件

-l:对于符号连接文件仍然复制为符号连接文件

-p:保留文件的权限标记

-t:保留文件的时间标记

-g:保留文件的属组标记(仅超级用户使用)

-o:保留文件的属主标记(仅超级用户使用)

-D:保留设备文件及其余特殊文件

--delete:删除目标位置有而原始位置没有的文件

--checksum:根据对象的校验和来决定是否跳过文件

 

3、经过inotify机制实现实时同步(服务器A

1、安装inotify-tools软件包,以便使用inotifywaitinotifywatch工具

tar zxf inotify-tools-3.14.tar.gz -C /usr/src/

cd /usr/src/inotify-tools-3.14/

./configure

make && make install

2、编写脚本,根据inotifywait监控结果触发rsync同步操做

su - tom                    -------切换为备份用户tom

vi  rputsync.sh

Snip20181118_2.png

chmod a+x rputsync.sh

注:inotifywait经常使用选项

-m 持续进行监控

-r 递归监控全部子对象

-q 简化输出信息

-e 指定要监控哪些事件类型,如modifycreatemovedelete

 

3、执行脚本,修改/var/www/html目录内容,验证同步效果

su - tom             ------必须以tom身份运行脚本

./rputsync.sh

cd /var/www/html

touch a b c

在目标位置(服务器B)查看同步的状况

ls /var/www/html

 

补充:配置rsync备份源

1、创建/etc/rsyncd.conf配置文件

vi /etc/rsyncd.conf

Snip20181118_3.png

2、建立帐户数据文件

vi /etc/rsyncd_users.db

backuper:123

chmod 600 /etc/rsyncd_users.db

3、启动rsync服务程序

rsync –daemon

netstat -anptu | grep rsync

vi /etc/xinetd.d/rsync

       disable = no

yum –y install xinetd

service xinetd start