回顾:

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服务器

)安装rsync软件包
[root@backup ~]# yum install -y rsync )修改配置文件rsyncd.conf
[root@backup ~]# cat >/etc/rsyncd.conf<<EOF
uid=rsync
gid=rsync
port=
fake super=yes
use chroot=no
max connection=
timeout=
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 )创建环境
[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 /etc/rsync.passwd )启动服务
[root@backup ~]# systemctl start rsyncd && systemctl enable rsyncd )验证
客户端:
安装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 '' >/etc/rsync.passwd
[root@nfs ~]# chmod /etc/rsync.passwd
[root@nfs ~]# rsync -avz --password-file=/etc/rsync.passwd
给环境变量RSYNC_PASSWORD赋值
[root@nfs ~]# export RSYNC_PASSWORD=

实验组合二:

2.搭建NFS服务器

).安装nfs-utils,rpcbind软件包
[root@nfs ~]# yum install -y nfs-utils.x86_64 ).启动nfs和rpcbind服务
[root@nfs ~]# systemctl start rpcbind nfs && systemctl enable nfs
注意:
.启动顺序,先rpcbind,再nfs
.rpcbind开启之后,就是永久启动,所以只需将nfs设置为永久启动 ).修改配置文件/etc/exports
echo "/data 172.16.1.0/24(rw,all_squash,sync)" > /etc/exports ).创建环境
[root@nfs ~]# mkdir -p /data
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data/ ).重载配置文件
[root@nfs ~]# exports -arv ).验证
客户端:
安装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/
临时挂载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客户端的)配置

)安装httpd
yum install -y httpd
)启动httpd服务
systemctl start httpd && systemctl enable httpd
)将nfs共享目录挂载到/var/www/html
echo '172.16.1.41:/data /var/www/html nfs defaults 0 0' >> /etc/fstab
mount -a 注意:
这里添加多台web服务器,操作步骤是一模一样 问题:如果nfs服务故障,会导致所有web服务器的页面都无法访问
解决方案:
.将nfs共享目录里的内容,推送至rsync服务器
.将rsync服务器临时变成nfs服务器
问题:nfs和rsync的程序用户不一致,会导致权限问题(甚至web服务器的程序用户也不一样)
解决方案:
将nfs rsync web的程序用户统一即可
操作步骤:
rsync服务器
[root@backup ~]# groupadd -g www
[root@backup ~]# useradd -u -g -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 www
[root@nfs ~]# useradd -u -g -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 www
[root@web01 ~]# useradd -u -g -M -s /sbin/nologin www 缺点:需要人为手动将nfs的共享目录的内容推送到rsync服务器,实现同步

4.sersync

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

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

).安装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..4_64bit_binary_stable_final.tar.gz
[root@nfs tools]# mv GNU-Linux-x86/ /usr/local/sersync
[root@nfs tools]# cd /usr/local/sersync/
).修改配置文件
[root@nfs sersync]# vim confxml.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<head version="2.5">
<host hostip="localhost" port=""></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=""/><!-- port= -->
<timeout start="false" time=""/><!-- timeout= -->
<ssh start="false"/>
</rsync>
[root@nfs sersync]# echo "" >/etc/nfs.passwd
[root@nfs sersync]# chmod /etc/nfs.passwd )启动服务
#将sersync2执行脚本链接到系统路径
[root@nfs sersync]# ln -s /usr/local/sersync/sersync2 /usr/bin/
[root@nfs sersync]# sersync2 -h
set the system param
execute:echo > /proc/sys/fs/inotify/max_user_watches
execute:echo > /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

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

  1. rsync nfs 实时同步,结合实战

    目录 rsync nfs 实时同步,实战 一.部署rsync服务端(backup) 二.部署rsync客户端(nfs,web01) 三.部署web代码(web01) 四.NFS服务端部署(nfs) 五 ...

  2. 【NFS项目实战二】NFS共享数据的时时同步推送备份

    [NFS项目实战二]NFS共享数据的时时同步推送备份 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品, ...

  3. ansible-playbook 实战案例 全网备份 实时备份

    目录 ansible-playbook 基础介绍 1.YAML三板斧 2. ansible playbook 安装apache 示例 案例 全网备份 实时备份 环境规划 目录规划 base.yaml ...

  4. 企业Shell面试题及企业运维实战案例(三)

    1.企业Shell面试题1:批量生成随机字符文件名案例 使用for循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串oldboy,名称示例如下: ...

  5. rsync nfs web01总结

    目录 rsync nfs web01总结 要求 部署rsync服务端(172.16.1.41) 部署rsync客户端(172.16.1.31.172.16.1.7) 部署web代码 NFS服务端部署 ...

  6. 实时同步sersync实战

    目录 实时同步sersync实战 什么是实时同步 sersync和rsync+inotify对比 sersync项目实战 安装rsync的服务端(backup) NFS服务端部署sersync 实时同 ...

  7. 18个awk的经典实战案例

    介绍 这些案例是我收集起来的,大多都是我自己遇到过的,有些比较经典,有些比较具有代表性. 这些awk案例我也录了相关视频的讲解awk 18个经典实战案例精讲,欢迎大家去瞅瞅. 插入几个新字段 在&qu ...

  8. Rsync备份服务实战

    目录 Rsync备份服务实战 一.Rsync 二.rsync的应用场景 1.Rync的数据同步模式 2.rsync的三种模式 三.rsync配置服务端客户端 四.rsync实战 实战一 报错解决方法: ...

  9. 3.awk数组详解及企业实战案例

    awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...

随机推荐

  1. js 月份选择器(只选择到月)

    需要如下js https://pan.baidu.com/s/1c1T9wY0 在html中添加如下代码 <input onclick="setmonth(this)" /& ...

  2. HZNU-ACM寒假集训Day10小结 树-树形DP

    树形DP 加分二叉树 洛谷P1040 注意中序遍历的特点:当根节点编号k时,编号小于k的都在其左子树上,编号大于k的都在右子树 转移方程 f[i,j]=max{f[i,k-1]*f[k+1,j]+d[ ...

  3. UML-异常处理

    1.名词解释 缺陷(Fault):错误引起的行为.如:程序员拼写错了数据库名称 错误(Error):缺陷在运行系统中的表现.如:当使用拼写错误的名称调用数据库时,抛出数据库异常 故障(Failure) ...

  4. C++ 操作数据库类

    #pragma once #include <string> #include <windows.h> #include <algorithm> #include ...

  5. ubuntu下面嘚一些常用基本命令

    1)环境变量配置: 9 ~/.bashrcor ~/.bash_profile. sudo gedit ~/.bashrc 第一种sudo vim ~/.bashrc export PYTHONPAT ...

  6. openstack trove mongodb配置项

    systemLog.verbosity 组件的默认日志消息详细程度级别. 详细程度级别决定MongoDB输出的信息和调试消息量. 详细级别可以在0到5之间: 0是MongoDB的默认日志详细程度级别, ...

  7. html—表单控件

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. 13. react 基础 redux 的基本介绍 及 用 antd 编写 TodoList 的样式

    1. redux 简述 当 store 内的 数据进行变更的时候  多个组件感知到 store 内的数据变化 将会被自动更新 2. redux 工作流 Store  代表数据存储 (例如: 图书馆管理 ...

  9. ES6 之 第七种数据类型Symbol

    概述 为了减少对象的属性名冲突,ES6引入新的原始数据类型Symbol,JS的第七种数据类型. Symbol 能够保证每个属性的名字都是独一无二,这样就能从根本上防止属性名冲突. Symbol 值能够 ...

  10. VUE- 引用视频组件

    VUE- 引用视频组件 安装依赖 cnpm install vue-video-player -S cnpm install video.js -S 全局引用: 在main.js中 import Vu ...