首页 > 系统相关 >Linux实时同步

Linux实时同步

时间:2023-02-01 19:22:22浏览次数:117  
标签:rsync 同步 sersync -- app 实时 nfs Linux root

实时同步

一、概述

背景:

  • 以前,通过rsync+定时任务实现对文件的定时备份/同步
  • 现在,对于NFS来说,需要进行实时同步

选择:

  • 分布式存储
  • 使用实时同步服务+NFS
  • 选择公有云对象存储OSS,七牛云存储,腾讯存储COS
  • NFS+实现同步工具
    • inotify:是个命令,监控指定目录是否发生变化(有缺陷,不推荐使用)
    • sersync:国产开源,内置inotify+rsync命令
    • lsyncd

二、Sersync原理

image

三、Sersync同步架构

image

四、上手指南

1.rsync服务准备

1.1 rsync服务端

[root@backup ~]# cat /etc/rsyncd.conf
[nfsbackup]
comment = "nfs备份文件夹"
path = /nfsbackup
[root@backup ~]# mkdir -p /nfsbackup
[root@backup ~]# chown -R rsync.rsync /nfsbackup/
[root@backup ~]# ll -d /nfsbackup/
drwxr-xr-x 2 rsync rsync 48 Jan 13 11:19 /nfsbackup/

1.2 rsync客户端

#客户端测试,客户端记得创建密码文件并授予权限600
[root@nfs ~]# rsync -az /etc/hostname [email protected]::nfsbackup  --password-file=/etc/rsync.client 
#服务端查看
[root@backup ~]# ll /nfsbackup/
total 4
-rw-r--r-- 1 rsync rsync 0 Jan 13 10:39 1.txt
-rw-r--r-- 1 rsync rsync 0 Jan 13 10:41 2.txt
-rw-r--r-- 1 rsync rsync 4 Jan  9 11:11 hostname

2.Sersync部署

2.1 部署

#部署在nfs上,因为要监控他的目录
#sersync软件包链接:https://pan.baidu.com/s/1avBKUdGMP2TKqw2GOPsSsw  提取码:hi4x 
#目录规划:
命令放在:/app/tools/sersync/bin/
配置文件放在:/app/tools/sersync/conf/

#上传软件包到家目录
#查看上传的软件包
[root@nfs ~]# ll
total 712
-rw-r--r-- 1 root root 727290 Jan 13 09:14 sersync2.5.4_64bit_binary_stable_final.tar.gz
#解压上传的软件包
[root@nfs ~]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz 
[root@nfs ~]# ll
total 712
drwxr-xr-x 2 root root     41 Oct 26  2011 GNU-Linux-x86
-rw-r--r-- 1 root root 727290 Jan 13 09:14 sersync2.5.4_64bit_binary_stable_final.tar.gz
#创建目录
[root@nfs ~]# mkdir -p /app/tools/sersync/{bin,conf}
#移动命令和配置文件到规划好的目录里
[root@nfs ~]# mv GNU-Linux-x86/sersync2 /app/tools/sersync/bin
[root@nfs ~]# mv GNU-Linux-x86/confxml.xml /app/tools/sersync/conf/
#查看是否移动成功
[root@nfs ~]# tree -F /app/tools/
/app/tools/
└── sersync/
    ├── bin/
    │   └── sersync2*
    └── conf/
        ├── confxml.xml*
        └── confxml.xml.bak*

3 directories, 3 files

2.2 启动服务

#给命令创建软链接
[root@nfs ~]# ln -s /app/tools/sersync/bin/sersync2 /bin/
#查看命令的参数
[root@nfs ~]# /app/tools/sersync/bin/sersync2 -h
set the system param
execute:echo 50000000 > /proc/sys/fs/inotify/max_user_watches
execute:echo 327679 > /proc/sys/fs/inotify/max_queued_events
parse the command param
_______________________________________________________
参数-d:启用守护进程模式
参数-r:在监控前,将监控目录与远程主机用rsync命令推送一遍
参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
________________________________________________________________
#启动进程
[root@nfs ~]# sersync2 -rdo /app/tools/sersync/conf/confxml.xml
#查看进程是否启动
[root@nfs ~]# ps -ef |grep sersync
root       1468      1  0 11:14 ?        00:00:00 sersync2 -rdo /app/tools/sersync/conf/confxml.xml
root       1829   1743  0 11:28 pts/0    00:00:00 grep --color=auto sersync

#开机自启,记得给执行权限
[root@nfs ~]# ll -d  /etc/rc.d/rc.local 
-rw-r--r--. 1 root root 473 Oct  2  2020 /etc/rc.d/rc.local
[root@nfs ~]# chmod +x /etc/rc.d/rc.local

注意事项:

同一个配置文件只能存在1个进程,否则会出现异常

如果要监控多个目录,复制多个配置文件,启动多个服务

2.3 关闭服务

[root@nfs ~]# ps -ef |grep sersync
root       1468      1  0 11:14 ?        00:00:00 sersync2 -rdo /app/tools/sersync/conf/confxml.xml
root       1829   1743  0 11:28 pts/0    00:00:00 grep --color=auto sersync
[root@nfs ~]# kill 1468    #也可以执行  pkill sersync

2.4 配置文件详解

[root@nfs ~]# cat /app/tools/sersync/conf/confxml.xml 
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="8008"></host>
    <debug start="false"/>
    <fileSystem xfs="false"/>
#通过的时候排除什么,默认关闭。false关闭,true开启    
    <filter start="false">
	<exclude expression="(.*)\.svn"></exclude>
	<exclude expression="(.*)\.gz"></exclude>
	<exclude expression="^info/*"></exclude>
	<exclude expression="^static/*"></exclude>
    </filter>
#配置inotify监控规则,通过事件    
    <inotify>
	<delete start="true"/>				#监控是否有删除
	<createFolder start="true"/>		#监控是否有创建目录
	<createFile start="false"/>			#监控是否创建文件
	<closeWrite start="true"/>			#是否有closeWrite事件,修改后的退出(文件被修改)
	<moveFrom start="true"/>			#移动,改名
	<moveTo start="true"/>				#移动,改名
	<attrib start="false"/>				#文件属性变化
	<modify start="false"/>				#文件内容修改
    </inotify>

    <sersync>
#监控的目录变化
	<localpath watch="/opt/tongbu">							#监控哪些目录,一般为存储共享目录
	    <remote ip="127.0.0.1" name="tongbu1"/>				#rsync服务端的ip地址和rsync服务端的模块名称
	    <!--<remote ip="192.168.8.39" name="tongbu"/>-->
	    <!--<remote ip="192.168.8.40" name="tongbu"/>-->
	</localpath>
#配置rsync客户端的命令
	<rsync>
	    <commonParams params="-artuz"/>										#命令行选项,-az  默认加--delete
	    <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
#auth start 是否开启免密模式,一般为yes,认证用户,客户端密码文件
	    <userDefinedPort start="false" port="874"/><!-- port=874 --> #rsync服务端口,这里关闭,默认873
	    <timeout start="false" time="100"/><!-- timeout=100 -->		 #超时时间
	    <ssh start="false"/>
	</rsync>
#日志
	<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
	<crontab start="false" schedule="600"><!--600mins-->
	    <crontabfilter start="false">
		<exclude expression="*.php"></exclude>
		<exclude expression="info/*"></exclude>
	    </crontabfilter>
	</crontab>
	<plugin start="false" name="command"/>
    </sersync>

    <plugin name="command">
	<param prefix="/bin/sh" suffix="" ignoreError="true"/>	<!--prefix /opt/tongbu/mmm.sh suffix-->
	<filter start="false">
	    <include expression="(.*)\.php"/>
	    <include expression="(.*)\.sh"/>
	</filter>
    </plugin>

    <plugin name="socket">
	<localpath watch="/opt/tongbu">
	    <deshost ip="192.168.138.20" port="8009"/>
	</localpath>
    </plugin>
    <plugin name="refreshCDN">
	<localpath watch="/data0/htdocs/cms.xoyo.com/site/">
	    <cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
	    <sendurl base="http://pic.xoyo.com/cms"/>
	    <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
	</localpath>
    </plugin>
</head>

image

3.NFS配置

#服务端
[root@nfs ~]# cat /etc/exports
/data/ 172.16.1.0/24(rw)

#客户端
[root@web01 ~]# mount -t nfs 172.16.1.31:/data/ /upload/ 

标签:rsync,同步,sersync,--,app,实时,nfs,Linux,root
From: https://www.cnblogs.com/world-of-yuan/p/17083928.html

相关文章

  • linux离线部署python项目
    离线部署直接在内网隔离的环境中。不能直接pipinstall或者apt-getinstall(Ubuntu、Debain)准备:与离线环境相同版本的服务器Python(web)项目依赖pipwheel强大的pip命......
  • linux 操作系统升级 Python 3
    #进入python官网下载对应版本,比如:Python-3.7.12[root@localhost~]#wget​​https://www.python.org/ftp/python/3.7.12/Python-3.7.12.tgz​​#安装依赖包[root@localh......
  • linux 安装 elasticsearch
    下载#注意下载版本cd/usr/local/srcwgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.0.tar.gz2、安装cd/usr/local/srctar-xvfelastics......
  • linux查看进程号、端口号、服务名互查信息
    1、已知程序名称查看进程号ps-ef|grep程序名称##或者ps-aux|grep程序名称pgrep-l程序名称......
  • linux 安装 RocketMQ
    参考: ​​https://blog.csdn.net/wsjzzcbq/article/details/125562966​​1、下载安装包后,将安装包上传到linux2、创建RocketMQ安装目录mkdir-p/usr/local/rocketmq3......
  • 用Linux系统设置共享上网
    环境:一台Linux机器单网卡,一台window机器单网卡,一个四口集线器。背景:房东只提供了一条上网线,并且限定了只能用一个网卡上网(就是我的Linux机器的网卡)。目的:通过Linux共......
  • Rsync 远程同步数据备份
    拓补图:推荐步骤:一。在Centos1服务器安装rsync服务创建创建同步源名字www,同步源根目录为/www,同步数据验证账户为bob密码为pwd@123,将数据同步到服务器本地/benet目......
  • wsl2和ArchLinux的安装
    版权声明:本文章参考了哔哩哔哩稿件BV1sW411v7VZ,如侵权请主动联系删除1.Wsl2的安装启用适用于Linux的Windows子系统在终端运行:dism.exe/online/enable-fea......
  • Linux系统日常进程管理与监控
    1.进程是什么进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。在LINUX系统中进程ID用PID表示,范围从0-32768,其中PI......
  • linux load排查脚本
    Loadaverage的值来源在使用top命令检查系统负载的时候,可以看到Loadaverages字段,但是这个字段并不是表示CPU的繁忙程度,而是度量系统整体负载。Loadaverages采样是从/pr......