回顾:

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

最新文章

  1. JqueryQrcode生成二维码不支持中文的解决办法
  2. 理解 virbr0 - 每天5分钟玩转 OpenStack(11)
  3. Proactor VS Reactor
  4. Python学习笔记之字符串
  5. Spring(七)持久层
  6. WCF调用时提示错误 &quot;已尝试创建到达不支持 .Net 框架的服务的通道。可能遇到 HTTP 终结点&quot;
  7. apache部署多个项目
  8. Native Fullscreen JavaScript API (plus jQuery plugin)
  9. [Webpack 2] Tree shaking with Webpack 2
  10. linux 安装中文支持包及中文字符集配置
  11. 自己写jstl标签解析long时间
  12. Ubuntu下编译Android JNI最靠谱的方法...
  13. jquery中,使用append增加元素时,该元素的绑定监听事件失效
  14. 构建混合应用方式之WCF中继
  15. java模拟斗地主发牌看牌
  16. sqlite3使用事务处理[zz]
  17. 【网络流问题&middot;我就想建好模】
  18. JQuery官方学习资料(译):类型
  19. python day20面向对象-属性,类方法,静态方法
  20. var

热门文章

  1. 算法5:队列——解密 QQ 号
  2. 干货分享:Essay写作收集论据的三个方法
  3. core_cm4.h(129): error: #35: #error directive: &quot;Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)&quot;
  4. 实验吧web-中-简单的sql注入
  5. 尝试用kotlin做一个app(四)
  6. JS/JQUERY函数库
  7. python类(3)感悟
  8. WOJ 1538 Stones II 转化背包问题
  9. 干货 | 利用京东云Web应用防火墙实现Web入侵防护
  10. Android aar同步Failed to resolve: :nuisdk: