rsync+nfs+sersync实战案例

Posted xmtxh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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软件包
[root@backup ~]# yum install -y rsync

2)修改配置文件rsyncd.conf
[root@backup ~]# 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)创建环境
[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 600 /etc/rsync.passwd 

4)启动服务
[root@backup ~]# systemctl start rsyncd && systemctl enable rsyncd

5)验证
客户端:
    安装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 1 >/etc/rsync.passwd
        [root@nfs ~]# chmod 600 /etc/rsync.passwd
        [root@nfs ~]# rsync -avz --password-file=/etc/rsync.passwd
        给环境变量RSYNC_PASSWORD赋值
        [root@nfs ~]# export RSYNC_PASSWORD=1

 

实验组合二:

2.搭建NFS服务器

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

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

5).重载配置文件
[root@nfs ~]# exports -arv

6).验证
客户端:
安装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/24
临时挂载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客户端的)配置

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服务器
[root@backup ~]# groupadd -g 666 www
[root@backup ~]# useradd -u 666 -g 666 -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 666 www
[root@nfs ~]# useradd -u 666 -g 666 -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 666 www
[root@web01 ~]# useradd -u 666 -g 666 -M -s /sbin/nologin www

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

 

4.sersync

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

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

1).安装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.5.4_64bit_binary_stable_final.tar.gz 
[root@nfs tools]# mv GNU-Linux-x86/ /usr/local/sersync
[root@nfs tools]# cd /usr/local/sersync/
2).修改配置文件
[root@nfs 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>
[root@nfs sersync]# echo "1" >/etc/nfs.passwd 
[root@nfs sersync]# chmod 600 /etc/nfs.passwd 

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

以上是关于rsync+nfs+sersync实战案例的主要内容,如果未能解决你的问题,请参考以下文章

rsync+sersync+nfs高可用

自动化部署安装nfs+rsync+sersync+nfs客户端+SMTP

sersync实现实时同步

sersync实现实时同步

rsync+nfs企业实战案例

测试NFS+rsync+sersync+SMTP+shell脚本+cron