day-34 综合架构全网备份项目⑤

00.课程介绍
    1.根据全网备份需求解决问题
    2.根据全网备份需求编写脚本
    3.根据全网备份部署思考如何完善
01.课程回顾
    服务端的配置参数
    /etc/exports
    1.多网段配置
    /data 10.0.0.0/24(rw)
    /data 172.16.1.0/24(rw)
    2.配置参数
    rw                    ro
    sync                  async
    all_squash            no_all_squash(默认参数)
    root_squash(默认参数)  no_root_squash
    auonuid                anuogid
    3.影响数据存储因素
        ①服务端配置文件参数
        ②存储目录权限问题  属主  755
        ③父级目录继承问题
        ④挂载参数
    4.服务端重要文件
        /etc/exports                ---nfs服务端配置文件信息
        /usr/sbin/showmount         ---检查是否存在共享目录信息
        /usr/sbin/rpcinfo           ---确认服务端nfs服务是否向rpc服务进行注册
        /usr/sbin/exportfs          ---重启nfs服务(平滑重启)
        /var/lib/nfs/etab           ---记录nfs默认配置参数信息
      客户端重要文件
        /proc/mounts                ---记录客户端挂载参数信息
    5.客户端挂载
        第一种方法:手动挂载
        mount -t nfs 172.16.1.41:/data /mnt
        第二种方法:自动挂载
            a fsyab
            b rc.local文件(改权限)
    6.挂载参数信息

补充:
  1.企业中NFS配置方式
    a.常规配置   /data  172.16.1.0/24(rw,sync,xxx)
    b.只读模式   /data  172.16.1.0/24(ro,sync,xxx) 限制开发人员权利
        运维人员---操作线上服务器权利  开发人员 --- 不要有连接线上服务器权利
        代码上线---网站访问报错 --- 代码回退(还原历史版本)

        线上环境 线下环境 不统一 需要统一 网站数据目录(线上) --- 需要开发人员可以查看
        cat 数据库
    c.特殊配置   /data 172.16.1.0/24(rw,sync,anonuid,anongid)  ---web --blog

  2.exportfs -rv 平滑重启
    reload

    平滑重启:
    1.当有数据传输时,等数据传输完毕,断开连接 重新连接
        nginx网站服务  用户(客户端)---网站 nginx(服务端)
        restart --- 强制将所有连接断开
        reload  ---  连接断开
    NFS:
        restart
        客户端 -- 服务端  90s延迟
        reload
        客户端 -- 服务端  没有延迟


    rpc注册端口 -原理
    服务端:
    01.启动rpcbind服务  可以让nfs向rpcbind进行注册
    02.启动nfs服务      端口可进行信息注册过程
    03.服务重启            才会再次重新注册端口信息
    客户端:
    01.启动rpcbind服务(不关注)
    02.执行mount命令进行挂载
    03.客户端挂载点存储数据,会通过网络将数据存储到存储服务器

    NFS服务常见问题:  
    01.防火墙服务开启,会影响远程挂载操作
    02.NFS服务启动顺序不正确 nfs服务未启动
    03.文件句柄错误  
        Stale file handle
        客户端挂载着存储目录时,服务端将存储目录删除
    04.NFS服务尽量平滑重启    不要直接重启
02.全网备份项目部署说明
    第一步:对工作任务进行确认       记录笔记或录音记录
    第二步:根据需求编写文档资料     部署步骤规划 时间规划(放宽时间)  人员规划  简单部署方案
    第三步:和领导开会(相关人员进行召集)
    第四步:根据规划完成任务         阶段汇报
    第五步:任务完成后 项目文档总结   项目总结会议 人员培训
03.全网备份需求完成阶段
1)所有服务器的备份目录必须都为/backup
        mkdir /backup -p
2)要备份的系统配置文件包括但不限于:
    a) 定时任务服务的配置文件      (/var/spool/cron/root)  (适合web和nfs服务器)。
    b) 开机自启动的配置文件           (/etc/rc.local)         (适合web和nfs服务器)。
    c) 日常脚本的目录              (/server/scripts)。
    d) 防火墙iptables的配置文件     (/etc/sysconfig/iptables)。
    e) 自己思考下还有什么需要备份呢?

    mkdir -p /server/scripts
    touch /etc/sysconfig/iptables
    方法一: 压缩数据---绝对路径
    tar zcvhPf /backup/system_backup_$(date +%F_%A).tar.gz  /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
    方法二: 压缩数据---相对路径
    cd /
    tar zcvhf /backup/system_backup_$(date +%F_%A).tar.gz  ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables

3) Web服务器站点目录假定为(/var/html/www)。
    mkdir -p /var/html/www/
    tar zcvPhf /backup/web_info_backup_$(date +%F_%A).tar.gz /var/html/www/

4) Web服务器访问日志路径假定为(/app/logs)
    mkdir -p /app/logs
    tar zcvPhf /backup/web_log_backup_$(date +%F_%A).tar.gz /app/logs/

5) Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
    find /backup -type f -name "*.tar.gz" -mtime +7 -delete

6) 备份服务器上,保留6个月之内数据,同时保留6个月之前每周一的所有数据副本
    find /backup -type f -name "*.tar.gz" -mtime +180 -delete
    两种方法: 保留周一数据信息
    方法一: 根据文件名称信息进行保留
    date +%F_%w date +%F_%a date +%F_%A
    find /backup -type f -name "*.tar.gz" -mtime +180  ! -iname "*_monday.tar.gz"  -delete
    方法二: 可以将每周一数据进行单独保存    
    find /backup -type f  -iname "*_monday.tar.gz" | xargs mv -t /backup_monday
    find /backup -type f -name "*.tar.gz" -mtime +180  -delete

7) 备份服务器上,要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
    方法一: 在备份客户端主机上,backup目录中创建有IP地址信息子目录
    cd /
    tar zcvhf /backup/172.16.1.31/system_backup_$(date +%F_%A).tar.gz  ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptab
    rsync -avz /backup/ [email protected]::backup --password-file=/etc/rsync.password

    方法二: 利用rsync命令创建子目录功能
    rsync -avz /backup/ [email protected]::backup/172.16.1.31/ --password-file=/etc/rsync.password

8) 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。   
    a 验证数据传输完整性
    第一个步骤: 客户端生成文件指纹信息
    md5sum system_backup_2019-08-19_Monday.tar.gz 
    8b771973e1a6ca8069e4240d1ee239a7  system_backup_2019-08-19_Monday.tar.gz
    生成指纹信息
    find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/172.16.1.31/finger.txt

    第二个步骤: 服务端对文件指纹信息进行对比
    find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_data.txt


    b 对验证结果进行邮件告知运维人员
    linux系统发送邮件原理  
    邮件服务客户端  --->  邮件服务服务端 ---> QQ邮箱
    foxmail         --->  QQ企业邮箱     ---> 发送邮件
    linux postfix   --->  QQ邮箱 163邮箱 ---> 其他人发送邮件

    第一个里程: 配置邮箱信息: 163 QQ

    第二个里程: linux系统中进行邮件配置
    vim /etc/mail.rc
    set from=邮箱地址@qq.com             <-- 连接邮箱名称信息
    set smtp=smtp.qq.com                 <-- 设置邮箱服务地址信息
    set smtp-auth-user=邮箱地址@qq.com
    set smtp-auth-password=              <-- 邮箱授权密码 
    set smtp-auth=login                  <-- 指定进行远程登录连接



    第三个里程: 重启系统邮件服务
    systemctl restart postfix.service 

    第四个里程: 进行邮件发送测试
    echo oldboy63|mail -s "test_mail" [email protected] 
    mail -s "test_mail" [email protected] 
04.全网备份脚本编写过程:
    备份服务客户端脚本:
    nfs01: 初始化备份脚本
    #!/bin/bash
    # 00. create dir info
    mkdir /backup -p
    mkdir -p /server/scripts
    touch /etc/sysconfig/iptables

    # 01. compress data
    tar zcvhPf /backup/172.16.1.31/system_backup_$(date +%F_%A).tar.gz  /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables

    # 02. create finger file 
    find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/172.16.1.31/finger.txt

    # 03. push date info
    rsync -avz /backup  [email protected]::backup  --password-file=/etc/rsync.password

    # 04. delete 7 day ago
    find /backup/ -type f -name "*.tar.gz" -mtime +7 -delete

    完善之后脚本:
    [root@nfs01 backup]# cat /server/scripts/backup.sh 
    #!/bin/bash

    Backup_Dir="/backup"
    Backup_IP="$(hostname -i)"


    # 00. create dir info
    mkdir $Backup_Dir/$Backup_IP -p
    mkdir -p /server/scripts
    touch /etc/sysconfig/iptables

    # 01. compress data
    tar zchPf $Backup_Dir/$Backup_IP/system_backup_$(date +%F_%A).tar.gz  /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
        
    # 02. create finger file 
    find $Backup_Dir/ -type f -name "*.tar.gz"|xargs md5sum >$Backup_Dir/$Backup_IP/finger.txt

    # 03. push date info
    rsync -az $Backup_Dir/  [email protected]::backup  --password-file=/etc/rsync.password

    # 04. delete 7 day ago
    find $Backup_Dir/ -type f -name "*.tar.gz" -mtime +7 -delete


    备份服务服务端脚本:
    #!/bin/bash

    #01. check data info    
    find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_data.txt

    #02. sent notify mail
    mail -s "backup_data_notify" [email protected] 
05.编写定时任务:
    客户端定时任务时间   00:00
    服务端定时任务时间   07:00
作业:
    01. nfs服务耦合度过高服务,如何解决耦合度过高问题 (分布式存储)
        autofs --- 研究软件使用方法 
    02. 全网备份脚本完善需求
        a 如何一个备份客户端主机没有发送数据时,也可以让运维人员得知 
       *b 想让邮件信息按照指定格式内容发送
        备份服务器地址信息     备份文件信息      备份结果信息
        10.0.0.31              system-xxx        OK
        10.0.0.7               sysxxx            OK

你可能感兴趣的:(day-34 综合架构全网备份项目⑤)