rsync+nfs+sersync实战案例(代码片段)

xmtxh xmtxh     2023-04-24     727

关键词:

回顾:

1.rsync

统一备份各个服务器的配置文件或重要文件
    系统配置文件
    日志文件
        系统日志文件
            messages、secure、cron
        服务日志文件
            access_log、access.log
        服务配置文件
            /etc/rsyncd.conf、/etc/exports...    

2.NFS
网络文件系统,提供共享存储服务
3.sersync
提供实时同步服务

 

实验组合:

1.rsync

实验环境:
    rsync服务器
    rsync客户机
实验需求:
rsync服务器提供同步模块,rsync客户端可以通过推拉实现数据备份

2.nfs

实验环境:
    nfs服务器
    nfs客户机(apache)
实验需求:
    nfs服务器提供共享目录
    客户机通过挂载共享目录实现web页面的访问

3.rsync+nfs

实验环境:
    rsync服务器
    nfs服务器(rsync客户机)
    nfs客户机(apache)
实验需求:
    rsync服务器提供同步模块
    nfs服务器提供共享目录
    客户机通过挂载共享目录,上传文件至nfs服务器
    nfs服务器通过手动rsync命令将文件推送到rsync服务器上

4.rsync+sersync+nfs

实验环境:
    rsync服务器
    nfs服务器(rsync客户机)
    nfs客户机(apache)
实验需求:
    rsync服务器提供同步模块
    nfs服务器提供共享目录
    客户机通过挂载共享目录,上传文件至nfs服务器
    nfs服务器通过sersync实时同步数据到rsync服务器
    模拟nfs服务器故障,通过将rsync服务器变成nfs服务器,实现故障切换

 

完整实验文档

实验拓扑

实验需求

实验步骤

 

实验组合一:

实验步骤:

1.搭建rsync服务器

1)安装rsync软件包
[root@backup ~]# yum install -y rsync

2)修改配置文件rsyncd.conf
[root@backup ~]# cat >/etc/rsyncd.conf<<EOF
uid=rsync                              
gid=rsync                         
port=873                          
fake super=yes                    
use chroot=no                       
max connection=200                
timeout=600                       
ignore errors                     
read only=false                   
list = false                              
auth users=rsync_backup           
secrets file=/etc/rsync.passwd    
log file=/var/log/rsyncd.log     
#!module         
[backup]                               
comment = commit      
path = /backup    
EOF  

3)创建环境
[root@backup ~]# useradd -M -s /sbin/nologin rsync
[root@backup ~]# mkdir /backup
[root@backup ~]# chown -R rsync.rsync /backup/
[root@backup ~]# echo rsync_backup:1 > /etc/rsync.passwd
[root@backup ~]# chmod 600 /etc/rsync.passwd 

4)启动服务
[root@backup ~]# systemctl start rsyncd && systemctl enable rsyncd

5)验证
客户端:
    安装rsync软件包
    [root@nfs ~]# yum install -y rsync
    实验rsync -avz 来推送
    [root@nfs ~]# rsync -avz /etc/passwd rsync_backup@172.16.1.51::backup
    可以使用两种方式实现免密
        创建password-file
        [root@nfs ~]# echo 1 >/etc/rsync.passwd
        [root@nfs ~]# chmod 600 /etc/rsync.passwd
        [root@nfs ~]# rsync -avz --password-file=/etc/rsync.passwd
        给环境变量RSYNC_PASSWORD赋值
        [root@nfs ~]# export RSYNC_PASSWORD=1

 

实验组合二:

2.搭建NFS服务器

1).安装nfs-utils,rpcbind软件包
[root@nfs ~]# yum install -y nfs-utils.x86_64

2).启动nfs和rpcbind服务
[root@nfs ~]# systemctl start rpcbind nfs && systemctl enable nfs
注意:
    1.启动顺序,先rpcbind,再nfs
    2.rpcbind开启之后,就是永久启动,所以只需将nfs设置为永久启动

3).修改配置文件/etc/exports
echo "/data 172.16.1.0/24(rw,all_squash,sync)" > /etc/exports

4).创建环境
[root@nfs ~]# mkdir -p /data 
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/

5).重载配置文件
[root@nfs ~]# exports -arv

6).验证
客户端:
安装nfs-utils
[root@web01 ~]# yum install -y nfs-utils.x86_64
启动rpcbind服务
[root@web01 ~]# systemctl start rpcbind
查看nfs服务端挂载信息
[root@web02 ~]# showmount -e 172.16.1.41
Export list for 172.16.1.41:
/data 172.16.1.0/24
临时挂载nfs共享存储
[root@web01 ~]# mount 172.16.1.41:/data /var/www/html 
永久挂载
[root@web01 ~]# echo 172.16.1.41:/data /var/www/html nfs defaults 0 0 >> /etc/fstab 
[root@web01 ~]# mount -a

 

实验组合三:

rsync+nfs

web01(nfs客户端的)配置

1)安装httpd
yum install -y httpd
2)启动httpd服务
systemctl start httpd && systemctl enable httpd
3)将nfs共享目录挂载到/var/www/html
echo 172.16.1.41:/data /var/www/html nfs defaults 0 0 >> /etc/fstab 
mount -a

注意:
这里添加多台web服务器,操作步骤是一模一样

问题:如果nfs服务故障,会导致所有web服务器的页面都无法访问
解决方案:
1.将nfs共享目录里的内容,推送至rsync服务器
2.将rsync服务器临时变成nfs服务器
问题:nfs和rsync的程序用户不一致,会导致权限问题(甚至web服务器的程序用户也不一样)
解决方案:
将nfs rsync web的程序用户统一即可
操作步骤:
rsync服务器
[root@backup ~]# groupadd -g 666 www
[root@backup ~]# useradd -u 666 -g 666 -M -s /sbin/nologin www
[root@backup ~]# sed -ri s#(.*)rsync$#1www#g /etc/rsyncd.conf
[root@backup ~]# chown -R www.www /backup/ /data/
[root@nfs ~]# echo "/data 172.16.1.0/24(rw,all_squash,sync,anonuid=666,anongid=666)" > /etc/exports
[root@nfs ~]# exportfs -arv
[root@backup ~]# systemctl restart rsyncd

nfs服务器
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u 666 -g 666 -M -s /sbin/nologin www
[root@nfs ~]# chown -R www.www /data/
[root@nfs ~]# echo "/data 172.16.1.0/24(rw,all_squash,sync,anonuid=666,anongid=666)" > /etc/exports
[root@nfs ~]# exportfs -arv

web服务器
[root@web01 ~]# groupadd -g 666 www
[root@web01 ~]# useradd -u 666 -g 666 -M -s /sbin/nologin www

缺点:需要人为手动将nfs的共享目录的内容推送到rsync服务器,实现同步

 

4.sersync

需要在nfs服务器上安装sersync,对nfs共享目录进行实时监控,当出现文件的增加,删除,修改后,自动触发rsync

将变换后的内容推送至rsync服务器,实现实时同步

1).安装sersync
#sersync需要依赖inotify和rsync,所以需要安装对应软件
[root@nfs ~]# yum install rsync inotify-tools -y

#安装sersync
[root@nfs ~]# mkdir /server/tools -p 
[root@nfs ~]# cd /server/tools/
[root@nfs tools]# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@nfs tools]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz 
[root@nfs tools]# mv GNU-Linux-x86/ /usr/local/sersync
[root@nfs tools]# cd /usr/local/sersync/
2).修改配置文件
[root@nfs sersync]# vim 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="true"/> #监控对象 false改成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="true"/>
        <moveFrom start="true"/>
        <moveTo start="true"/>
        <attrib start="true"/>
        <modify start="true"/>
    </inotify>

    <sersync>
        <localpath watch="/data">
            <remote ip="172.16.1.51" name="data"/>
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
        </localpath>
        <rsync>
            <commonParams params="-az"/>  #命令选项
            <auth start="true" users="nfs_backup" passwordfile="/etc/nfs.passwd"/> #rsync的认证信息
            <userDefinedPort start="false" port="874"/><!-- port=874 -->
            <timeout start="false" time="100"/><!-- timeout=100 -->
            <ssh start="false"/>
        </rsync>
[root@nfs sersync]# echo "1" >/etc/nfs.passwd 
[root@nfs sersync]# chmod 600 /etc/nfs.passwd 

3)启动服务
#将sersync2执行脚本链接到系统路径
[root@nfs sersync]# ln -s /usr/local/sersync/sersync2 /usr/bin/
[root@nfs sersync]# 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命令推送一遍
c参数-n: 指定开启守护线程的数量,默认为10个
参数-o:指定配置文件,默认使用confxml.xml文件
参数-m:单独启用其他模块,使用 -m refreshCDN 开启刷新CDN模块
参数-m:单独启用其他模块,使用 -m socket 开启socket模块
参数-m:单独启用其他模块,使用 -m http 开启http模块
不加-m参数,则默认执行同步程序
________________________________________________________________
[root@nfs sersync]# sersync2 -dro /usr/local/sersync/confxml.xml 

[sersync+rsync]文件同步部署实战(代码片段)

...。研究了下大家的主流同步方案一般是rsync+inotify和rsync+sersync, 本文这里使用sersync的方案做为实验。基本大纲: 1.基本原理概述 2.实验环境准备 3.实验的操作步骤以及结论  一:基本原理概述 我这里的... 查看详情

基于sersync实现实时同步(代码片段)

sersync是国人二次开发的一块同步软件。整合了rsync和inotify模块,可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字;并使用rsync进行同步,在同步的时候,只同步发生变化的这个... 查看详情

自动化部署安装nfs+rsync+sersync+nfs客户端+smtp

...录来做后端存储rsync对nfs服务器的目录做实时备份,使用sersync+rsync,每天定时备份配置文件,本地保存7天,rsync服务器上保存180天。使用管理服务器管理所有的设备。分发hosts文件,管理服务器上搭建yum仓库,管理服务器能连接... 查看详情

nfs共享目录及sersync实时同步(代码片段)

...up配置1.安装服务2.修改配置文件3.创建目录及用户三.实现sersync实时同步1.nfs安装服务2.实时同步创建密码文件和授权四.nfs共享存储配置五.web客户端配置一.要求web01,web02中的目录挂载到nfs的目录下下,并且把nfs的目录实时同步到ba... 查看详情

rsync实时备份工具(代码片段)

...能失效,可以把命令放到/etc/rc.local里面开机自启。三、sersync的使用3.1.1sersync介绍一、实时备份介绍1.1.1什么是实时备份:实时备份就是利用实时工具对重要数据和文件变化进行一个实时的监控与备份,一发生变化,我就备份。1.1.... 查看详情

rsync+sersync实现数据时时备份

CentOS6.6中rsync+sersync实现数据实时备份注意:rsync的daemon模式已提前配置好了,只需要配置sersync即可。一.基本环境系统版本主机名IP地址角色备份/监控目录CentOS6.6backup10.0.0.10rsync服务端/backupCentOS6.6nfs-server10.0.0.7rsync客户端/data二.se... 查看详情

sersync的服务设置

sersync可以理解为建立在inotify基础上的加强版,它可以更加细腻和完美的实现inotify和rsync的能力.使用sersync就必须安装inotify和rsync.1.1环境nfs客户端和backup服务端默认iptables,xelinux已经关闭1.1.1nfs客户端[[email protected]~]#uname-aLinuxnfs0... 查看详情

实时同步sersync(代码片段)

实时同步sersync实战什么是实时同步实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器。sersync和rsync+inotify对比提到数据同步就必然会谈到rsync,一般简单的服务器数据传输会... 查看详情

sersync配合rsync实时同步备份(代码片段)

title:sersync配合rsync实时同步备份tags:sersync,rsync,同步grammar_cjkRuby:truesersync配合rsync实时同步备份1.sersync介绍sersync是基于Inotify开发的,类似于Inotify-tools的工具,基本上Inotify能实现的功能,sersync也具备,因此,sersync也可以实时监听... 查看详情

5sersync实时同步实战(代码片段)

...进行一次同步操作,或其他操作。4.实时同步工具选择,有sersync(√)、i 查看详情

rsync+crond企业实战案例(代码片段)

【DB数据同步,带宽占满,导致用户无法上网rsyncscpftp限速功能。主要提一下rsync–bwlimit(限速)】下面进入正题:企业案例rsync+crond定时备份某公司里有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在... 查看详情

sersync+rsync实现实时同步备份(代码片段)

第一个里程:下载安装sersync软件先进行软件下载,把软件包上传到系统中unzipsersync_installdir_64bit.zipcdsersync_installdir_64bitmvsersync/usr/local/tree第二个里程:编写sersync配置文件[[email protected]sersync]#cd/usr/local/sersync/conf/[[e 查看详情

sersync使用方法(代码片段)

sersync同步实战sersync是基于inotify和srync的二次开发,代码托管在github上面在rsync的客户端上安装,下载地址:https://raw.githubusercontent.com/wsgzao/sersync/master/sersync2.5.4_64bit_binary_stable_final.tar.gz单点故障:没有做集群的机器,挂了一台全... 查看详情

sersync+rsync文件实时同步操作配置(代码片段)

1、先安装好rsyncd服务端,并配置可以从客户端将数据同步到服务端,也可以将服务端的数据拉取到本地Rsync服务端配置如下:1.1、创建rsyncd.conf配置文件Vim/etc/rsyncd.conf配置信息如下#Rsyncserver##rsyncd.confstart##uid=rsync这个用户就是对... 查看详情

ansbile--playbook剧本案例(代码片段)

通过ansible批量管理三台服务器,使三台服务器实现备份,web01、nfs、backup,把web和nfs上的重要文件被分到backup上,主机ip地址分配如下CharacterIP地址IP地址主机名Rsync--server172.16.1.4110.0.0.41backup-rsync-41NFS-client172.16.1.3110.0.0.31Nfs01-31Web0... 查看详情

rsync+sersync实现数据实时同步(代码片段)

[toc]背景新公司需要我做代码发布的活,一开始觉得没什么,不就是把文件丢上去重启一下服务就好了嘛。结果每天发布的次数可以达到十几次。像nodejs的,有3台服务器,每次都要传3次,然后做3次重启操作。大好的青春不能浪... 查看详情

rsync&sersyncs两台服务器双向文件同步实现(代码片段)

...前置机-->业务网7.2业务网-->业务网前置机8.安装`sersync`8.1下载整个`masterzip`8.2 查看详情

nfs实时数据同步(代码片段)

常见方案:inotify、sersync、rsync等docker方式dockerpullquay.io/stephenh/mirror:1.3.8主server192.168.0.5dockerrun-d-v/backup:/data-p49172:49172mirror:1.3.8server从server192.168.0.6dockerrun-d-v/data:/datamirror:1. 查看详情