服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - rsync+inotify实现多台web数据动态同步操作步骤

rsync+inotify实现多台web数据动态同步操作步骤

2019-12-13 13:33Linux教程网 Linux

由于无存储共享设备,web集群中的代码均存放在本地,最终导致web节点之间的数据无法一致所以采用rsync+inotify,实现多台web数据动态同步,需要的朋友可以了解下

*背景:由于无存储共享设备,web集群中的代码均存放在本地,最终导致web节点之间的数据无法一致。 
*解决办法:采用rsync+inotify,实现多台web数据动态同步 
*解决思路:比如有a、b、c、d四台web,为解决哪台服务器为源数据服务器,我们在A服务器上安装rsync+inotify,然后将一个二级域名指向A服务器,这样以后网站编辑、开发人员之间访问二级域名进行日常网站更新,A服务器在检测到本地有数据更新时,便动态(触发式)向其它服务器发送更新数据。 
*注意:一定要使用rsync相同的版本,否则会出现未知错误。 
*选择rsync+inotify的理由:在常规的数据同步应用案例中,大多数人会选择使用rsync来完成数据同步,选择rsync+inotify的理由如下 
 

复制代码

代码如下:


1、服务器性能:rsync只能实现定时更新,无论网站有无文件更新,rsync都会按着定时任务去检查文件是否有更新,当数据文件较大时会使服务器性能下降;而rsync+inotify 
为触发式更新,也就是说只有当某个文件发生改动时才会更新,这样一来对服务器性能影响较小。 
2、数据实时性:如果选择rsync,每隔多长时间同步一次数据是个问题,时间越短,对性能影响就越大。时间太长,用户/编辑无法接受。采用rsync+inotify可实现实时更新, 
当A服务器文件有更新时,其它服务器立即更新 


*环境拓扑 

复制代码

代码如下:


A:192.168.1.101 
B:192.168.1.102 
C:192.168.1.103 
D:192.168.1.104 
注:数据源服务器为A,目标服务器为B、C、D 


*一、目标服务器安装rsync (在B、C、D服务器上操作,安装配置均一样) 
*安装rsync 下载地址:http://rsync.samba.org/ 

复制代码

代码如下:


cd /data/software 
wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz 
tar zxvf rsync-3.0.9.tar.gz 
cd rsync-3.0.9 
./configure 
make 
make install 


*安装完成后显示信息 

复制代码

代码如下:


mkdir -p /usr/local/bin 
/usr/bin/install -c -m 755 rsync /usr/local/bin 
mkdir -p /usr/local/share/man/man1 
mkdir -p /usr/local/share/man/man5 
if test -f rsync.1; then /usr/bin/install -c -m 644 rsync.1 /usr/local/share/man/man1; fi 
if test -f rsyncd.conf.5; then /usr/bin/install -c -m 644 rsyncd.conf.5 /usr/local/share/man/man5; fi 


*配置rsync 
*#vi /etc/rsync.conf 加入如下内容 

复制代码

代码如下:


uid = root 
gid = root 
use chroot = no 
max connections = 20 
strict modes = yes 
log file = /data/logs/rsyncd/rsyncd.log 
pid file = /data/logs/rsyncd/rsyncd.pid 
lock file = /data/logs/rsyncd/rsync.lock 
log format = %t %a %m %f %b 
[web] 
path = /data/vhosts/it121net/ 
auth users = username 
read only = no 
hosts allow = 192.168.1.0/24 #可以是IP段,也可以是IP地址 
list = no 
uid = root 
gid = root 
secrets file = /etc/rsync.passwd 
ignore errors = yes 


*创建目录,用于存放日志。 

复制代码

代码如下:


mkdir /data/logs/rsyncd 


*创建认证 
*#vi /etc/rsync.passwd 

复制代码

代码如下:


username:passwd 


*#chmod 600 /etc/rsync.passwd 
*启动rsync,启动后使用netstat查看,会发现系统已启动873端口 

复制代码

代码如下:


# rsync --daemon --config=/etc/rsync.conf 


*加入开机启动 

复制代码

代码如下:


# echo "rsync --daemon --config=/etc/rsync.conf" >>/etc/rc.local 


*关闭 

复制代码

代码如下:


killall rsync 


*二、源服务器安装rsync+inotify (在a服务器上操作) 
*安装rsync(仅安装即可,不需配置) 

复制代码

代码如下:


cd /data/software 
wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz 
tar zxvf rsync-3.0.9.tar.gz 
cd rsync-3.0.9 
./configure 
make 
make install 


*echo "passwd" > /etc/rsync-client.passwd 
*chmod 600 /etc/rsync-client.passwd 
*安装inotify 下载地址:https://github.com/rvoicilas/inotify-tools/wiki/ 

复制代码

代码如下:


cd /data/software 
wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 
tar zxvf inotify-tools-3.14.tar.gz 
cd inotify-tools-3.14 
./configure 
make 
make install 


*创建启动脚本 
*#vi /etc/rsync-web.sh 加入如下内容 

复制代码

代码如下:


#!/bin/sh 
SRC=/data/vhosts/it121net/ 
DES=web 
WEB2=192.168.1.102 
WEB3=192.168.1.103 
WEB4=192.168.1.104 
USER=username 
/usr/local/bin/inotifywait -mrq -e create,move,delete,modify $SRC | while read D E F 
do 
rsync -ahqzt --password-file=/etc/rsync-client.passwd --delete $SRC $USER@$WEB2::$DES 
rsync -ahqzt --password-file=/etc/rsync-client.passwd --delete $SRC $USER@$WEB3::$DES 
rsync -ahqzt --password-file=/etc/rsync-client.passwd --delete $SRC $USER@$WEB4::$DES 
done 
#注意:网络上面大部分都是显示一个中杠,可能是编码的事情,实际是应该是两个杠。 


*增加权限 

复制代码

代码如下:


#chmod +x /etc/rsync-web.sh 


*启动脚本 

复制代码

代码如下:


#nohup /etc/rsync-web.sh & //必须使用nohup放入后台执行,否则关闭终端后此脚本进程会自动结束 
/etc/rsync-web.sh & 


*关闭脚本 

复制代码

代码如下:


sudo pkill rsync 
sudo pkill inotifywait 


*@ERROR: chdir failed rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]解决办法 

复制代码

代码如下:


setsebool -P rsync_disable_trans on 


*rsync安装路径(注意查看) 

复制代码

代码如下:


/usr/bin/rsync 
/usr/local/bin/rsync 
/etc/xinetd.d/rsync 

延伸 · 阅读

精彩推荐
  • LinuxLinux系统下无法卸载挂载的目录怎么办?

    Linux系统下无法卸载挂载的目录怎么办?

    我们在日常运维中经常性会遇到需要进行磁盘的扩容、卸载、挂载等操作,但是有时候这个系统上跑的应用并没有停止或者有其他的运维同事在操作这个目...

    今日头条10302020-12-30
  • Linux在Linux系统中创建新的亚马逊AWS访问密钥的方法

    在Linux系统中创建新的亚马逊AWS访问密钥的方法

    如何在Linux系统中创建新的亚马逊AWS访问密钥?我在配置一个需要访问我的亚马逊AWS帐号的应用时被要求提供AWS访问密钥ID和秘密访问密钥,我怎样创建一个...

    Linux教程网6182019-10-30
  • Linux理解 Linux/Unix 登录脚本的技巧

    理解 Linux/Unix 登录脚本的技巧

    有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在 登陆时运行一次,例如...

    未知1042023-05-12
  • Linuxlinux驱动程序开发详细介绍

    linux驱动程序开发详细介绍

    前提,一般来说内核代码的错误可能会引起一个用户进程的死亡,或者整个系统的瘫痪,更严重的后果,可能导致磁盘损伤~因此建议最好有一台实验机进行...

    Linux教程网5392019-12-17
  • Linuxssh 登录很慢该如何解决

    ssh 登录很慢该如何解决

    这篇文章主要介绍了ssh 登录很慢该如何解决的相关资料,这里提供了两种方法,DNS反向解析及关闭ssh的gssapi认证的解决办法,需要的朋友可以参考下...

    linuxeye9922021-12-16
  • Linuxlinux设置tomcat自启动的方法

    linux设置tomcat自启动的方法

    这篇文章主要介绍了linux设置tomcat自启动的方法,需要的朋友可以参考下...

    Linux教程网8512021-10-10
  • Linux将 Linux 终端与 Nautilus 文件管理器结合起来

    将 Linux 终端与 Nautilus 文件管理器结合起来

    Nautilus 是 GNOME 桌面环境中的图形化文件浏览器。你可以使用它来访问和管理系统中的文件和文件夹。 尽管并非所有人都喜欢使用终端来管理文件和目录,...

    未知812023-08-08
  • Linuxlinux top命令详解

    linux top命令详解

    这篇文章主要介绍了linux top命令详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    sparkdev5622022-03-01