一、实验环境 :CentOS7
二、实验目标:
Web_001到Web_N所有的服务器/var/www/html/目录下的数据一致,当该目录下的数据发生变化时,依次重启Apache服务。
(应用场景:用于发布tomcat或Apache等根目录下的项目)
三、实验步骤:
1.登录到每台服务器 ,修改主机名、IP地址、DNS、并关闭firewalld和selinux防火墙等(改完需要重启电脑才可生效) ,并安装rsync、httpd、inotify-tools软件等
(1)主机名称、防火墙等相关修改
(2)安装rsync、httpd软件
yum install rsync httpd -y
至此,就可以使用rsync同步目录或者是文件,使用方法和scp类似,再配合计划任务就可以作为日常的周期性数据备份。但需要注意的是,scp只能用于复制小的目录,他的工作原理是需要遍历所有文件后才执行复制数据的动作。
例如:/usr/bin/rsync -aqzP --delete /tmp/hbgslz/ root@192.168.1.45:/tmp/hbgslz/
192.168.1.45为远程服务器
-l --links 保留软链结
-p --perms 保持文件权限
-o --owner 保持文件属主信息
-g --group 保持文件属组信息
-D --devices 保持设备文件信息
-P 显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
-q --quiet 忽略错误信息的输出
-a --archive 归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"。
-r --recursive 递 归到目录中去。
-t --times 保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新检查出mtime不同从而导致增量传输无效。
-z 在传输过程中压缩文件数据
--delete 以SRC为主 ,对DEST进行镜像同步。多则删之,少则补之,注意"--delete"是在接收端DEST上执行的
(3)安装inotify-tools软件(从kernel 2.6.13开始正式并入内核)
wget -c http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar -zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr/local/inotify/
make
make install
(4)修改/proc/sys/fs/inotify/目录下max_queued_events、max_user_instances、max_user_watches 的默认值
下图为默认的参数值:
以max_user_watches为例,修改/etc/sysctl.conf 下的内核参数:
文件路径:/proc/sys/fs/inotify/max_user_watches
/etc/sysctl.conf添加内容:fs.inotify.max_user_watches = 999999999
将文件路径红色区域的内容复制到/etc/sysctl.conf里面,并将“/”改为“.”,修改完内核参数后,必须执行sysctl -p 使其立即生效
2.登录到Web_N服务器,创建免秘钥登录证书,并复制该秘钥证书到远程服务器Web_001~Web_N台服务器(若服务器数量比较多,可以使用脚本操作,可参考下面重新启动Apache服务的脚本)
注意:因为脚本是使用的SSH远程访问后执行命令,所以就算是Web_N本地也需要执行ssh-copy-id root@192.168.1.45
3.数据同步和远程重启Apache服务脚本:
inotify_rsync_data.sh:用于数据同步
#!/bin/bash
SRC=/var/www/html/
DEST=root@192.168.1.45:/var/www/html/
/usr/local/inotify/bin/inotifywait -mrq -e access,modify,attrib,close_write,close_nowrite,close,open,moved_to,moved_from,move,create,delete,delete_self,unmount ${SRC} | while read A B C
do
chmod 755 -R $SRC
/usr/bin/rsync -aqzP --delete $SRC $DEST
done inotify_rsync_service.sh:用于数据同步完后重启Apache服务
#!/bin/bash
SRC=/var/www/html/
/usr/local/inotify/bin/inotifywait -mrq -e access,modify,attrib,close_write,close_nowrite,close,open,moved_to,moved_from,move,create,delete,delete_self,unmount ${SRC} | while read A B C
do
#远程登录指定的服务器执行重启Apache的服务,注意配置SSH免秘钥登录
for n in {104,45};do
ssh 192.168.1.$n "/usr/bin/systemctl restart httpd.service"
done
done
4.将脚本放置到开机启动文件内,并且后台运行。
注意事项:
注意观察文件传输时间。
附:rsync亦可以使用匿名同步,但需要配置/etc/rsyncd.conf、/etc/rsyncd.passwd(该文件需手动在DEST中新建)、/etc/rsyncd.motd(该文件需手动在DEST中新建)等文件
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com