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

课程介绍部分

1.根据全网备份需求解决问题
2.根据全网备份需求编写脚本
3.根据全网备份部署思考如何完成

一.课程回顾

服务端
服务端的配置参数
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注册端口--原理 
   服务端: 
   01. 启动rpcbind服务  可以让nfs向rpcbind进行注册
   02. 启动nfs服务      端口和进行信息注册过程
   03. 服务重启         才会再次重新注册端口信息
   客户端: 
   01. 启动rpcbind服务  
   02. 执行mount命令进行挂载
   03. 客户端挂载点存储数据, 会通过网络将数据存储到存储服务器
nfs服务常见问题:
01. 防火墙服务开启,          会影响远程挂载操作
02. NFS服务启动顺序不正确     nfs服务都没有启动
03. 文件句柄错误
    Stale file handle
    客户端挂载这存储目录, 服务端将存储目录删除了
04. NFS服务尽量平滑重启      不要直接重启
    会有一个挂载写入数据90s延迟

三.全网备份项目部署说明

第一个里程:对工作任务进行确认 笔记记录  录音记录
第二个里程:根据需求编写文档资料  部署步骤规划      时间规划(多说点时间)  人员规划   简单部署方案
第三个里程:和领导开会(相关人员进行召集)
第四个里程:根据规划完成任务    阶段汇报
第五个里程:任务完成后项目文档总结   项目总结会议  人员培训

四.全网备份需求完成阶段

01.所有服务器的备份目录必须都为/backup
                mkdir /backup
02.要备份的系统配置文件包括但不限于:
         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/iptables
   rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
   
   方法二: 利用rsync命令创建子目录功能
   rsync -avz /backup/ rsync_backup@172.16.1.41::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
   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=330882721@qq.com
   set smtp=smtp.qq.com                 
   set smtp-auth-user=330882721@qq.com
   set smtp-auth-password=izpcjhqnzqvvbhfi
   set smtp-auth=login
   ## 163 mail config
   #set from=17778058507@163.com
   #set smtp=smtp.163.com
   #set smtp-auth-user=17778058507@163.com
   #set smtp-auth-password=oldboy123
   #set smtp-auth=login

   第三个里程: 重启系统邮件服务
   systemctl restart postfix.service 
   
   第四个里程: 进行邮件发送测试
   echo oldboy63|mail -s "test_mail" 17778058507@163.com 
   mail -s "test_mail" 17778058507@163.com </etc/hosts

   mail -s "backup_data_notify" 17778058507@163.com </tmp/check_data.txt

五.全网备份脚本编写过程

备份服务客户端脚本:
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  rsync_backup@172.16.1.41::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/  rsync_backup@172.16.1.41::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" 17778058507@163.com </tmp/check_data.txt

#03. delete 180 day ago
find /backup -type f -name "*.tar.gz" -mtime +180  ! -iname "*_monday.tar.gz"  -delete

六.定时任务编写

执行crontab -e命令 进入到定时任务编写模式
 00 00 * * * 然后执行脚本命令信息为绝对路径信息   脚本也是绝对路径
不知道在哪个路径下面就用which查找
 客户端定时任务时间要比服务端定时任务时间要早   服务端定时任务一般情况下在上班前能收到通知就可以

作业

01. nfs服务耦合度过高服务,如何解决耦合度过高问题 (分布式存储)
autofs --- 研究软件使用方法 
02. 全网备份脚本完善需求
  a 如何一个备份客户端主机没有发送数据时,也可以让运维人员得知   
 *b 想让邮件信息按照指定格式内容发送
  备份服务器地址信息     备份文件信息      备份结果信息
  10.0.0.31              system-xxx        OK
  10.0.0.7               sysxxx            OK
03. 预习: 实时同步服务sersync 远程服务/ansible(4-5)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容