返回顶部
首页 > 资讯 > 精选 >rsync+inotify如何实现多台web数据动态同步操作
  • 547
分享到

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

2023-06-13 04:06:22 547人浏览 薄情痞子
摘要

这篇文章主要介绍了rsync+inotify如何实现多台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

感谢你能够认真阅读完这篇文章,希望小编分享的“rsync+inotify如何实现多台web数据动态同步操作”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: rsync+inotify如何实现多台web数据动态同步操作

本文链接: https://lsjlt.com/news/265313.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • rsync+inotify如何实现多台web数据动态同步操作
    这篇文章主要介绍了rsync+inotify如何实现多台web数据动态同步操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。*背景:由于无存储共享设备,web集群中的代码均存...
    99+
    2023-06-13
  • Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能
    0x0 测试环境 总部生产服务器与分部备份服务器要求实现异地数据备份,环境如下 **centos 6.5** 生产服务器目录: /home/zytest/files 备份服务器目录: /home/zytest/fi...
    99+
    2022-06-03
    rsync+inotify实现远程实时同步 linux 远程数据同步
  • Linux利用inotify和rsync服务实现数据实时同步的原理解析
    目录文件定时同步的实现:文件实时同步的实现:inotifyinotify-tools包主要工具:inotifywait 命令:rsync工具rsync有三种工作方式:两种方式实现rsync服务器方式一:通过rsync守护...
    99+
    2024-04-02
  • 如何实现CentOS 5.4 rsync+inotify配置触发式实时文件远程同步
    这篇文章给大家介绍如何实现CentOS 5.4 rsync+inotify配置触发式实时文件远程同步,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。软件:rsync-2.6.8-3.1(一般系统默认安装)、inotify...
    99+
    2023-06-10
  • 云数据库同步:实现跨平台互操作性
    在当今快节奏的数字环境中,跨平台互操作性已成为现代应用程序和系统的关键需求。云数据库同步技术通过无缝连接不同平台上的数据库,有效地解决了这一挑战,从而促进无缝数据共享和管理。 跨平台互操作性的优势 云数据库同步提供多种优势,使其成为实现...
    99+
    2024-02-29
    云数据库同步 跨平台互操作性 MySQL PostgreSQL MongoDB
  • 如何在 Spring 中实现同步操作?
    Spring 是一个非常流行的开源框架,它提供了许多功能来帮助开发人员构建优秀的应用程序。其中一个非常重要的功能是同步操作。在本文中,我们将探讨如何在 Spring 中实现同步操作。 一、Spring 中的同步操作 在 Spring 中,同...
    99+
    2023-09-22
    面试 同步 spring
  • Vue + element实现动态显示后台数据到options的操作方法
    需求: 实现selector选择器中选项值options 数据的动态显示,而非写死的数据,我的角色ID数据如下: 现在实现把这些数据请求显示option上 实现如下: 使用elem...
    99+
    2024-04-02
  • ASP中如何实现同步数组操作的教程?
    在ASP中,数组是一种非常重要的数据类型。在很多情况下,我们需要对数组进行操作,例如添加、删除、修改等等。但是在多人同时操作同一个数组时,就会出现问题。如何保证多人同时对同一个数组进行操作时不会出错呢?这就需要实现同步数组操作。 本文将介...
    99+
    2023-11-04
    同步 数组 教程
  • JQuery如何实现动态操作表格
    这篇文章给大家分享的是有关JQuery如何实现动态操作表格的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近要做的东西,是对一个表格动态的添加行,删除行,并且对表格中内容进行非空...
    99+
    2024-04-02
  • 如何通过pycharm实现对数据库的查询等操作(非多步操作)
    目录pycharm对数据库的查询等操作(非多步操作)Pycharm操作数据库步骤服务端配置客户端配置pycharm对数据库的查询等操作(非多步操作) import pymysql i...
    99+
    2024-04-02
  • BootStrap中如何实现selectpicker后台动态绑定数据
    这篇文章主要介绍BootStrap中如何实现selectpicker后台动态绑定数据,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!html部分代码<select cl...
    99+
    2024-04-02
  • MySQL如何搭建主从同步实现操作
    小编给大家分享一下MySQL如何搭建主从同步实现操作,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、MySQL 8.0 主从同步主从同步的流程(原理):mast...
    99+
    2023-06-29
  • 使用mongoshake实现mongodb数据同步的操作方法
    目录前言使用场景搭建步骤环境准备一、搭建mongodb复制集二、mongoshake配置前言 MongoShake是阿里云以Golang语言编写的通用平台型服务工具,它通过读取Mon...
    99+
    2024-04-02
  • Java 解析binlog实现数据同步增量等操作
    使用mysql-binlog-connector-java进行解析 解析row格式的binlog(mysql默认的是Statement格式需要手动调整到row格式) 如果使用Statement模式的话...
    99+
    2023-09-14
    java 数据库 mysql binlog
  • 如何实现MySQL数据库同步
    这篇文章主要介绍了如何实现MySQL数据库同步,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。MySQL 的数据同步,在 MySQL 官方网站...
    99+
    2024-04-02
  • MySQL同步数据Replication如何实现
    今天小编给大家分享一下MySQL同步数据Replication如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。MySQ...
    99+
    2023-07-05
  • mysql数据库同步如何实现
    MySQL数据库同步可以通过多种方式实现,以下是一些常用的方法: 使用主从复制:主从复制是MySQL自带的一种数据库同步方法,通...
    99+
    2024-04-09
    mysql
  • PostgreSQL实时数据同步如何实现
    在 PostgreSQL 中实现实时数据同步可以通过以下方式实现: 使用 PostgreSQL 的流复制功能:通过配置 Post...
    99+
    2024-04-02
  • Go语言中的数据类型有哪些?如何实现同步操作?
    Go语言是一种开源的编程语言,它可以用于开发各种类型的应用程序,包括Web应用程序、移动应用程序、桌面应用程序等。在Go语言中,数据类型是非常重要的一个概念,它决定了程序的正确性和效率。本文将介绍Go语言中的数据类型以及如何实现同步操作。 ...
    99+
    2023-10-11
    数据类型 同步 数组
  • 如何在PostgreSQL中实现跨平台数据迁移和同步
    要在PostgreSQL中实现跨平台数据迁移和同步,可以使用以下几种方法: 使用pg_dump和pg_restore工具:pg_...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作