2019-08-16

  1. 课程知识回顾部分
    服务端
    服务端的配置参数
    1.多网段配置
    /etc/exports
    /data 172.16.1.0/24(rw)
    /data 10.0.0.0/24(rw)
    2.配置参数
    rw 读写
    ro 可读
    sync 同步写入 同步写入到磁盘中
    async 异步写入 先写入到内存(缓冲)中,然后在写入到磁盘中
    all_squash 所有都被压缩成默认的匿名用户(nfsnobody)
    no_all_squash 所有的用户都不被压缩(不包括root用户)默认参数
    root_squash root用户被映射成默认的匿名用户(nfsnobody) 默认参数
    no_root_squash root用户不被压缩,保持root
    anonuid 当用户压缩时,被压缩成指定的uid用户
    anongid 当用户的组压缩成,压缩成指定的gid用户
    3.影响数据存储的因素

    1. 服务端配置参数(rw,ro)
      2)服务端共享目录的权限,及属主和属组
      3)服务端配置参数中,子目录继承父目录的权限
      4)客户端的配置参数(ro)
      4.服务端的文件
      /etc/exports nfs的配置文件
      /usr/sbin/showmount 检查服务端共享目录的一个命令showmount -e
      /usr/sbin/rpcinfo 检查nfs服务向rpc服务注册信息的
      /usr/sbin/exportfs 平滑重启 exportfs -rv 使用这个命令时,不需要nfs重新向rpc注册端口
      平滑重启:
      1)当有数据传输时,等数据传输完毕,就会断开重新连接(当有数据进行传输,就会等数据传输完毕,进行重启)
      2)无数据传输时,直接断开重新连接
      重启:无论是否数据进行传输,都会强制断进行重新连接
      重启肯定nfs向rpc重新注册端口,平滑重启,按照字面意思,也相当于重启(等待数据传输完毕),肯定向rpc重新注册端口
      /var/lib/nfs/etab 服务端共享的目录的参数配置
      /proc/mounts 客户端挂载参数的配置
      客户端
      1.开机自动挂载
      1)/etc/rc.loacl
      2)/etc/fstab
      centos6:当系统启动时,首先会加载/etc/fstab,然后在加载服务(network),netfs服务加入开机自启
      centos7:当系统启动时,首先会加载/etc/fstab,然后在加载服务(network),remote-fs.target 服务开机自启
      原理说明:
      1)当系统启动时,会加载/etc/fstab,遇到网络设备挂载,忽略
      2)当到开机自启服务时,netfs或remote-fs.target会重新加载/etc/fstab进行网络设备挂载
      2.客户端的挂载参数
      bg:置于后台运行
      fg:置于前台运行
      soft:当服务端关闭连接时,会持续一段时间,进行请求连接,当时间过了,就不会请求连接
      hard:当服务端关闭连接时,客户端一直发送请求连接
      rsize:客户端在内存中的缓存空间,加快读取速度
      wsize:客户端在内存中的缓冲空间
      atime:当访问共享目录中的文件,会更新文件的时间戳 性能参数
      noatime:当访问共享目录中的文件,不会更新文件的时间戳 性能参数
      nodiratime:当访问共享目录中的目录时,不会更新目录的时间戳 性能参数
      remount:重新挂载

    补充:

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

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

    2. exportfs -rv 平滑重启 --- 端口号码不会重新进行注册

      平滑重启:

      1. 当有数据传输时,等数据传输完毕,就会断开重新连接 (当有数据进行传输,就会等数据传输完毕,进行重启)
        nginx网站服务 用户(客户端) --- 网站 nginx (服务端)
        restart --- 强制将所有连接断开
        reload --- 连接断开

        nfs:
        restart
        客户端 --- 服务端 90s
        reload
        客户端 --- 服务端 没有延迟

      2. 无数据传输时,直接断开重新连接
        重启:无论是否数据进行传输,都会强制断进行重新连接
        重启肯定nfs向rpc重新注册端口,平滑重启,按照字面意思,也相当于重启(等待数据传输完毕),肯定向rpc重新注册端口

      rpc注册端口--原理
      服务端:

      1. 启动rpcbind服务 可以让nfs向rpcbind进行注册
      2. 启动nfs服务 端口和进行信息注册过程
      3. 服务重启 才会再次重新注册端口信息
        客户端:
      4. 启动rpcbind服务
      5. 执行mount命令进行挂载
      6. 客户端挂载点存储数据, 会通过网络将数据存储到存储服务器

NFS服务常见问题:
01. 防火墙服务开启, 会影响远程挂载操作
02. NFS服务启动顺序不正确 nfs服务都没有启动
03. 文件句柄错误
Stale file handle
客户端挂载这存储目录, 服务端将存储目录删除了
04. NFS服务尽量平滑重启 不要直接重启
会有一个挂载写入数据90s延迟

  1. 全网备份项目部署说明
    第一个里程: 对工作任务进行确认 笔记记录 录音记录
    第二个里程: 根据需求编写文档资料 部署步骤规划 时间规划(2个月) 人员规划 简单部署方案
    第三个里程: 和领导开会(相关人员进行召集)
    第四个里程: 根据规划完成任务 阶段汇报
    第五个里程: 任务完成后项目文档总结 项目总结会议 人员培训
  1. 全网备份需求完成阶段
    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

    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

  1. 备份服务器上,要按照备份数据服务器的内网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/iptables
    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

  2. 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。
    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
    QQ: 授权码: izpcjhqnzqvvbhfi 开启IMAP/SMTP服务
    163: 授权码: oldboy123 开启IMAP/SMTP服务

    第二个里程: 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 <-- 指定进行远程登录连接

   # QQ mail config
   set from=*********@qq.com
   set smtp=smtp.qq.com                 
   set smtp-auth-user=*********@qq.com
   set smtp-auth-password=izpcjhqnzqvvbhfi
   set smtp-auth=login
   ## 163 mail config
   #set from=***********@163.com
   #set smtp=smtp.163.com
   #set smtp-auth-user=***********@163.com
   #set smtp-auth-password=oldboy123
   #set smtp-auth=login

   第三个里程: 重启系统邮件服务
   systemctl restart postfix.service 
   
   第四个里程: 进行邮件发送测试
   echo oldboy63|mail -s "test_mail"***********@163.com 
   mail -s "test_mail" ***********@163.com 
  1. 全网备份脚本编写过程:
    备份服务客户端脚本:

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" ***********@163.com 
  1. 编写定时任务:
    客户端定时任务时间 00:00
    服务端定时任务时间 07:00

你可能感兴趣的:(2019-08-16)