變更現有的在線業務對外服務架構

最近的由於業務變動的需求較多,經常同步外網的頁面.
導致某次由於一個程序員不小心的編碼,將請求全部指向了源服務器(爲CDN提供數據的服務器).直接導致源服務器down機.所有業務對外訪問異常.爲了減少類似的問題導致的down機,同時解決目前對外服務的單點的危險.
重新制定了外網服務的優化方案.
如圖:
[img]http://dl.iteye.com/upload/attachment/147567/345d5b4c-55bb-3da3-b1ef-daedd8ba1a65.jpg[/img]
改造後的優點:
1.保證盒子和彈窗業務都有雙點進行互備.
2.通過域名區分外網訪問的源服務器,避免由於某個業務的問題,直接導致的其他業務同時出現down機的危險.
3.CDN訪問直接定向到某個IP.此時訪問的負載均衡設備(F5或Ngins),如果現有的負載均衡設備down機,立刻將該業務訪問的IP直接綁定其某臺業務源服務器.解決用戶不能訪問的風險.
4.優化現有的部署服務到多臺源服務器的代碼.

將需要同步的文件發佈到指定的部署目錄:
1)盒子業務,文件名稱box5_rsync.sh:
#!/bin/bash

#box public dirs
BOX5DIRS='js,style,images,img,flash,search'

#box5 public file
BOXFILE='index.html,data_ad.xml'

SOURCE_DIR='/var/www/html/admin/public_html/box5'
TARGET_DIR='/var/www/html/admin/public_html/box5_online'


#function rsync dirs
rsync_dirs()
{
for j in `echo ${1} | tr ',' ' '`
do
echo ' /usr/bin/rsync -rtDvz' $SOURCE_DIR/$j/ $TARGET_DIR/$j
/usr/bin/rsync -rtDvz $SOURCE_DIR/$j/ $TARGET_DIR/$j > /dev/null 2>&1
done
}

#function rsync file
rsync_file()
{
for j in `echo ${1} | tr ',' ' '`
do
echo ' /usr/bin/rsync -rtDvz' $SOURCE_DIR/$j $TARGET_DIR/$j
/usr/bin/rsync -rtDvz $SOURCE_DIR/$j $TARGET_DIR/$j > /dev/null 2>&1
done
}

rsync_dirs $BOX5DIRS
rsync_file $BOXFILE


2)彈窗業務,文件名稱pop_rsync.sh

#!/bin/bash

#pop public dir
POPDIRS='178,kj,js,style,images,xml,flash,tab2'

#pop public file
POPFILE='index.html'

#pop coop dir
TAOBAO_COOP_DIRS='taobao/css,taobao/js,taobao/flash,taobao/images'
VANCL_COOP_DIRS='vancl/img,vancl/js,vancl/css'
BEAUTY_COOP_DIRS='beauty/img,beauty/css'
FRIEND_COOP_DIRS='friend/css,friend/js,taobao/images'

SOURCE_DIR='/var/www/html/admin/public_html/pop'
TARGET_DIR='/var/www/html/admin/public_html/pop_online'

#function rsync dirs
rsync_dirs()
{
for j in `echo ${1} | tr ',' ' '`
do
echo ' /usr/bin/rsync -rtDvz' $SOURCE_DIR/$j/ $TARGET_DIR/$j
/usr/bin/rsync -rtDvz $SOURCE_DIR/$j/ $TARGET_DIR/$j > /dev/null 2>&1
done
}

#function rsync file
rsync_file()
{
for j in `echo ${1} | tr ',' ' '`
do
echo ' /usr/bin/rsync -rtDvz '$SOURCE_DIR/$j $TARGET_DIR/$j
/usr/bin/rsync -rtDvz $SOURCE_DIR/$j $TARGET_DIR/$j > /dev/null 2>&1
done
}

rsync_dirs $POPDIRS

rsync_dirs $TAOBAO_COOP_DIRS
rsync_dirs $VANCL_COOP_DIRS
rsync_dirs $BEAUTY_COOP_DIRS
rsync_dirs $FRIEND_COOP_DIRS


rsync_file $POPFILE

將部署目錄同步到遠端的源服務器:

#!/bin/bash

SERVERS='192.168.1.15 192.168.1.70 192.168.1.150 192.168.1.71'
SOURCE_DIR='/var/www/html/admin/public_html'
TARGET_DIR='/opt/data/moviebox/root'
LOG_DIR='/home/rsync/logs'
CUR_TIME=`date +\%Y\%m\%d\%H`
for j in $SERVERS
do
#box5
echo "RSYNC BOX5"
echo "server IP:"$j >> $LOG_DIR/box5_$CUR_TIME.log
/usr/bin/rsync -rtDvz $SOURCE_DIR/box5_online/ $j:$TARGET_DIR/box5 >> $LOG_DIR/box5_$CUR_TIME.log

#pop
echo "RSYNC POP"
echo "server IP:"$j >> $LOG_DIR/pop_$CUR_TIME.log
/usr/bin/rsync -rtDvz $SOURCE_DIR/pop_online/ $j:$TARGET_DIR/pop >> $LOG_DIR/pop_$CUR_TIME.log

done
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章