rsync+nfs+sersync实战案例

回顾:

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软件包
[[email protected] ~]# yum install -y rsync

2)修改配置文件rsyncd.conf
[[email protected] ~]# 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)创建环境
[[email protected] ~]# useradd -M -s /sbin/nologin rsync
[[email protected] ~]# mkdir /backup
[[email protected] ~]# chown -R rsync.rsync /backup/
[[email protected] ~]# echo ‘rsync_backup:1‘ > /etc/rsync.passwd
[[email protected] ~]# chmod 600 /etc/rsync.passwd 

4)启动服务
[[email protected] ~]# systemctl start rsyncd && systemctl enable rsyncd

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

实验组合二:

2.搭建NFS服务器

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

2).启动nfs和rpcbind服务
[[email protected] ~]# 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).创建环境
[[email protected] ~]# mkdir -p /data
[[email protected] ~]# chown -R nfsnobody.nfsnobody /data/

5).重载配置文件
[[email protected] ~]# exports -arv

6).验证
客户端:
安装nfs-utils
[[email protected] ~]# yum install -y nfs-utils.x86_64
启动rpcbind服务
[[email protected] ~]# systemctl start rpcbind
查看nfs服务端挂载信息
[[email protected] ~]# showmount -e 172.16.1.41
Export list for 172.16.1.41:
/data 172.16.1.0/24
临时挂载nfs共享存储
[[email protected] ~]# mount 172.16.1.41:/data /var/www/html
永久挂载
[[email protected] ~]# echo ‘172.16.1.41:/data /var/www/html nfs defaults 0 0‘ >> /etc/fstab
[[email protected] ~]# 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服务器
[[email protected] ~]# groupadd -g 666 www
[[email protected] ~]# useradd -u 666 -g 666 -M -s /sbin/nologin www
[[email protected] ~]# sed -ri ‘s#(.*)rsync$#\1www#g‘ /etc/rsyncd.conf
[[email protected] ~]# chown -R www.www /backup/ /data/
[[email protected] ~]# echo "/data 172.16.1.0/24(rw,all_squash,sync,anonuid=666,anongid=666)" > /etc/exports
[[email protected] ~]# exportfs -arv
[[email protected] ~]# systemctl restart rsyncd

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

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

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

4.sersync

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

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

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

#安装sersync
[[email protected] ~]# mkdir /server/tools -p
[[email protected] ~]# cd /server/tools/
[[email protected] tools]# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz
[[email protected] tools]# tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
[[email protected] tools]# mv GNU-Linux-x86/ /usr/local/sersync
[[email protected] tools]# cd /usr/local/sersync/
2).修改配置文件
[[email protected] 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>
[[email protected] sersync]# echo "1" >/etc/nfs.passwd
[[email protected] sersync]# chmod 600 /etc/nfs.passwd 

3)启动服务
#将sersync2执行脚本链接到系统路径
[[email protected] sersync]# ln -s /usr/local/sersync/sersync2 /usr/bin/
[[email protected] 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参数,则默认执行同步程序
________________________________________________________________
[[email protected] sersync]# sersync2 -dro /usr/local/sersync/confxml.xml 

原文地址:https://www.cnblogs.com/xmtxh/p/12229931.html

时间: 2024-11-01 12:19:51

rsync+nfs+sersync实战案例的相关文章

rsync+nfs企业实战案例

某公司里有一台NFS服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他 机器上做一个周期性定时备份.要求如下: 每天晚上00点整在NFS服务器nfs01上打包备份网站程序目录等并通过rsync命令推送到备份服务器backup上备份保存(备份思路 可以是先在本地按IP地址+日期打包,然后再利用rsync推送到备份服务器上). 具体要求如下: 1)NFS服务器nfs01和备份服务器backup的备份目录必须都为/backup: 2)NFS服务器站点目录假定为(/va

rsync+crond企业实战案例

[DB 数据同步,带宽占满,导致用户无法上网rsync scp ftp 限速功能.主要提一下rsync –bwlimit(限速)]下面进入正题: 企业案例rsync+crond定时备份某公司里有一台web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性的定时备份.要求如下:每天晚上00点整在web服务器A上打包备份网站程序目录并通过rsync命令推送到服务器B上备份保留(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)

rsync nfs 实时同步,结合实战

目录 rsync nfs 实时同步,实战 一.部署rsync服务端(backup) 二.部署rsync客户端(nfs,web01) 三.部署web代码(web01) 四.NFS服务端部署(nfs) 五.部署nfs备胎服务端(nfs) 六.部署nfs的客户端web01(web01) 七.backup实时同步nfs的data目录 八.定时任务并发邮件 九.NFS服务端部署sersync实时同步(nfs) 十.切换备胎backup(web01) rsync nfs 实时同步,实战 一.部署rsync服

sersync+rsync实时同步配置案例

目前业内比较靠谱的同步解决方案有: rsync+inotify-tools,Openduckbill+inotify-tools和rsync+sersync 前两者由于是基于脚本语言编写,所以规范程度,执行效率相对rsync+sersync就稍微弱一些. sersync是使用c++编写,基于boost1.43.0,inotify api,rsync command开发,主要用于服务器同步,web镜像等功能.其对linux系统文件系统产生的临时文件和重复的文件操作能够进行过滤,所以在结合rsync

inotify+rsync、sersync 实时备份

作者:Georgekai 归档:学习笔记 2018/1/26 inotify+rsync.sersync 实时备份 1.1 定时备份缺点: 1. 浪费系统性能(数据没变化到时间也会备份) 2. 数据安全性不高(定时任务最短1分钟同步一次,如果1分钟内数据变化后,服务器宕机了,就 会丢失数据) 1.2 inotify+rsync 1.2.1 inotify是什么? 1. 是一种强大的,细粒度的,异步的文件系统事件监控系列 2. linux内核从2.6.13起,加入了inotify的支持 3. 作用

运维实战案例之“Argument list too long”错误与解决方法

作为一名运维人员来说,这个错误并不陌生,在执行rm.cp.mv等命令时,如果要操作的文件数很多,可能会使用通配符批量处理大量文件,这时就可能会出现"Argument list too long"这个问题了. 1.错误现象 这是一台Mysql数据库服务器,在系统中运行了很多定时任务,今天通过crontab命令又添加了一个计划任务,退出时发生了如下报错: #crontab -e 编辑完成后,保存退出,就出现下面如下图所示错误: 2.解决思路 根据上面报错的提示信息,基本判定是磁盘空间满了,

Linux系统shell脚本编程——生产实战案例

Linux系统shell脚本编程--生产实战案例     在日常的生产环境中,可能会遇到需要批量检查内网目前在线的主机IP地址有哪些,还可能需要检查这些在线的主机哪些端口是开放状态,因此依靠手工来检查是可以实现,但比较费时费力,所以需要结合shell脚本来实现批量检查的功能,那么今天就来做个小小的实验. 1.开发脚本前准备 一般大家都知道,测试主机是否在线,常用的命令无非就是ping.nmap,因此,首先找一个地址来测试下ping命令的效果 [[email protected] scripts]

运维实战案例之文件已删除但空间不释放问题解析

1.错误现象 运维的监控系统发来通知,报告一台服务器空间满了,登陆服务器查看,根分区确实没有空间了,如下图所示: 这里首先说明一下服务器的一些删除策略,由于Linux没有回收站功能,我们的线上服务器所有要删除的文件都会首先移动到系统/tmp目录下,然后定期清除/tmp目录下的数据.这个策略本身没有问题,但是通过检查发现这台服务器的系统分区中并没有单独划分/tmp分区,这样/tmp下的数据其实是占用了根分区的空间.既然找到了问题,那么删除/tmp目录下一些大数据即可,执行如下命令,检查/tmp下最

《Web渗透技术及实战案例解析》pdf

下载地址:网盘下载 内容简介 编辑 本书从Web渗透的专业角度,结合网络安全中的实际案例,图文并茂地再现Web渗透的精彩过程.本书共分7章,由浅入深地介绍和分析了目前网络流行的Web渗透攻击方法和手段,并结合作者多年的网络安全实践经验给出了相对应的安全防范措施,对一些经典案例还给出了经验总结和技巧,通过阅读本书可以快速掌握目前Web渗透的主流技术.本书最大的特色就是实用和实战性强,思维灵活.内容主要包括Web渗透必备技术.Google黑客技术.文件上传渗透技术.SQL注入.高级渗透技术.0day