企业集群架构之全网备份
50 - 100 台规模集群全网数据备份解决方案
第1章 集群全网数据备份解决方案
环境背景:
随着互联网大环境的不断蓬勃发展,社会上各个行业都不断转换思路,拓展自己的业务领域,向互联网企业转型,转型后的企业也在不断扩展自身的互联网架构,随着架构不断的扩展,架构中的 服务器数量也在不断增多,由原来的几台变为几十台,甚至几百台的规模,此时随着服务器的数量增多,对服务器中的数据管理备份也随之变得复杂,传统的本地备份或简单的scp复制到存储服务器的备份方案,已经远远不能有效的解决规模壮大后的架构需求,因此急需一种更为只能的解决方案来完成备份数据需求,保证整体架构数据的安全可靠性。
1.1 运维人员的三大职责
1)企业的数据不能丢
内分策略分为异步备份(定时备份)和实时备份,本次主要解决内部人员更改的数据异步问题
2)7*24小时不宕机
3)用户访问体验要好
1.2 项目需求说明
某公司例有一台web 服务器,里面的数据很重要,但是如果磁盘坏了,数据就会丢失,现在要求把数据备份这样web服务器数据丢失可以进行恢复,要求如下:
每天晚上00 点整在web服务器A上打包备份系统配置文件,网站程序目录及访问日志并通过rsync命令推送到服务器B上备份保留(备份可以是现在本地按日期打包,然后再推到备份服务器B上)
1.2.1 基本备份要求
已知3台服务器主机名分别为 web01 、backup、nfs01,主机信息见下表:
服务器说明 |
外网IP(NAT) |
内网IP(NAT) |
主机名称 |
Nginx web服务器 |
10.0.0.8/24 |
172.16.1.8/24 |
web01 |
NFS存储服务器 |
10.0.0.31/24 |
172.16.1.31/24 |
nfs01 |
Rsync 备份服务器 |
10.0.0.41/24 |
172.16.1.41/24 |
backup |
备份要求:
每天晚上00点整在web服务器上打包备份系统配置问价,网站程序目录及访问日志并通过rsync命令推送备份服务器backup 上备份保留。
备份思路
可以是选择本地按日期打包,然后再推到备份服务器backup上;nfs存储服务器同web服务器就是运维主要管理的全部服务器
1.2.2 具体备份要求
所有服务器的备份目录必须一致 /backup/
要备份的系统配置文件包括但不限于:
1)定时任务服务器的配置文件(/var/spool/cron/root 适合web服务器和nfs服务器)
2)开机自启动服务的配置文件(/etc/tc.local 适合web和nfs服务器)
3)日常脚本目录 (/server/scripts)
4)防火墙iptables的配置文件 (/etc/init.d/iptables)
web服务器站点目录例如 (/var/html/www)
web服务器访问日志路径例如 (/app/logs)
web服务器保留打包后的7天的备份数据即可(因为本地服务器的磁盘会满)
备份服务器上,保留近180天的备份数据,6个月前的数据清除 每周一的所有数据进行保留
备份服务器上,要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存
需要保存的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把本分成功及失败的结果信息发送到系统管理员邮箱中。
1.2.3 服务器备份信息汇总表:
服务器说明 |
备份目录 |
目录说明 |
备注 |
all server |
/backup |
备份目录 |
统一服务器本地备份目录,便于管理 |
all server |
/var/spool/cron/root |
定时任务配置文件 |
|
all server |
/etc/rc.local |
开机自启动配置文件 |
|
all server |
/serer/scripts |
日常脚本目录 |
统一服务器本地备份目录,便于管理 |
all server |
/etc/sysconfig/iptables |
防火墙iptables配置文件 |
|
web server |
/var/html/www |
web服务器站点目录 |
|
web server |
/app/logs |
web服务器访问日志路径 |
|
第2章 集群架构备份部署实施方法(测试)
2.1 服务器创建
服务器说明 |
外网IP(NAT) |
内网IP(NAT) |
主机名称 |
角色 |
Nginx web服务器 |
10.0.0.8/24 |
172.16.1.8/24 |
web01 |
客户端 |
NFS存储服务器 |
10.0.0.31/24 |
172.16.1.31/24 |
nfs01 |
客户端 |
Rsync 备份服务器 |
10.0.0.41/24 |
172.16.1.41/24 |
backup |
服务端 |
2.2 服务器优化
2.2.1 名称:backup(服务端优化)
1)rsync脚本文件
[root@backup ~]# cat /etc/rsyncd.conf ######rsync_config_______________start #created by oldboy 15:01 2007-6-5 ##rsyncd.conf start## 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 ignore errors read only = false list = false hosts allow = 172.16.1.0/24 hosts deny = 0.0.0.0/0 auth users = rsync_backup secrets file = /etc/rsync.password [backup] path = /backup/ [nfsbackup] path = /nfsbackup/ #rsync_config_______________end
2)rsync用户信息
[root@backup ~]# id rsync
uid=890(rsync) gid=890(rsync) groups=890(rsync)
3)/backup/ 备份数据目录
[root@backup ~]# ls -ld /backup/
drwxr-xr-x 5 rsync rsync 4096 Mar 10 17:39 /backup/
4)rsync密码文件 权限:600
[root@backup ~]# ls -l /etc/rsync.password
-rw------- 1 root root 20 Mar 8 18:16 /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:123456
5)rsync服务状态
[root@backup ~]# ps -ef |grep rsync
root 5937 1 0 05:27 ? 00:00:00 rsync --daemon
root 6875 6423 0 09:51 pts/0 00:00:00 grep --color=auto rsync
[root@backup ~]# #关闭killall ysync 开启 rsync --daemon
6)加入开机自启动文件
[root@backup ~]# tail -1 /etc/rc.local
/usr/bin/rsync --deamon
2.2.2 名称:nfs01(客户端优化)
1)链接传输密码文件 权限600
[root@nfs01 ~]# ls -l /etc/rsync.password
-rw------- 1 root root 7 Mar 9 13:49 /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password
123456
2)本地数据模块
[root@nfs01 ~]# ls -ld /backup/
drwxr-xr-x 2 root root 4096 Mar 10 17:43 /backup/
2.2.3 名称:web01(客户端优化)
1)传输访问密码文件 权限600
[root@web01 ~]# cat /etc/rsync.password
123456
[root@web01 ~]# ls -dl /etc/rsync.password
-rw------- 1 root root 7 Mar 9 18:02 /etc/rsync.password
2)本地数据存储模块
[root@web01 ~]# ls -ld /backup/
drwxr-xr-x 2 root root 4096 Mar 10 10:30 /backup/
2.3 服务器部署
2.3.1 名称:nfs01(客户端部署)
[root@nfs01 scripts]# cat /server/scripts/www_backup.sh #!/bin/bash #Date: 11:22 2017-3-11 #Author: Xiaodong #Mail 990974238@qq.com #Function:This scripts function is backup all data IP_ADD=$(hostname -I|awk -F "[ ]+" '{print $2}') mkdir -p /backup/$IP_ADD &&\ cd / &&\ #compress tar zcfh /backup/$(hostname -I|awk -F "[ ]+" '{print $2}')/sysconfig_$(date +%F_week0%w).tar.gz var/spool/cron etc/rc.local server/scripts etc/sysconfig/iptables &&\ #check finger find /backup/$IP_ADD -type f -name "*$(date +%F_week0%w).tar.gz"|xargs md5sum >/backup/$IP_ADD/finger_$(date +%F_week0%w).md5 #push info rsync -az /backup/$IP_ADD rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password #clear infor find /backup/$IP_ADD/ -type f -mtime +7 |xargs rm -f
2.3.2 名称:web01(客户端部署)
[root@web01 backup]# cat /server/scripts/.www_backup2.sh #!bin/bash #Date: 11:22 2017-3-11 #Author: Xiaodong #Mail 990974238@qq.com #Function:This scripts function is backup all data IP_ADD=$(hostname -I|awk -F "[ ]+" '{print $2}') mkdir -p /var/html/www/ mkdir -p /app/logs/ mkdir -p /backup/$IP_ADD &&\ #compress cd / &&\ tar zcfh /backup/$(hostname -I|awk -F "[ ]+" '{print $2}')/sysconfig_$(date +%F_week0%w).tar.gz var/spool/cron etc/rc.local server/scripts etc/sysconfig/iptables &&\ tar zcfh /backup/$(hostname -I|awk -F "[ ]+" '{print $2}')/www_backup_$(date +%F_week0%w).tar.gz var/spool/cron var/html/www/ tar zcfh /backup/$(hostname -I|awk -F "[ ]+" '{print $2}')/www_log_$(date +%F_week0%w).tar.gz var/spool/cron app/logs/ #check finger find /backup/$IP_ADD -type f -name "*$(date +%F_week0%w).tar.gz"|xargs md5sum >/backup/$IP_ADD/finger_$(date +%F_week0%w).md5 #push info rsync -az /backup/$IP_ADD rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password #clear infor find /backup/$IP_ADD/ -type f -mtime +7 |xargs rm -f
2.3.3 名称:backup(服务端部署)
[root@backup scripts]# cat www.backup3.sh #!/bin/bash #Date: 11:22 2017-3-11 #Author: Xiaodong #Mail 990974238@qq.com #Function:This scripts function is backup all data #check data info find /backup/*[0-9]* -type f -name "*$(date +%F_week0%w).md5"|xargs md5sum -c >/tmp/mail.txt mail -s "check data" 990974238@qq.com < /tmp/mail.txt #clear info find /backup/ -type f -mtime +180 ! -name "*week01.tar.gz"|xargs rm -f
2.4 配置Linux服务发送邮件功能
1.4.1 设置公共邮箱
[root@backup 172.16.1.8]# tail -3 /etc/mail.rc
#set from=邮箱账号 smtp=smtp.邮箱地址
set from=990974238@qq.com smtp=smtp.qq.com
set smtp-auth-user=990974238 smtp-auth-password=wpasswordw smtp-auth=login
经测试 qq 授权比较麻烦 建议使用163 网易邮箱
2.4.2 配置服务器发送邮件
[root@backup 172.16.1.8]# /etc/init.d/postfix status
master dead but pid file exists
[root@backup 172.16.1.8]# /etc/init.d/postfix restart
Shutting down postfix: [FAILED]
Starting postfix: [ OK ]
[root@backup 172.16.1.8]# /etc/init.d/postfix status
master (pid 8000) is running...