老男孩教育64期--week11--综合架构备份服务
-
综合架构知识概述说明
- 备份服务企业应用
- 备份服务常见问题
- 全网备份项目 ***
- 存储服务概念 NFS FTP samba
- 存储数据原理
- 存储服务进行部署
- 存储服务配置参数
- 存储服务客户端配置参数
-
综合架构课程回顾:
综合架构组成部分
防火墙设备 : iptables firewalld
负载均衡设备 : nginx Lvs haproxy
网站服务web : nginx apache tomcat/php
数据库服务 : mysql oracle
存储服务 : NFS ftp samba 分布式存储
备份服务 : rsync
缓存服务 : redis mongodb
vpn服务器 : pptpvpn openvpn
跳板机服务 : jumpserver
批量管理服务 : ansible saltstack
监控服务 : zabbix-
综合架构环境准备:
- 虚拟主机网络配置
- 虚拟主机克隆操作 (克隆前/克隆后 -- 快照)
-
部署备份服务
- rsync备份服务概念作用
- rsync备份服务命令语法 (本地备份 rsync=cp/远程备份rsync=scp/ 守护进程)
- rsync守护进程部署方式
rsync服务端部署: 安装-->配置-->创建虚拟用户-->创建密码文件(授权600)-->创建备份目录(授权 rsync.rsync管理备份目录)
rsync客户端部署: 创建密码文件--> 免交互备份数据 - rsync命令参数说明: -avzP
-
备份服务企业应用
- 备份服务多模块配置
配置信息:
[backup_sa]
comment = "backup dir by oldboy"
path = /backup
[backup_dev]
comment = "backup dir by oldboy"
path = /backup_dev
[backup_db]
comment = "backup dir by oldboy"
path = /backup_db
环境准备:
mkdir /backup_dev
mkdir /backup_db
chown rsync.rsync /backup_dev
chown rsync.rsync /backup_db- 备份服务数据筛选功能
环境准备
[root@nfs01 ~]# mkdir /oldboy/{a..c}
[root@nfs01 ~]# touch /oldboy/{a..c}/{01..03}.txt
[root@nfs01 ~]# tree /oldboy/
/oldboy/
├── a
│?? ├── 01.txt
│?? ├── 02.txt
│?? └── 03.txt
├── b
│?? ├── 01.txt
│?? ├── 02.txt
│?? └── 03.txt
└── c
├── 01.txt
├── 02.txt
└── 03.txt
3 directories, 9 files
需求
- 不要将a目录所有数据进行备份 不要将b目录中03.txt文件进行备份
[root@nfs01 ~]# rsync -avz /oldboy/ --exclude=a/ --exclude=b/03.txt [email protected]::backup_sa --password-file=/etc/rsync.password
sending incremental file list
./
b/
b/01.txt
b/02.txt
c/
c/01.txt
c/02.txt
c/03.txt
sent 374 bytes received 134 bytes 338.67 bytes/sec
total size is 0 speedup is 0.00- 不要将a目录01.txt数据进行备份 不要将b目录中02.txt文件进行备份 不要将c目录中03.txt文件进行备份
[root@nfs01 /tmp]# vim exclude.txt
a/01.txt
b/02.txt
c/03.txt
[root@nfs01 ~]# rsync -avz /oldboy/ --exclude-from=/tmp/exclude.txt [email protected]::backup_sa --password-file=/etc/rsync.password
sending incremental file list
./
a/
a/02.txt
a/03.txt
b/
b/01.txt
b/03.txt
c/
c/01.txt
c/02.txtsent 448 bytes received 157 bytes 1,210.00 bytes/sec
total size is 0 speedup is 0.00- 客户端创建多级备份目录
运维部门: 三个员工
张三 --- backup_sa/zhangsan
李四 --- backup_sa/lisi
王五 --- backup_sa/wangwu
oldboy oldboy数据 ---> rsync数据
oldgirl oldgirl数据 ---> rsync数据
root root数据 ---> rsync数据rsync -avz /etc/hosts [email protected]::backup_sa/zhangsan/ --password-file=/etc/rsync.password
创建备份目录子目录- 备份服务策略控制功能
hosts allow = 172.16.1.0/24 --- 白名单配置
hosts deny = 0.0.0.0/32 --- 黑名单配置
情况一: 只有白名单配置
hosts allow = 172.16.1.0/24
说明: 白名单允许的可以进行备份数据/白名单不允许阻止访问
情况二: 只有黑名单配置
hosts deny = 10.0.0.0/24
说明: 黑名单阻止的网段不能备份/黑名单没有阻止的可以进行访问请求三: 有白名单配置,也有黑名单配置
白名单信息匹配: 允许进行备份数据
黑名单信息匹配: 阻止进行备份数据
白名单和黑名单都没有匹配上: 默认也是可以进行备份数据补充: 配置文件说明:
全局配置: 都有模块都会加载全局配置
局部配置: 只是影响指定模块配置信息
局部配置优先于全局配置数据无差异同步功能 (用户数据做备份)
备份服务器上数据和源存储设备上数据信息保持高度一致
rsync -avz /oldboy/ --delete [email protected]::backup_sa --password-file=/etc/rsync.password显示存储模块列表功能
list = false --- 可以让客户端查看服务端所有模块信息
[root@nfs01 /oldboy]# rsync [email protected]::
backup_sa "backup dir by oldboy"
backup_dev "backup dir by oldboy"
backup_db "backup dir by oldboy"
- 备份服务多模块配置
备份服务常见企业应用
-
企业全网备份项目说明 编写脚本
? 1) 所有服务器的备份目录必须都为/backup
? 2) 要备份的系统配置文件包括但不限于:
a) 定时任务服务的配置文件 (/var/spool/cron/root) (适合web和nfs服务器)。
b) 开机自启动的配置文件 (/etc/rc.local) (适合web和nfs服务器)。
c) 日常脚本的目录 (/server/scripts)。
d) 防火墙iptables的配置文件 (/etc/sysconfig/iptables-config)。
e) 自己思考下还有什么需要备份呢?
? 3) Web服务器站点目录假定为 (/var/html/www)。
? 4) Web服务器访问日志路径假定为 (/app/logs)
? 5) 服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
? 6) 备份服务器上,不仅保留最近7天的备份数据,同时保留6个月内; 6个月之外每周一的所有数据副本保留
? 7) 备份服务器上,要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
? 8) 需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中。确认有自己的邮箱: 163 qq 企业
全网备份项目完成说明
备份客户端操作说明
1) 所有服务器的备份目录必须都为/backup
mkdir /backup/172.16.1.31/ -p
2) 进行重要数据本地备份(压缩)
cd /
tar zcvhf /backup/172.16.1.31/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts/ ./etc/sysconfig/iptables-config
tar zcvhf /backup/172.16.1.31/web_www_$(date +%F_week%w).tar.gz ./var/html/www/
tar zcvhf /backup/172.16.1.31/web_app_$(date +%F_week%w).tar.gz ./app/logs/
3) 将本地压缩包数据进行远程备份
方式一:
rsync -avz /backup/ [email protected]::backup_sa/172.16.1.31/ --password-file=/etc/rsync.password
方式二:
rsync -avz /backup/ [email protected]::backup_sa --password-file=/etc/rsync.password
4) 将本地7天以前的数据进行删除
find /backup -type f -name "*.tar.gz" -mtime +7 -delete
5) 创建指纹文件信息(用于验证数据完整性)
find /backup/ -type f -name "*$(date +%F).tar.gz"|xargs md5sum >/backup/172.16.1.31/finger.txt
备份服务端配置说明:
1) 需要验证数据完整性:
find /backup/ -type f -name "finger.txt"|xargs md5sum -c
find /backup/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_backup.txt 2>/dev/null
2) 需要进行系统发送邮件配置
foxmail 邮件客户端软件 ---> 企业邮件服务器 ---> 发送或接受
linux系统 ---> 企业邮件服务器 ---> 发送
第一个历程: 修改企业邮件服务器配置信息:
pkxmynvtgmkgbied --- 获取授权码信息
smtp.qq.com --- 获取发送邮件服务器域名信息
第二个历程: 编写系统邮件服务配置信息
vi /etc/mail.rc
set [email protected] --- 连接的邮箱信息
set smtp=smtp.qq.com --- 邮箱服务器域名信息
set [email protected] --- 邮箱登录用户名称信息
set smtp-auth-password=pkxmynvtgmkgbied --- 邮箱登录用户授权码信息
set smtp-auth=login --- 进行邮箱登录操作
systemctl restart postfix.service
第三个历程: 检查是否可以发送邮件
echo test_oldboy |mail -s "test" [email protected]
mail -s "check_data 2019-09-09" [email protected] $backup_dir/$IP_info/finger.txt
# 04. push date to backup_server
rsync -az $backup_dir/ [email protected]::backup --password-file=/etc/rsync.password
# 05. delete 7day ago
find /backup -type f -name "*.tar.gz" -mtime +7 -delete
备份服务服务端脚本文件
[root@backup /backup]# cat /server/scripts/backup_server.sh
#!/bin/bash
backup_dir="/backup"
# 01. check date info
find $backup_dir/ -type f -name "finger.txt"|xargs md5sum -c >/tmp/check_backup.txt 2>/dev/null
# 02. send mail info
mail -s "check_data $(date +%F)" [email protected] /dev/null
9-8 周日 9-9 0点做数据备份 数据日期信息-9-9-week1 -d "-1 day" --> 09-08 周日
9-9 周一 9-10 0点做数据备份 数据日期信息-9-10-week2 -d "-1 day" --> 09-09 周一
服务端定时任务编写:
0 6 * * * /bin/sh /server/scripts/backup_server.sh &>/dev/null
-
存储服务概念介绍
作用什么:- 实现网站数据统一存储
- 降低服务硬盘采购成本
实现方式:
硬件方式: IBM v5000 v7000 dsxxx/ EMC
软件方式:
NFS(不能部署在windows) FTP(配置复杂) samba(部署在windows linux 配置复杂) --- 中小型企业
分布式存储 mfs glusterfs() fastdfs --- 数据丢失/不容易进行数据恢复
用户A浏览器(10M) -- lb --- web01 ---> 存储服务器A 存储服务器A A-10m
用户B浏览器(10M) -- lb --- web01 ---> 存储服务管理端 存储服务器B A-3M 存储服务器B A-10m
用户C浏览器(10M) -- lb --- web01 ---> 存储服务器C A-3M
NFS实现数据存储原理
用户浏览器 -- lb --- web01(/mnt) -mount 网络挂载方式-> NFS 存储服务器 /data
-
存储服务部署过程:
预备知识说明:
RPC服务: 远程过程调用程序 (中介)服务端部署过程:
第一个历程: 安装软件程序
yum install -y rpcbind nfs-utils第二个历程: 编写配置文件
vi /etc/exports
定义存储数据目录 允许存储数据白名单(存储服务参数信息)
/data 172.16.1.0/24(rw,sync)第三个历程: 创建存储数据目录/修改存储目录属主或属组信息
mkdir /data
chown nfsnobody.nfsnobody /data第四个历程: 启动存储服务
systemctl start rpcbind
systemctl start nfs
centos7 先启动nfs 后启动rpcbind nfs进程和端口信息也可以进行注册第五个历程: 检查存储目录是否可以正常使用
showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24客户端部署过程:
第一个历程: 安装软件程序
yum install -y nfs-utils第二个历程: 进行网络挂载操作
mount -t nfs 172.16.1.31:/data /mnt第三个历程: 进行存储数据测试
在客户端创建 删除 修改数据 == 服务端存储目录中 创建 删除 修改数据 -
存储服务配置参数信息:
rw --- 指定让存储目录可读可写
ro --- 指定让存储目录为只读模式
sync --- 同步方式存储数据 用户存储数据 -数据-> web服务数据目录 --> nfs服务器 /data (磁盘中)
async --- 异步方式存储数据 用户存储数据 -数据-> web服务数据目录 --> nfs服务器 --- 内存 --- /data (磁盘里)
all_squash --- 将所有普通用户做身份映射转换 oldboy用户(数据) -oldboy - nfsnobody-> nfs服务端 /data(nfsnobody)
no_all_squash --- 不会将普通用户身份做映射转换 oldboy用户(数据) -oldboy - oldboy -> nfs服务端 /data(nfsnobody)
root_squash --- 会将root用户身份做映射转换 root用户(数据) -root - nfsnobody-> nfs服务端 /data(nfsnobody)
no_root_squash --- 不会将root用户身份做映射转换 root用户(数据) -root - root -> nfs服务端 /data(nfsnobody)
anonuid --- 设置指定映射的用户信息
anongid --- 设置指定映射的用户组信息补充: reload 平滑重启 restart 重启
reload: 已经建立的连接/连接上有数据传输时, 在重启服务时, 不会影响这些链接
restart: 服务器在重启时, 会将所有连接断开, 进行重新建立
总结: 存储目录是否可以存储数据, 目录权限有什么有关系
01. 配置文件的权限参数配置有关
02. 目录本身权限有关系 755 属主属组是否正确
预习:
- nfs剩余课程
- sersync实时同步服务(用户上传数据)
- SSH远程服务 / ansible批量管理服务