zoukankan      html  css  js  c++  java
  • 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 
  • 相关阅读:
    win10 redis安装教程
    tomcat 最大并发连接数设置
    LeetCode 82 ——删除排序链表中的重复元素 II
    LeetCode 83 —— 删除排序链表中的重复元素
    LeetCode 61——旋转链表
    LeetCode 24——两两交换链表中的节点
    C++ 学习笔记之——文件操作和文件流
    LeetCode 4——两个排序数组中的中位数
    z 变换
    冲激串采样
  • 原文地址:https://www.cnblogs.com/xmtxh/p/12229931.html
Copyright © 2011-2022 走看看