rsync结合inotify实现实时同步

简介:

背景介绍

中小企业的web应用场景中,web服务器可能是由2台服务器组成,通过DNS的轮询作为负载均衡,此时就需要对2台服务器之间同步的实时性有较高的要求,上一篇文章所介绍的rsync+crontab就不能满足此需求,本章就来介绍使用rsync+inotify完成服务器之间的实时同步

wKiom1gE4E2TjIvKAABwalFgaPY949.png

实验说明

操作系统:CentOS6.8,inotify要求内核版本必须为2.6.13以上

源服务器:172.16.10.20/24

目标服务器:172.16.10.10/24

实验目的:将源服务器上的/rsync目录内的内容实时同步到目标服务器/rsync目录下

其他事项:为避免安全机制带来的干扰,源和目标服务器都关闭Selinux和iptables

实验步骤

一、安装rsyncd服务

1、服务器端操作

(1)安装xinetd超级守护进程

yum -y install xinetd

(2)将rsync设置为开机启动

chkconfig rsync on

(3)创建rsync配置文件填

vim /etc/rsyncd.conf 并填写下列内容:

# global setting

 log file = /var/log/rsyncd.log #设置log文件位置

 pid file = /var/run/rsyncd.pid #设置pid文件位置

 lock file = /var/run/rsyncd.lock #设置lock文件位置

 uid = rsync #设置启动时以哪个用户来代替root运行rsync

 gid = rsync

 list = no #不允许列出名单

 chroot = no #不切换根目录

 timeout = 300 #设置超时时间

 ignore errors = yes #是否忽略错误

 max connections = 10 #最大连接数

# module setting

 [data] #设定模块名称

 path = /rsync #指定模块路径

 read only = no #是否可写

 write only = no #是否可读

 auth users = rsync_bak #创建允许链接该模块的虚拟用户

 secrets file = /etc/rsyncd.passwd  #账户密码(rsync_bak)的存放文件

 strict modes = yes #检查secrets file文件的权限是否满足要求

 hosts allow = 172.16.10.20/32   #白名单

 hosts deny = *   #黑名单

(4)创建secrets file文件,并修改其权限

vim /etc/rsyncd.passwd

wKioL1gE4E3yx_iRAAAFv9eVeM8621.png

chmod 600 /etc/rsyncdpasswd

(5)创建rsync系统用户

useradd -s /sbin/nologin rsync

(6)创建需要同步的目录并修改其属主和属组

mkdir /rsync

chown -R rsync:rsync /rsync

(7)启动rsyncd服务,并查看873端口是否正常侦听

service xinetd start

netstat -ntl

(8)使用rsync命令将存放rsync_bak帐户名和密码的文件发给客户端wKioL1gE4E7x2mw8AAAtIDCZRzQ072.png

2、客户端操作

(1)查看/etc/rsyncd.passwd是否收到,权限是否为600,再将文件内rsync_bak用户名删除掉,只保留rsync_bak账户的密码

wKiom1gE4E7QITHrAAADL24X0n0369.png

(2)再检测rsyncd服务是否可以正常传输,至此rsyncd服务就搭建完成

wKioL1gE4E6DMabFAAAxLnTlk7w634.png

二、安装inotify-tools

1、inotify-tools工作机制

inotify更像一个监控进程,它会监视指定的目录或文件,并筛选出信息发生变化的内容,根据这个特性我们可以在rsync客户端安装inotify-tools并将其筛选出来的目录或文件作为输入再通过rsync客户端推送到rsync服务器上以实现两个服务器之间的实时同步

2、安装inotify-tools的2个先决条件

(1)安装inotify-tools的机器内核版本必须是2.6.13及以上

(2)查看机器内核是否支持inotify

wKiom1gE4E_RUfWqAAAmaSzTj4M050.png

3、安装inotify-tools操作步骤

(1)从 http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz 下载源码并放到/usr/local/src目录下

(2)解压源码包后进入目录

tar -xf inotify-tools-3.14.tar.gz

cd inotify-tools-3.14

(3) ./configure --prefix=/usr/local/inotify #配置configure参数

(4)make && makeinstall #编译安装

(5)echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh #添加PATH路径

(6)source /etc/profile.d/inotify.sh #重读下该文件

(7)ln -sv /usr/local/inotify/include/ /usr/include/inotify #头文件输出

(8)echo "/usr/local/inotify/lib" >> /etc/ld.so.conf.d/inotify.conf #库文件输出

(9)使用ldconfig -v 查看inotify库是否已被加载

wKiom1gE4E_Q1Kf8AAAUk3R2FdA118.png

(10)使用vim /etc/man.config,将inotify的man文档输出

wKioL1gE4E_Qt6uRAAAnt65YQJM089.png

三、测试inotify的监视功能

1、通过tree可以看到inotify的核心就只有2条命令,可以通过--help查看

wKiom1gE4E_zdvevAAAfP0mYpF4927.png

2、mkdir /rsync #手动创建一个/rsync目录用于inotify的监视

3、inotifywait -mqr --format '%w%f' -e create /rsync 让inotify监视/rsync目录的变化

-q quite只输出变化信息

-m monitor监视

-r recursive递归

--format 指定格式类型

-e event真实的事件,后面接create,delete等,多个事件间用 , 分隔

4、新开一个终端,在/rsync下创建文件或目录看是否能够被监视到

wKiom1gE4cPhnelhAAAVpNgXcmo533.png

四、inotify结合rsync实现实时同步

1、创建存放脚本的目录及脚本文件

mkdir /etc/usr/local/inotify/script

vim /etc/usr/local/inotify/script/rsync.sh

2、填写脚本内容

#!/bin/bash

rsyncSrc=/rsync

rsyncCommand=/usr/local/inotify/bin/inotifywait

$rsyncCommand -mrq --format '%w%f' -e close_write,delete,create $rsyncSrc \

| while read file;do

   cd $rsyncSrc && rsync -az --delete --password-file=/etc/rsyncd.passwd ./ \

rsync_bak@172.16.10.10::data > /dev/null 2>&1

 done

或者下图脚本也可以

wKioL1gFtLqRI67vAAA4IZBRnQ4880.png

注意:脚本中的./代表同步/rsync目录中的内容而不包括/rsync目录本身,和图片脚本红框部分意义一样,以目录方式执行效率更高

3、给脚本执行权限

chmod +x /usr/local/inotify/script/rsync.sh

4、设置脚本开机自动启动

vim /etc/rc.d/rc.local

sh /usr/local/inotify/script/rsync.sh &

:wq

至此,所有操作完成,重启客户机,开机后使用ps -ef | grep "inotify"查看脚本是否正常启动wKioL1gE4cPwDN9OAABE40URfWg804.png




本文转自 qiao645 51CTO博客,原文链接:http://blog.51cto.com/arkling/1862807
相关文章
|
10月前
|
Linux
Linux安装svn并启动
Linux安装svn并启动
289 10
|
人工智能 安全 机器人
OpenAI重拾规则系统,用AI版机器人定律守护大模型安全
在人工智能领域,大语言模型(LLM)展现出强大的语言理解和生成能力,但也带来了安全性和可靠性挑战。OpenAI研究人员提出“规则基于奖励(RBR)”方法,通过明确规则引导LLM行为,确保其符合人类价值观和道德准则。实验显示,RBR方法在安全性与有用性之间取得了良好平衡,F1分数达97.1。然而,规则制定和维护复杂,且难以完全捕捉语言的多样性。论文:https://arxiv.org/pdf/2411.01111。
413 13
|
人工智能 自然语言处理 供应链
国产化CRM系统排名:企业数字化转型的推动力量
在数字化时代,国产CRM系统成为企业提升竞争力的重要工具。本文盘点2024年主要国产CRM品牌,如销售易、金蝶云CRM、白码CRM、悟空CRM、用友CRM,从品牌背景、产品功能、优势特色及适用企业等方面,全面解析这些数字化管理工具,助力企业选择最契合需求的CRM解决方案。
|
云安全 安全 网络安全
云计算与网络安全:技术融合下的安全挑战与应对策略
【10月更文挑战第33天】在数字化转型的浪潮中,云计算作为支撑现代企业IT架构的核心,其安全性成为业界关注的焦点。本文从云计算服务的基本概念出发,探讨了云环境下的网络安全风险,并分析了信息安全的关键技术领域。通过对比传统网络环境与云端的差异,指出了云计算特有的安全挑战。文章进一步提出了一系列应对策略,旨在帮助企业和组织构建更为坚固的云安全防护体系。最后,通过一个简化的代码示例,演示了如何在云计算环境中实施基本的安全措施。
387 0
|
弹性计算 运维 容灾
从人工到自动,泛微云上自动化部署实践
泛微借助阿里云的底层优势,将部分客户的服务迁移到云上,从硬件和网络上保证用户能够高效访问 OA 系统
从人工到自动,泛微云上自动化部署实践
|
移动开发 小程序 前端开发
使用uni-app开发(h5、小程序、app)步骤
使用uni-app开发(h5、小程序、app)步骤
437 0
|
Web App开发 缓存
brew装snappy
brew装snappy,我在mac上已经开了socks5代理,也尝试了lantern或者duotai.org,结果都下载不动。 解决方法:把snappy包手动从浏览器下载,然后放到缓存目录,再执行brew安装,会用缓存文件安装。
2474 0
|
机器学习/深度学习 人工智能 Kubernetes
PAI-DLC 深度学习训练平台介绍|学习笔记
快速学习 PAI-DLC 深度学习训练平台介绍。
960 0
PAI-DLC 深度学习训练平台介绍|学习笔记
|
数据采集 Python
Python爬虫系列13-采集快手短视频官网数据
读书不是唯一出路,但学习一定是。 有些人忙碌的活着,有些人努力的拼搏,有些人随意挥霍青春,人生百态,各有不同。
1145 0
Python爬虫系列13-采集快手短视频官网数据
|
数据采集 运维 达摩院
入选 SIGMOD2021 的时间序列多周期检测通用框架 RobustPeriod 如何支撑阿里业务场景?
本文除了介绍RobustPeriod的核心技术亮点,还将重点解释如何将它构筑成服务来解决阿里云的业务痛点。
入选 SIGMOD2021 的时间序列多周期检测通用框架 RobustPeriod 如何支撑阿里业务场景?

热门文章

最新文章