小知识: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 
声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:linux 判断当前用户是否是root

2023-6-2 17:09:24

建站知识

小知识:Redhat linux本地yum源的配置教程

2023-6-2 17:25:57

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索