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服务器
)安装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实战案例的更多相关文章
- rsync nfs 实时同步,结合实战
目录 rsync nfs 实时同步,实战 一.部署rsync服务端(backup) 二.部署rsync客户端(nfs,web01) 三.部署web代码(web01) 四.NFS服务端部署(nfs) 五 ...
- 【NFS项目实战二】NFS共享数据的时时同步推送备份
[NFS项目实战二]NFS共享数据的时时同步推送备份 标签(空格分隔): Linux服务搭建-陈思齐 ---本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品, ...
- ansible-playbook 实战案例 全网备份 实时备份
目录 ansible-playbook 基础介绍 1.YAML三板斧 2. ansible playbook 安装apache 示例 案例 全网备份 实时备份 环境规划 目录规划 base.yaml ...
- 企业Shell面试题及企业运维实战案例(三)
1.企业Shell面试题1:批量生成随机字符文件名案例 使用for循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串oldboy,名称示例如下: ...
- rsync nfs web01总结
目录 rsync nfs web01总结 要求 部署rsync服务端(172.16.1.41) 部署rsync客户端(172.16.1.31.172.16.1.7) 部署web代码 NFS服务端部署 ...
- 实时同步sersync实战
目录 实时同步sersync实战 什么是实时同步 sersync和rsync+inotify对比 sersync项目实战 安装rsync的服务端(backup) NFS服务端部署sersync 实时同 ...
- 18个awk的经典实战案例
介绍 这些案例是我收集起来的,大多都是我自己遇到过的,有些比较经典,有些比较具有代表性. 这些awk案例我也录了相关视频的讲解awk 18个经典实战案例精讲,欢迎大家去瞅瞅. 插入几个新字段 在&qu ...
- Rsync备份服务实战
目录 Rsync备份服务实战 一.Rsync 二.rsync的应用场景 1.Rync的数据同步模式 2.rsync的三种模式 三.rsync配置服务端客户端 四.rsync实战 实战一 报错解决方法: ...
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
随机推荐
- zoj 2314Reactor Cooling
秘制神奇上下界网络流%%% 什么什么有(木)源汇可行流什么的,,看不懂(一下纯属个人sb言论) 看了半天知道点,一个点u,从S连到u的流量是全部流入u的下界,u到T是全部流出u的下界和.(进去出来的约 ...
- 十九、CI框架之数据库操作delete用法
一.代码如下: 二.执行f访问 三.查看数据库,已经id=15的数据已经被删掉了 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦, ...
- 学术Essay写作关键:避免冗余
“冗余”(Redundant)意味着多余的.不必要的.在Essay写作中,redundant expression(即冗余表达)指的是在一个短语或一句句子中有一个单词完全重复了同一短语或句子中的另一个 ...
- 直线电机设计与优化(TFLM,FSLM)论文阅读笔记3
2.21-(2.7论文引出)傅里叶对开关磁通电机建模 Modeling of Flux Switching Permanent Magnet Machines With Fourier Analysi ...
- Android自定义View——仿滴滴出行十大司机评选活动说明
滴滴出行原版图 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 仿图 ? ? ? ? ? ? 1.分 ...
- textare限制拖动;提示文字(点击消失,不输入恢复提示信息)
1.在textarea添加一个样式:style="resize:none;" 2.提示文字(鼠标点击的时候消失,不输入恢复提示信息): <input name="t ...
- Win10 MySQL5.7中文乱码问题
https://blog.csdn.net/hh___56789/article/details/87900923 最好把 utf8 都换成utf8mb4 ,以免以后遇到意想不到的错误.utf8有漏洞 ...
- [前端] VUE基础 (9) (element-ui、axios、Vuex)
一.element-ui的使用 官方网页:https://element.eleme.cn/#/zh-CN 1.安装element-ui (venv) D:\pycharm_workspace\vue ...
- JNI传递修改自定义Java Class数组数据
声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 结合前面讲的2篇关于JNI的文章,这里直接把代码贴上,主要是要知道如果传递自定义Class Array的时 ...
- ACwing算法基础课听课笔记(第一章,基础算法一)(二分)
二分法: 在看这个视频前,我对于二分法是一头雾水的,又加上这个算法平常从来没写过所以打了一年了还没正式搞过.视频提到ACwing上的一道题,我用自以为聪明的方法去做,结果TLE了,实在丢人,不说了,开 ...