千家信息网

中小规模群集架构实战

发表于:2024-11-26 作者:千家信息网编辑
千家信息网最后更新 2024年11月26日,前方Web Server的数据存放在NFS server,NFS Server定时监控数据,数据变动时自动同步至rsync服务器上,在rsync服务器上存放着 Web Server的数据文件、以及各服
千家信息网最后更新 2024年11月26日中小规模群集架构实战

前方Web Server的数据存放在NFS serverNFS Server定时监控数据,数据变动时自动同步至rsync服务器上,在rsync服务器上存放着 Web Server的数据文件、以及各服务器的配置文件。Web Server的数据均在NFSrsync

上机实战

某公司里有一台Web服务器,里面的数据很重要,如果硬盘坏了,数据会丢失,现在领导要求把数据备份,这样Web服务器数据丢失可以进行恢复。

需求:

每天晚上00点整在Web服务器A上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送到服务器B上备份保留(备份思路可以是现在本地按日志打包,然后再推到备份服务器B上)。

问题一、实现把Web服务器A数据备份到服务器B

具体要求:

1) Web服务器A和备份服务器B的备份目录必须都为/backup

2) 系统配置文件包括但不限于:

a) 定时任务服务的配置文件(/var/spool/cron/root

b) 开机自启动的配置文件(/etc/rc.local

c) 日常脚本的目录(/server/scripts

d) 防火墙iptables的配置文件(/etc/sysconfig/iptables

e) 思考还有什么需要备份

3) Web服务器站点目录假定为(/var/html/www

4) Web服务器A访问日志路径假定为(/app/logs

5) Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满),备份服务器B上要保留6个月的数据副本。

6) 备份服务器B上要按照备份数据服务器的IP为目录保存,打包的文件按照时间名字保存。

实现:

1.B服务器配置rsync服务端

uid=rsync

gid=rsync

use chroot = no

max connections = 2000

timeout = 600

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 = 192.168.24.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

#############################

[backup]

comment = backup server

path=/backup

创建rsync用户 傀儡账号 没有家目录

useradd rsync -s /sbin/nologin -M

创建/backup目录

Mkdir /backup

创建rsync.password密码文件

Echo "rsync_backup:oldboy">/etc/rsync.password

Chmod 600 /etc/rsync.password

Rsync -daemon 开启测试能否正常工作

Rsync -daemon

加入开机自启动

echo "rsync --daemon">>/etc/rc.local

检查能否传输

rsync -avz /tmp/backup/ rsync_backup@192.168.24.32::backup

2.测试备份文件

a) 定时任务服务的配置文件(/var/spool/cron/root

b) 开机自启动的配置文件(/etc/rc.local

c) 日常脚本的目录(/server/scripts

d) 防火墙iptables的配置文件(/etc/sysconfig/iptables

e) 思考还有什么需要备份

7) Web服务器站点目录假定为(/var/html/www

8) Web服务器A访问日志路径假定为(/app/logs

a-d打包,把78分别打包78有可能数据很大所以要单独打包

mkdir /backup/"`ifconfig ens192|awk -F '[ :]+' 'NR==2 {print $3}'`_$(date +%F)"

cp /etc/rc.local /backup/192.168.24.21_2019-11-14/rc.local_$(date +%F)

其他的文件以这种格式复制

%文件名_%日期

写成sh脚本:

[root@lnmp01 /]# vi backup.sh

IP=$(ifconfig ens192|awk -F '[ :]+' 'NR==2 {print $3}')

Path="/backup/$IP."

[ ! -d /backup/$IP ] && mkdir /backup/$IP -p

#!/bin/sh

tar zcf $Path/www_$(date +%F).tar.gz /var/html/www/

tar zcf $Path/conf_$(date +%F).tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /server/scrips

tar zcf $Path/log_$(date +%F).tar.gz /app/logs/

#backup to server

rsync -avz /backup rsync_backup@192.168.24.32::backup --password-file=/etc/rsync.password

#del

find /backup -type f -name "*.tar.gz" -mtime +7|xargs rm -f

制定定时任务:

[root@lnmp01 backup]# crontab -l

#####

00 00 * * * /bin/sh /server/scrips/backup.sh &> /dev/null

在服务端制定保留6个月的数据的定时任务

[root@localhost ~]# vi /server/scrips/backupdel.sh

/bin/find /backup -type f -name "*.tar.gz" -mtime +180|xargs rm -f

[root@localhost ~]# crontab -e

no crontab for root - using an empty one

#####

00 00 * * * /bin/sh /server/scrips/backupdel.sh

通过添加md5校验值确定文件完整性

[root@lnmp01 backup]# find /backup/ -type f -name "*$(date +%F).tar.gz"|xargs md5sum > /backup/flag_$(date +%F)

使用-c参数测试文件是否完整

[root@lnmp01 backup]# md5sum -c flag_2019-11-19

0