RSYNC+SERSYNC实时同步(linuxR7)

Rsync(remote sync)

一款数据镜像备份软件,可以根据数据的变化进行差异备份。
它可以进行本地数据或远程数据的复制,也可以使用 SSH 安全隧道进行加密数据传输。

原理:Rsync服务器端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的。

Rsync默认使用TCP协议,监听873端口。

Rsync主要进行两个动作
推Push:将本地的数据推送到 备份服务器。
拉Pull:将备份服务器的数据拉取到本地。

rsync有三种传输模式

一,本地传输
二,远程传输 ssh协议 :
三,守护进程 rsync协议 ::

一,本地传输:
单个主机目录间的数据拷贝,类似于cp
yum install rsync -y
rsync -avz /root/file.txt /tmp/

二,远程传输:
1.借助ssh协议进行传输,(意味着他需要知道对端的用户名和密码)
Push: rsync [OPTION…] SRC… [USER@]HOST:DEST
Pull: rsync [OPTION…] [USER@]HOST:SRC… [DEST]
    
2.将本地/root/file.txt文件推送到 172.16.1.31 服务器的 /opt 目录,使用的是 31 服务器的 root用户。
rsync -avz /root/file.txt root@172.16.1.31:/opt
拉取远程服务器 172.16.1.31 /opt目录下的file.txt 文件 至 本地 /mnt 目录
rsync -avz root@172.16.1.31:/opt/file.txt /mnt/
  
3.推送目录区别
rsync -avz /etc/ root@172.16.1.31:/opt/ #添加/表示推送目录下的所有内容
rsync -avz /etc root@172.16.1.31:/opt #不添加/表示推送该目录本身,以及目录下的内容

远程传输特点:
依托对端主机的用户身份权限:
1.使用系统root用户 ( 不安全 )
2.使用系统的普通用户 ( 会出现权限不够的情况 )

三,守护进程:
可以不使用系统用户,使用的是一个虚拟的用户(不存在的用户) 来实现推送。
服务:运行在我们的后台,持续提供服务支持
Push:
1.使用172.16.1.31 推送 client.txt 文件至 备份服务器 41 的 backup模块------->>> ::
rsync -avz client.txt rsync_backup@172.16.1.41::backup

Pull:
2.拉取 172.16.1.41 备份服务器 backup模块下的数据
rsync -avz rsync_backup@172.16.1.41::backup /opt

配置详解
cat /etc/rsyncd.conf

uid = rsync — 表示管理传输数据用户信息
gid = rsync — 表示管理传输数据用户组信息
port = 873 — 指定服务端口信息
#fake super = yes — 伪装成超级管理员
守护进程备份数据需要修改数据权限, 具有修改权限能力
use chroot = no — 实现安全配置 实现假根安全配置
max connections = 200 — 设置服务最大连接数 (并发连接数)
timeout = 300 — 设置有一个超时时间
pid file = /var/run/rsyncd.pid — 创建出pid进程号码文件
1. 可以根据文件号码信息快速停止进程
2. 根据文件存在与否判断服务运行状态
lock file = /var/run/rsync.lock — 根据连接数限制, 给服务网络连接上锁
log file = /var/log/rsyncd.log — 备份服务日志文件
ignore errors = yes — 忽略错误信息 不是特别严重网络错误, 会先忽略, 保证数据传输
read only = false — 确认备份目录是否为只读状态
list = false   能否被列出
hosts allow = 172.16.1.0/24 — 设置白名单功能
hosts deny = 0.0.0.0/32 — 设置黑名单功能
auth users = rsync_backup — 定义虚拟认证用户
secrets file = /etc/rsync.password — 定义认证用户密码文件

[backup] — 一个模块 对应一个备份目录
comment = “backup dir by oldboy” — 模块功能描述
path = /backup — 定义一个备份数据目录 扩展配置参数: reverse lookup = no — 是否关闭服务反向解析过程

根据配置文件解读,我们发现还需要做一些初始化的操作:
创建Rsync进程运行的用户 ( rsync 服务器上操作)

useradd -M -s /sbin/nologin rsync(创建进程用户)
id rsync
uid=1008(rsync) gid=1008(rsync)=1008(rsync)

定义虚拟用户名rsync_bakcup的密码,服务器与客户端均需建立,进行了ssh密钥认证可跳过

echo "rsync_backup:123456" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd

–password-file=/etc/rsync.password #免密

创建存储的数据的目录 /backup

mkdir /backup
chown -R rsync.rsync /backup

Sersync

基于inotify开发的,类似于inotify-tools的工具,可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或者某一个目录的名字。

RSYNC+SERSYNC实时同步

原理步骤:

  1. 在同步服务器(Master)上开启sersync服务,sersync负载监控配置路径中的文件系统事件变化。
  2. 调用rsync命令把更新的文件同步到目标服务器(S1 和 S2)。
  3. 需要在主服务器配置sersync,在同步目标服务器配置rsync server。

环境要求:
所有接受数据的主机,开启 rsync 服务,开放 873端口,随时等待主机发送数据。主机实现ssh登录无密登录其他节点。

实现操作流程:
1.所有节点安装rsync
yum install rsync

2.配置 rsyncd.conf,并同步到其他节点。
3.其他节点上分别启动 rsync 服务,开启端口。
4.在发布节点(主机)上,安装Sersync工具。(工具无yum源)
5.编辑sersync的配置文件
示例:

<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
    <host hostip="localhost" port="8008"></host>
    <debug start="false"/>
    <fileSystem xfs="true"/>
    <filter start="false">
	<exclude expression="(.*)\.svn"></exclude>
	<exclude expression="(.*)\.gz"></exclude>
	<exclude expression="^info/*"></exclude>
	<exclude expression="^static/*"></exclude>
    </filter>
    <inotify>
	<delete start="true"/>
	<createFolder start="true"/>
	<createFile start="true"/>
	<closeWrite start="false"/>
	<moveFrom start="true"/>
	<moveTo start="true"/>
	<attrib start="false"/>
	<modify start="true"/>
    </inotify>

    <sersync>
	<localpath watch="/data/web-data/news.com">
	    <remote ip="192.168.10.21" name="news.com"/>  #name即rsync模块名
	    <remote ip="192.168.10.22" name="news.com"/>
	    <remote ip="192.168.10.131" name="news.com"/>
	</localpath>
	<rsync>
	    <commonParams params="-av"/>

6.查看应用程序的帮助手册, 按照建议,先修改内核相关参数
sersync2 -h

7.手动执行 完全镜像同步
/usr/local/sersync/sersync2 -r -o /usr/local/sersync/confxml.xml #-r:在监控前,将监控目录与远程主机用rsync命令推送一遍,-o:指定配置文件,默认使用confxml.xml文件

8.开始实时监控,进入 实时同步模式
/usr/local/sersync/sersync2 -d -n 10 -o /usr/local/sersync/confxml.xml #-n: 指定开启守护线程的数量,默认为10个

ps -aux 查看监控进程。 使用 kill 的方式停止监控

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值