码迷,mamicode.com
首页 > 其他好文 > 详细

全网备份+NFS存储+单点实时同步.docx

时间:2017-12-31 23:36:56      阅读:448      评论:0      收藏:0      [点我收藏+]

标签:load   info   ros   拒绝   lib   2.3   pass   工作   while   


 

 

老男孩教育linux 就业第八和九关(周)课后学习效果能力上大考察

(我们不生企业项目方案,我们只是企业项目方案的搬运工)

 

(共 3 道题,每题 33.3 分共 100 分)

1)16:00 开考,闭卷考时间 90 分钟!务必还原照,模拟企业工作

2)交卷时间 17:30 分钟保留环境,举手找班主任、或指定导后记录成

3)考试完毕后整个部署程需要记录笔记提保留。

1.1 逻辑图

技术分享图片

 

1.2  50 台集群服器全网数据备份解决方案

1、基本备份要求

已知 3 台服务器主名分别为 A(web01)B(backup) C(nfs01)

要求每天晚上 00  Web 服务器 A 上打包份系统配置文件序目录及访

问日志并通过 rsync 推送备服务器 B 上备保留(备份思路可在本地按日期 打包,然后再推到务器 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 为太 )

6)备份服务器 B ,周一的所有数据副它要保留 6 个月的数据本。

7)服务器 B 备份务器的 IP 录保按照 保存。

特别是网项目,很

2、本项目的整个备份逻辑结构如下图:

 

技术分享图片

明:

1不会告诉会提WEB 服务重要,请你备份

2)逻架构可能领导你画而是了领的意,然想出份的方 案,的一

3需要确保备份的数据尽整正确在备份服务器上对备份的数据进行检查把备份的成功及失结果

信息发给系统管理员邮箱

 

 

1.2.1  一、搭建rsync备份服务器

backup服务器上操作(服务端)

1、检查rsync是否安装

[root@backup ~]# rpm -qa rsync

rsync-3.0.6-12.el6.x86_64

2、创建用户rsync

[root@backup ~]# useradd rsync -s /sbin/nologin –M

[root@backup ~]# id rsync

uid=501(rsync) gid=501(rsync) =501(rsync)

3、创建/etc/rsyncd.conf

[root@backup backup]# cat /etc/rsyncd.conf

#!/bin/sh

uid = rsync

gid = rsync

userchroot = no

read only = false

[backup]

path = /backup

auth users = rsync_backup

secrets file = /etc/rsync.password

完整配置文件

##rsyncd.conf start##

uid=rsync                                            #配置uid

gid=rsync                                            #配置gid

use chroot = no                                      #安全机制,可不配

max connections = 200                                #最大连接数

timeout = 300                                        #超时时间

pid file = /var/run/rsyncd.pid                       #pid文件

lock file = /var/run/rsync.lock                      #锁文件

log file = /var/log/rsyncd.log                       #日志文件

[backup]                                             #模块名

path = /backup                                       #路径

ignore errors                                        #忽略错误

read only = false                                    #可写

list = false                                         #不允许列表

hosts allow = 10.0.0.0/24                            #允许主机

hosts deny = 0.0.0.0/32                              #拒绝主机

auth users = rsync_backup                            #用户名

secrets file = /etc/rsync.password                   #密码文件

 

4、创建/backup/目录并授权权限

[root@backup ~]# mkdir /backup/

[root@backup ~]# chown -R rsync.rsync /backup/

[root@backup ~]# ls -ld /backup/

drwxr-xr-x 2 rsync rsync 4096 6   1 12:42 /backup/

5、设置用户名和密码文件/etc/rsync.password

[root@backup ~]# echo "rsync_backup:oldboy" >/etc/rsync.password

[root@backup ~]# chmod 600 /etc/rsync.password

[root@backup ~]# ll /etc/rsync.password

-rw------- 1 root root 20 6   1 12:43 /etc/rsync.password

[root@backup ~]# cat /etc/rsync.password

rsync_backup:oldboy

6、启动rsync服务

[root@backup ~]# rsync --daemon

[root@backup ~]# lsof -i :873

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

rsync   1962 root    3u  IPv4  12587      0t0  TCP *:rsync (LISTEN)

rsync   1962 root    5u  IPv6  12588      0t0  TCP *:rsync (LISTEN)

web01上做操作(客户端)

1、创建/backup/目录

[root@web01 ~]# mkdir /backup

[root@web01 ~]# ls -ld /backup/

drwxr-xr-x 2 root root 4096 6   1 12:46 /backup/

2、创建密码文件/etc/rsync.password

[root@web01 ~]# echo "oldboy" >/etc/rsync.password

[root@web01 ~]# cat /etc/rsync.password

oldboy

3、给rsync.password密码文件授于600权限

[root@web01 ~]# chmod 600 /etc/rsync.password

[root@web01 ~]# ll /etc/rsync.password

-rw------- 1 root root 7 6   1 12:46 /etc/rsync.password

4、使用rsync进行推拉数据

推:

[root@web01 ~]# cd /backup/

[root@web01 backup]# ls

[root@web01 backup]# touch {a..z}

[root@web01 backup]# ls

a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z

[root@web01 backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

sending incremental file list

./

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

 

sent 1121 bytes  received 505 bytes  3252.00 bytes/sec

total size is 0  speedup is 0.00

拉:

[root@web01 backup]# rsync -avz rsync_backup@172.16.1.41::backup /backup/ --password-file=/etc/rsync.password         

receiving incremental file list

./

1

10

2

3

4

5

6

7

8

9

a

b

c

d

e

f

g

h

i

j

k

l

m

n

o

p

q

r

s

t

u

v

w

x

y

z

 

sent 751 bytes  received 1724 bytes  4950.00 bytes/sec

total size is 0  speedup is 0.00

[root@web01 backup]# ls

1  10  2  3  4  5  6  7  8  9  a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p  q  r  s  t  u  v  w  x  y  z

1.2.2 二、web01本地测试

[root@web01 backup]# cd /

[root@web01 /]# mkdir /var/html/www/ -p

[root@web01 /]# mkdir /app/logs -p

[root@web01 /]# touch /var/html/www/html{1..10}.log

[root@web01 /]# touch /app/logs/java{a..h}.txt

[root@web01 /]# tar zcfh /backup/conf_$(date +%F).tar.gz etc/rc.local etc/sysconfig/iptables  var/spool/cron/root

[root@web01 /]# ls /backup/

conf_2016-06-01.tar.gz

[root@web01 /]# tar zcf /backup/log_$(date +%F).tar.gz var/html/www/ app/logs/

[root@web01 /]# ls /backup/

conf_2016-06-01.tar.gz  log_2016-06-01.tar.gz

[root@web01 /]# tar zcf /backup/sh_$(date +%F).tar.gz server/scirpts/

[root@web01 /]# ls /backup/

conf_2016-06-01.tar.gz  log_2016-06-01.tar.gz  sh_2016-06-01.tar.gz

1.2.3 web01本地脚本

[root@web01 scirpts]# cat bak.sh

#!/bin/sh

LANG=en

if [ `date +%w` -eq 1 ];then

        DATE="$(date +%F)_mon"

else

        DATE=$(date +%F)

fi

 

IP=$(ifconfig eth0|awk -F "[ :]+" ‘NR==2{print $4}‘)

Path="/backup/$IP"

[ ! -d $Path ] && mkdir $Path -p

#tar

cd / &&\

tar zcfh $Path/conf_${DATE}.tar.gz etc/rc.local etc/sysconfig/iptables  var/spool/cron/root

tar zcf $Path/log_${DATE}.tar.gz var/html/www/ app/logs/

tar zcf $Path/sh_${DATE}.tar.gz server/scirpts/

#flag

find /backup/ -type f -name "*.tar.gz"|xargs md5sum >$Path/flag_${DATE}_${IP}

#rsync

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

#del before 7day

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

1.2.4 本地定时任务

[root@web01 scirpts]# crontab -l

#bak to 41

00 00 * * * /bin/sh /server/scirpts/bak.sh >/dev/null 2>&1

1.2.5 backup服务器上脚本

cat check.sh

#!/bin/sh

find /backup/ -type f -name "flag*"|xargs md5sum -c >/opt/flag_mail_$(date +%F).txt

mail -s "web服务器备份$(date +%F) to 王凯" wangkaiok30@163.com </opt/flag_mail_$(date +%F).txt

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

 

配置/etc/mail.rc,切换到最后,插入如下内容:

set from=wangkaiok30@163.com smtp=smtp.163.com smtp-auth-user=wangkaiok30 smtp-auth-password=wk123 smtp-auth=login

1.2.6 backup定时任务

[root@backup scirpts]# crontab -l

#mail

00 08 * * * /bin/sh /server/scirpts/check.sh >/dev/null 2>&1

 

1.3  网站集群后端 NFS 共享存储搭建及优化解决方案

1、配置 NFS 服务:

要求:

1 NFS C(nfs01)上共享/data/w_shared /data/r_shared NFS

A(web01)B(backup)可实A(web01)B(backup)只读

/data/r_shared/data/w_shared

2NFS 客户端 A(web01)上的/data/b_w/data/b_r,

NFS 客户端 B(backup)上的/data/w_你的名字写) ,/data/r_你名英文

(读

3 NFS 客户端 B(backup)上的 NFS 可写创建NFS 客户端 A(web01)

上可件,

4 NFS

2、本项目的整个备份逻辑结构如下(红色虚线部分

 

技术分享图片

1.3.1 实战

#1、安装软件

yum install  nfs-utils rpcbind -y

rpm -qa nfs-utils rpcbind

#2、启动服务(注意先后顺序)

/etc/init.d/rpcbind start

rpcinfo -p localhost

/etc/init.d/nfs start

rpcinfo -p localhost

 

#3、设置开机自启动

chkconfig nfs on

chkconfig rpcbind on

#4、配置nfs服务

[root@nfs01 data]# mkdir /data/w_shared -p

[root@nfs01 data]# mkdir /data/r_shared -p

[root@nfs01 data]# ls

r_shared  w_shared

 

cat >>/etc/exports <<EOF

####/data/w_shared

/data/w_shared 172.16.1.0/24(rw,sync)

####/data/r_shared

/data/r_shared 172.16.1.0/24(ro,sync)

EOF

#(查看nfs默认使用的用户以及共享的参数cat /var/lib/nfs/etab

chown -R nfsnobody.nfsnobody /data/

ls -ld /data/

#5、重新加载服务(优雅重启)

/etc/init.d/nfs reload  =====exportfs -r

#6、检查或测试挂载

showmount -e localhost

 

####客户端(nfs

#1、安装软件

yum install  nfs-utils rpcbind -y

rpm -qa nfs-utils rpcbind

#2、启动rpcbind

/etc/init.d/rpcbind start

#3、配置开机自启动

chkconfig rpcbind on

#4、测试服务端共享情况

showmount -e 172.16.1.31

#5、挂载

[root@backup /]# mkdir /data/w_wangkai -p

[root@backup /]# mkdir /data/r_wangkai -p

[root@backup /]# ls /data/

r_wangkai  w_wangkai

 

[root@backup /]# showmount -e 172.16.1.31

Export list for 172.16.1.31:

/data/r_shared 172.16.1.0/24

/data/w_shared 172.16.1.0/24

[root@backup /]# mount -t nfs 172.16.1.31:/data/w_shared /data/w_wangkai/

[root@backup /]# mount -t nfs 172.16.1.31:/data/r_shared /data/r_wangkai/

[root@backup /]# df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda3             8.6G  1.5G  6.8G  18% /

tmpfs                 242M     0  242M   0% /dev/shm

/dev/sda1             190M   36M  145M  20% /boot

172.16.1.31:/data/w_shared

                      8.6G  1.5G  6.8G  18% /data/w_wangkai

172.16.1.31:/data/r_shared

                      8.6G  1.5G  6.8G  18% /data/r_wangkai

#6backup测试读,写

[root@backup data]# cd r_wangkai/

[root@backup r_wangkai]# ls

oldboy  oldgirl20  oldgirl21  oldgirl22  oldgirl23  oldgirl24  oldgirl25  oldgirl26  oldgirl27  oldgirl28  oldgirl29  oldgirl30

[root@backup r_wangkai]# rm -f oldgirl*

rm: 无法删除"oldgirl20": 只读文件系统

rm: 无法删除"oldgirl21": 只读文件系统

rm: 无法删除"oldgirl22": 只读文件系统

rm: 无法删除"oldgirl23": 只读文件系统

rm: 无法删除"oldgirl24": 只读文件系统

rm: 无法删除"oldgirl25": 只读文件系统

rm: 无法删除"oldgirl26": 只读文件系统

rm: 无法删除"oldgirl27": 只读文件系统

rm: 无法删除"oldgirl28": 只读文件系统

rm: 无法删除"oldgirl29": 只读文件系统

rm: 无法删除"oldgirl30": 只读文件系统

[root@backup r_wangkai]# cd ..

[root@backup data]# cd

r_wangkai/ w_wangkai/

[root@backup data]# cd w_wangkai/

[root@backup w_wangkai]# ls

l  u  v  w  x  y  z

[root@backup w_wangkai]# touch {1..10}

[root@backup w_wangkai]# ls

1    10  2  3  4  5  6  7  8  9  l  u  v  w  x  y  z

####Web01测试读,

[root@web01 b_r]# ls

oldboy  oldgirl20  oldgirl21  oldgirl22  oldgirl23  oldgirl24  oldgirl25  oldgirl26  oldgirl27  oldgirl28  oldgirl29  oldgirl30

[root@web01 b_r]# rm -f oldgirl*

rm: 无法删除"oldgirl20": 只读文件系统

rm: 无法删除"oldgirl21": 只读文件系统

rm: 无法删除"oldgirl22": 只读文件系统

rm: 无法删除"oldgirl23": 只读文件系统

rm: 无法删除"oldgirl24": 只读文件系统

rm: 无法删除"oldgirl25": 只读文件系统

rm: 无法删除"oldgirl26": 只读文件系统

rm: 无法删除"oldgirl27": 只读文件系统

rm: 无法删除"oldgirl28": 只读文件系统

rm: 无法删除"oldgirl29": 只读文件系统

rm: 无法删除"oldgirl30": 只读文件系统

[root@web01 b_r]# cd ..

[root@web01 data]# ls

b_r  b_w

[root@web01 data]# cd b_w/

[root@web01 b_w]# ls

1  10  2  3  4  5  6  7  8  9  l  u  v  w  x  y  z

[root@web01 b_w]# rm -f {4..9}

[root@web01 b_w]# ls

1  10  2  3  l  u  v  w  x  y  z

 

 

 

 

 

1.4  解决网站集后端 NFS 共享存储单点实现实时数据同步

1、实时数据同步要求:

用户通  web  数据  NFS  服务  C(nfs01),同复制份服

B(backup)

 

2、逻辑图如下:

 

技术分享图片

1.4.1 实战

1.4.2 配置nfsbackup服务器实时同步(rsync+inotify

1.4.3 Rsync脚本配置变动

[root@backup backup]# cat /etc/rsyncd.conf

##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 = 10.0.0.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password

[backup]

comment = "backup by wangkai"   

path = /backup

[data]

path = /data

1.4.4 部署inotify

#1、使用EPEL yum源(也可编译安装)

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

#2、安装inotify-tools安装包

yum install inotify-tools -y

#3、监控测试

inotifywait -mrq --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w%f‘ -e close_write,delete /backup

#4、写脚本进行监控

[root@nfs01 scripts]# cat inotify_data.sh

#!/bin/sh

/usr/bin/inotifywait -mrq --format ‘%w%f‘ -e create,close_write,delete /data \

|while read file

do

  cd /data &&

  rsync -az /data/ --delete rsync_backup@172.16.1.41::data \

  --password-file=/etc/rsync.password

done

backup变换角色,需先把挂载点卸载掉

最后测试结果

用户写入数据,先写加web01/data/目录中,由web01通过nfs文件系统,从而到达nfs中的/data/目录,然后nfsbackup服务器做实时同步,使数据到达backup服务器的/data目录中。Rsync做了多个模块的实例。

[root@web01 b_w]# touch yonghu{1..10}

[root@web01 b_w]# ls

yonghu1  yonghu10  yonghu2  yonghu3  yonghu4  yonghu5  yonghu6  yonghu7  yonghu8  yonghu9

[root@nfs01 w_shared]# ls

yonghu1  yonghu10  yonghu2  yonghu3  yonghu4  yonghu5  yonghu6  yonghu7  yonghu8  yonghu9

[root@backup w_shared]# ls

yonghu1  yonghu10  yonghu2  yonghu3  yonghu4  yonghu5  yonghu6  yonghu7  yonghu8  yonghu9





附件列表

     

    全网备份+NFS存储+单点实时同步.docx

    标签:load   info   ros   拒绝   lib   2.3   pass   工作   while   

    原文地址:https://www.cnblogs.com/wangkaiok/p/8159221.html

    (0)
    (0)
       
    举报
    评论 一句话评论(0
    登录后才能评论!
    © 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
    迷上了代码!