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]=" ...
随机推荐
- python格式字符
- 计划任务常用在线工具-微服务信息整-seafile网盘-亿图操作-正则工具
正则工具 https://regex101.com/ http://www.regexp.cn/Regex 身份证匹配 ^(\\d{}|\d{})(\\d|[xX])$ \d{}[-9Xx]|\d{} ...
- 浅谈__slots__
__slots__在python中是扮演属性声明(Attribute Declaration)的角色,当然属性本身不用声明,只需要在使用前赋值即可,但是实际上,属性的应用远非在使用前赋值就行,所以有a ...
- Cassandra--Cassandra 安装
当前最新版本:3.11.3 https://cassandra.apache.org/doc/latest/getting_started/installing.html 前提条件 安装Java8. ...
- 洛谷 P1020 导弹拦截
题目传送门 解题思路: 其实就是求一遍最长不上升子序列和最长上升子序列 AC代码: #include<iostream> #include<cstdio> #include&l ...
- Python小数据池
一. id is == 二. 代码块 三. 小数据池 四. 总结 一,id,is,== 在Python中,id是什么?id是内存地址,那就有人问了,什么是内存地址呢? 你只要创建一个数据(对象)那么都 ...
- Java线程——线程池概念
什么是线程池? 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间.那么有没有一种办法使得线程可以复用, ...
- while read line do done < file
zzx@zzx120:~/test1$ cat file.txt 1122zzx@zzx120:~/test1$ cat ./read.sh #!/bin/bashwhile read line ...
- 34. docker swarm Dockerstack 部署 wordpress
1. 查看 docker compose depoly 语法 官网地址 : https://docs.docker.com/compose/compose-file/#deploy ENDPOI ...
- Spring Cloud Alibaba 教程 | Nacos(六)
集群模式部署 前面我们已经学习了Nacos作为注册中心.配置中心的相关功能,但是我们之前启动Nacos是通过单实例模式启动的,只适合在学习和开发阶段,生产环境需要保证Nacos的高可用,所以今天我们来 ...