標籤:lm
第1章 50台叢集伺服器全網備份解決方案1.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為目錄儲存備份,備份的檔案按照時間名字儲存
===========================================================================================1.1.1準備環境:
1.1.1.1 #服務端環境:
rpm -qa rsync
yum install rsync -y
useradd -s /sbin/nologin -M rsync
id rsync
vim /etc/rsyncd.conf
echo "rsync_backup:oldboy">/etc/rsync.password
chmod 600 /etc/rsync.password
mkdir /backup -p
chown -R rsync.rsync /backup
rsync --daemon
ps -ef|grep rsync|grep -v grep
1.1.1.2 #用戶端環境:
echo "oldboy" >/etc/rsync.password
chmod 600 /etc/rsync.password
mkdir /backup -p
==================================用戶端推送指令碼===========================================
#!/bin/sh
ip=$(ifconfig eth0|awk -F "[: ]+"‘NR==2{print $4}‘)
path="/backup"
[ ! -d ${path}/$ip ] && mkdir -p${path}/$ip &> /dev/null
DATE=`date +%u -d "-1day"`
if [ $DATE -eq 1 ];then
DATE=${DATE}_MON
fi
#tar
cd / && \
tar zcf /$path/$ip/conf_${DATE}.tar.gzvar/spool/cron/root etc/rc.local server/scripts etc/sysconfig/iptables&&\
tar zcf /$path/$ip/www_${DATE}.tar.gzvar/html/www && \
tar zcf /$path/$ip/logs_${DATE}.tar.gzapp/logs && \
#md5sum
find $path -type f -name"*.tar.gz"|xargs md5sum >/$path/$ip/bak_${DATE}.flag
#rsync
rsync -az /$path/[email protected]::backup --password-file=/etc/rsync.password
#delete
find $path/$ip -type f -mtime +7|xargs rm-f
=====================================服務端指令碼============================================
#!/bin/sh
ip=$(ifconfig eth1|awk -F "[: ]+"‘NR==2{print $4}‘)
path="/backup"
[ ! -d ${path}/$ip ] && mkdir -p${path}/$ip &> /dev/null
DATE=`date +%u -d "-1day"`
if [ $DATE -eq 1 ];then
DATE=${DATE}_MON
fi
find /backup/ -type f -name"bak_*.flag"|xargs md5sum -c >/$path/$ip/mail.${DATE}.log
mail -s "backup web_${DATE}-lm"[email protected] <$path/$ip/mail.${DATE}.log
find $path -type f ! -name"*MON*" -mtime +180|xargs rm -f
第2章 網站集合群後端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。
2)NFS用戶端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 服務
硬體:sas/ssd磁碟,買多塊,硬體raid,指定raid5或raid10.網卡輸送量要大,至少千兆(多塊bond)
NFS伺服器端配置:/data 10.0.0.0/24(rw,sync,all_squash,anonuid=65534,anongid=65534)
NFS用戶端掛載最佳化配置命令:
mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,rsize=131072,wsize=13107210.0.0.31:/data/ /mnt ←兼顧安全效能
cat >>/etc/sysctl.conf<<EOF
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
EOF
sysctl -p
NFS系統應用的優缺點說
====================================服務端環境=============================================
yum install nfs-utils rpcbind -y
mkdir /data/w_shared -p
mkdir /data/r_shared -p
chown -R nfsnobody.nfsnobody /data/
/etc/init.d/rpcbind start
/etc/init.d/nfs start
vim /etc/exports
/data/r_shared 172.16.1.0/24(ro,sync,all_squash)
/data/w_shared172.16.1.0/24(rw,sync,all_squash)
====================================用戶端掛載=============================================
[backup]
mount -t nfs 172.16.1.31:/data/r_shared/data/r_luoming/
mount -t nfs 172.16.1.31:/data/w_shared/data/w_luoming/
[web01]
mount -t nfs 172.16.1.31:/data/r_shared/data/b_r
mount -t nfs 172.16.1.31:/data/w_shared/data/b_w
操作樣本:
[[email protected] b_w]# pwd
/data/b_w
[[email protected] b_w]# touch oldboy{1..5}.txt
[[email protected] b_w]# ls
oldboy1.txt oldboy2.txt oldboy3.txt oldboy4.txt oldboy5.txt
[[email protected] w_shared]# pwd
/data/w_shared
[[email protected] w_shared]# ls
oldboy1.txt oldboy2.txt oldboy3.txt oldboy4.txt oldboy5.txt
[[email protected] w_luoming]# pwd
/data/w_luoming
[[email protected] w_luoming]# ls
oldboy1.txt oldboy2.txt oldboy3.txt oldboy4.txt oldboy5.txt
[[email protected] b_r]# touch 123.txt
touch: cannot touch `123.txt‘: Read-onlyfile system ---唯讀
第3章 解決網站集合群後端NFS共用儲存單點實現即時資料同步
1、即時資料同步要求:
當使用者通過 web 伺服器將資料寫入到 NFS 伺服器C(nfs01)時,同時複製到備份伺服器B(backup)
nfs服務端設定檔:
[[email protected] data]# cat /etc/exports
#share /data by lm at 20161228
/data 172.16.1.0/24(rw,sync,all_squash)
共用目錄:
[[email protected] data]# ll -d /data/
drwxr-xr-x 4 nfsnobody nfsnobody 266240 Jan 7 20:52 /data/
nfs服務端指令碼:
vim /server/scripts/inotify.sh
#!/bin/sh
Path=/data
Ip=172.16.1.41
/usr/bin/inotifywait -mrq --format ‘%w%f‘ -ecreate,delete,close_write /data/ |while read line
do
if [ -f$line ];then
rsync-az $line --delete [email protected]$Ip::nfsbackup--password-file=/etc/rsync.password
else
cd $Path&& \
rsync-az /data/ --delete [email protected]$Ip::nfsbackup--password-file=/etc/rsync.password
fi
done
web用戶端掛載:
[[email protected] mnt]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 6.9G 1.5G 5.1G 23%/
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 190M 33M 147M 19% /boot
172.16.1.31:/data 6.9G 1.6G 4.9G 25% /mnt
建立檔案:
[[email protected] mnt]# touch lidao.txt
nfs服務端查看:
[[email protected] data]# ll lidao.txt
-rw-r--r-- 1 nfsnobody nfsnobody 0 Jan 7 20:58 lidao.txt
查看backup備份伺服器:
[[email protected] nfsbackup]# ll lidao.txt
-rw-r--r-- 1 rsync rsync 0 Jan 7 20:58 lidao.txt
老男孩教育32期-08-09次上機測試題