企业集群架构之全网备份

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...

 

posted @ 2017-03-13 00:14  王晓冬  阅读(1787)  评论(0编辑  收藏  举报