1、项目说明
1.1 任务需求
-
某企业里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了数据就会丢失,现在领导要求把数据做备份,这样Web服务器数据丢失在可以进行恢复
-
要求如下:
-
每天00点整在Web服务器上按日期打包备份系统配置文件、网站程序目录及访问日志文件
-
通过rsync命令推送到备份服务器上保存
-
备份服务器定时清除旧记录
-
搭建邮件告警平台
-
1.2 准备过程以及所需内容介绍
1.2.1 备份需求
-
所有服务器的备份目录必须都为/backup。
-
要备份的系统配置文件包括但不限于:
-
定时任务服务的配置文件(/var/spool/cron/root) (适合Web和NFS服务器)。
-
开机自启动的配置文件(/etc/rc.local) (适合Web和NFS服务器)。
-
日常脚本的目录 (/server/scripts)。
-
-
Web服务器要求
-
Web站点目录假定为/var/html/www,如果没有,可以先模拟创建。
-
Web服务器访问日志路径假定为/app/logs,如果没有,可以先模拟创建。
-
Web服务器本地保留打包后的7天备份数据即可(本地留存不能多于7天,因为数据太多硬盘会满)。
-
-
备份服务器要求
-
保留最近7天所有备份数据,保留6个月内每周一的所有数据副本。
-
要按照备份数据服务器内网IP为目录名称,备份的文件按照时间、名称为文件名称。
-
需要确保备份的数据尽量完整准确,在备份服务器上对备份的数据是否完整进行检查。
-
备份服务器每天早晨8:00把备份成功或失败结果信息发送到系统管理员邮箱里。
-
所用到的服务器目录以及其说明如下:
-
1.2.2 Rsync概述
-
Rsync:Remote sync(远程同步),是一个在 Linux 和其他 Unix-like 系统上一个非常强大的命令行工具,用于计算机之间进行数据同步,可以当做文件复制工具,替代cp和mv命令
-
主页:Rsync
由于Rsync有以下特点,所以本次使用:
-
同步速度快:由于使用sync算法,其只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
-
可以镜像保存整个目录树和文件系统
-
可以很容易做到保持原来文件的权限、时间、软硬链接等
-
无须特殊权限即可安装
-
优化的流程,文件传输效率高
-
可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接
-
支持匿名传输。
由于Rsync有一些常用语法,此处贴到下方:
1.2.3 项目拓扑结构
1.2.4 软硬件环境清单
以下给出本次项目使用的软硬件环境清单:
1.3 IOS镜像下载
(1)centos7.9推荐在阿里巴巴开源镜像站下载,点击链接后如下:
点击OS镜像之后如下搜索后下载,如果下载较慢,可以将链接复制到迅雷下载,较快.
2 、任务清单
2.1 项目环境搭建
-
可以使用iVentoy网启安装3台centos7.9服务器。iVentoy具体使用过程可以戳我另一个blog的链接进行学习:基于网启PXE服务器的批量定制系统平台
-
按照规划,最小化部署系统,关闭防火墙,禁用SELinux,确保能够联网。
2.2 服务器部署
2.2.1 Web服务器搭建部署
-
验证Rsync服务能否推送成功。
-
开发脚本实现打包备份、推送、校验、删除。
-
配置定时任务每天0点定时推送(0时是时间的一个分割点)。
2.2.2 NFS服务器搭建部署
-
验证Rsync服务能否推送成功。
-
开发脚本实现打包备份、推送、校验、删除。
-
配置定时任务每天0点定时推送(0时是时间的一个分隔点)。
-
配置脚本和web服务器类似,过程略。
2.2.3 搭建备份服务器
-
rsync服务器搭建部署。
-
开发脚本实现校验、删除、报警。
-
配置实时任务每天6点实时执行。
-
配置告警邮件发送平台
3、项目具体实现步骤
3.1 环境搭建
3.1.1 web01服务器环境搭建
首先安装Centos7.9系统,连接xshell,替换yum源。
具体安装教程可以戳链接:VMware安装虚拟机
Xshell链接教程:Xshell连接Vmware中的虚拟机
Xshell可以跳转官网下载:Xshell下载
Xftp也在官网下载,链接同上。
此处详细过程略。
-
关闭防火墙和selinux,设置主机名
-
设置静态ip
安装常用软件
由于Xshell中不好进行代码截取,故此处直接截取示例
这里不要忘了yum install的时候再加上 epel-release 否则安装下方的nginx可能会报错!!!
下载好软件之后,web的环境部署完毕,接下来部署它的网站
可以去阿里云将epel镜像替换
网址链接:epel镜像
复制粘贴到VMware虚拟机中即可
然后按照如下代码进行步骤(实机较乱下方贴演示代码)
再将准备好的网页用Xftp粘贴到新建的sczl文件夹中
再修改nginx的路径
输入 vim /etc/nginx/nginx.conf 将画红区域改成和我相同的并保存退出。
启动nginx
输入虚拟机的IP进入网页映射做测试,示例如下:
到此web01服务器的网站部署结束,开始部署nfs01服务器
3.1.2 nfs服务器环境搭建
前面的环境配置相同
安装Centos7.9系统,替换yum源,连接xshell
关闭防火墙和selinux,设置主机名
设置静态ip
安装常用软件(vim tree tar net-tools rsync)
安装完常用软件之后,开始部署共享存储,注意这里nfs01为服务端,web01为客户端,不要弄错
先去安装nfs-utils(注意包名,不是nfs)和rpcbind(先装,默认一般自带)
再去本地的nfs端新建文件夹nfsfile
怎么证明文件共享成功,写一个文件,如果在web端可以看到此文件,证明共享服务器搭好
再进行权限修改,给nfsfile文件夹一个完整权限(chmod -Rf 777 /nfsfile)
再编写nfs配置文件
再启动服务
请注意,启动顺序不能有任何改变!
如果启动顺序乱了,会访问不到客户端
启动后,返回web01客户端查看是否可以访问到,怎么查看?
挂载,将对方的目录挂载到本地 所以我们需要建立一个本地挂载服务
建立之后查看是否有“readme”,能看到证明成功
输入mount可以查看挂载信息:
若有错或未成功请按照我的顺序执行,查看启动顺序以及权限有错否
到此nfs服务器处理完毕
接下来查看backup服务器
3.1.3 backup服务器环境搭建
前面的环境配置相同
安装Centos7.9系统,替换yum源,连接xshell
关闭防火墙和selinux,设置主机名
设置静态ip
安装常用软件(vim tree tar net-tools rsync mailx)
本机需要修改rsync的配置文件,所以接下来修改配置
首先使用 vim /etc/rsyncd.conf(rsyncd是rsync服务名称,请注意!!) 打开后将备注全部删去,改为我给出的如下代码:
uid = rsync# 用户
gid = rsync# 组
use chroot = no# 程序安全设置
max connections = 200# 客户端连接数
timeout = 300# 超时时间
pid file = /var/run/rsyncd.pid# 进程号文件位置
lock file = /var/run/rsync.lock# 进程锁
log file = /var/log/rsyncd.log# 日志文件
fake super = yes # 无需rsync以root身份运行,允许接受数据
[backup]
path = /backup# 目录
ignore errors# 有错误时忽略
read only = false# 可读可写
list = false # 阻止远程列表
hosts allow = 192.168.88.0/24# 允许IP
hosts deny = 0.0.0.0/32# 禁止IP
auth users = rsync# 用于认证的账户
secrets file = /etc/rsync.password# 存放用户和密码的文件
使用时将给出的备注删除!!!
接下来根据给出的配置文件设置:创建rsync账户及共享目录并修改目录属主为rsync
通过ll可以查看目前backup归属的是管理员(root),所以需要将其归属与rsync
使用如下进行归属:
接下来开机并启动服务
开机启动后查看运行否
其次创建rsync虚拟账户名和密码,并赋予密码文件600(读和写)权限
backup的配置到此结束
3.2配置备份脚本
3.2.1配置web01客户端本地备份脚本
web01客户端主机需要打包备份的内容有 nginx日志 网站主数据 定时任务和备份脚本源文件
开始编写备份web01服务器的脚本
vim后,输入脚本:
脚本输入后可以在nfs端进行测试
脚本无误
然后在web客户端建立认证的文件密码 客户端只需输入密码,不需要用户名
给予密码认证文件权限600
测试脚本,通过web端和backup查看是否有误
web执行成功
backup备份无误
3.2.2 配置nfs01客户端本地备份脚本
nfs01客户端主机需要打包备份的内容: 共享目录数据 以及/var/log/message文件、mount -l 挂载信息
开始编写备份nfs01服务器的脚本
脚本步骤同web01端相同,可参照上方,代码基本相同,注意此处的备份服务器IP以及挂载日志即可。
接下来建立认证的文件密码 客户端只需输入密码,不需要用户名
给予密码认证文件权限600
进行脚本测试
测试无误
3.3 配置定时任务
先查看crond服务状态,一般默认已安装
如果报错或者红线处显示dead,重新安装即可(yum install crontabs)
定位到web端,编辑定时任务
crontab -e后,输入以下信息:
出现以下信息不用处理
nfs端和backup端操作以及信息输入相同,此处略(注意上方crond-id-的001改为nfs-002 backup-003)
backup服务器编写脚本,实现删除180天前的所有备份数据(由于磁盘空间有限),但保存每周一的
3.4 数据传输完整性验证与监控告警
3.4.1 验证数据完整性
backup服务端针对客户端备份时的md5指纹数据,利用MD5命令进行验证,完成数据传输过程完整性验证。
首先编辑一个发送至mail的脚本
请注意其中的Mail需要改成自己的!!!
3.4.2 配置邮件告警
安装邮件服务
配置qq邮箱ssl证书
由于是qq提供的代码信息,我直接将源码贴到下方
[root@backup ~]# mkdir -p /root/.certs
[root@backup ~]# cd /root/.certs
[root@backup .certs]# echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
[root@backup .certs]# certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
[root@backup .certs]# certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
[root@backup .certs]# certutil -A -n "GeoTrust SSL CA – G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt
Notice: Trust flag u is set automatically if the private key is present.
配置邮件服务
红线和备注需要删除,然后授权码需要从自己的邮箱中获取,首先登陆邮箱,再设置
下滑
开启这个服务后获取授权码,回到虚拟机中配置好了发送一条信息至自己邮箱当中
发送成功
最后测试脚本
发送成功
项目到此结束。
易出错:
rsync密码以及用户名
邮箱
评论前必须登录!
注册