您好,登錄后才能下訂單哦!
我們網站的XX服務隨著業務的增長我們需要配置跨IDC容災情況,為了處理突發事件,避免影響網站的正常訪問
自己在網上看了很多處理方法,結合自己的實際情況,我自己也在在局域網的測試服務器上演練了一把。
測試結果表現良好,現在把我在局域網中的部署整理如下:
思路:
當服務器A 發生故障,服務器B可以迅速接管服務器A的任務,不影響用戶的正常訪問。
當服務器A 故障恢復,服務器A可以馬上接管服務器B的任務,服務器B恢復備機狀態。
做法:
兩臺服務器上配置一個虛擬IP地址,主服務器先綁定虛擬ip地址,當發生故障時,備機自動接管虛擬ip地址
刷新網關路由地址。當主機恢復后,備機釋放虛擬ip地址,主機再次主動接管虛擬ip地址,刷新網關路由地址
結構圖:
主服務器:ip 192.168.190.199
備服務器: ip 192.168.190.208
vip:192.168.190.88
gateWay=192.168.190.254
netMask=255.255.255.0
bcast=192.168.190.255
步驟:
1、配置虛擬ip:192.168.190.88 到 www.test.com 綁定虛擬ip
/sbin/ifconfig eth0:1 192.168.190.88 broadcast 192.168.190.255
netmask 255.255.255.0 up
/sbin/route add -host 192.168.190.88 dev eth0:1
2、刷新網關路由
/sbin/arping -i eth0 -s 192.168.190.88 192.168.190.254 > /dev/null 2>&1
3、當發生故障時,主機192.168.190.199 ,釋放虛擬ip192.168.190.88,備機192.168.190.208接管 虛擬ip192.168.190.88
/sbin/ifconfig eth0:1 192.168.190.88 broadcast 192.168.190.255 netmask 255.255.255.0 down
/sbin/arping -i eth0 -s 192.168.190.88 192.168.190.254 > /dev/null 2>&1
4、這時 www.test.com 解析到了備機服務器192.168.190.208
5、重啟備機web服務器
6、若主機192.168.190.199服務恢復正常,備機192.168.190.208
釋放虛擬IP,主機,綁定虛擬IP 192.168.190.88
備機釋放虛擬ip:
/sbin/ifconfig eth0:1 192.168.190.88 broadcast 192.168.190.255 netmask 255.255.255.0 down
/sbin/arping -i eth0 -s 192.168.190.88 192.168.190.254 > /dev/null 2>&1
7、重啟啟動主備機web服務
主機192.168.190.199
autoSwitchMain.sh切換腳本
#!/bin/sh
#############################################################
#desc:服務器宕機自動切換服務
#author:gaozhonghui
#mail:toptreegzh@163.com
#date:20121101
#############################################################
vip=192.168.190.88
gateWay=192.168.190.254
netMask=255.255.255.0
bcast=192.168.190.255
function_bind_vip1(){
/sbin/ifconfig eth0:1 ${vip} broadcast ${bcast} netmask ${netMask} up
/sbin/route add -host ${vip} dev eth0:1
}
function_remove_vip1(){
/sbin/ifconfig eth0:1 ${vip} broadcast ${bcast} netmask ${netMask down
}
function_vip_arping1(){
/sbin/arping -i eth0 -s ${vip} ${gateWay} > /dev/null 2>&1
}
function_restart_nginx(){
/web/webserver/nginx/sbin/nginx -s reload
}
bind_time_vip="N"
while true
do
httpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.168.190.199`
if [ x${httpCode_rip1} == "x200" ];
then
if [ ${bind_time_vip} == "N" ];
then
function_bind_vip1
function_vip_arping1
bind_time_vip="Y"
fi
function_vip_arping1
else
if [ ${bind_time_vip} == "Y" ]
then
function_remove_vip1
bind_time_vip="N"
fi
fi
sleep 10
done
然后linux 啟動守候進程
/usr/bin/nohup /bin/sh /home/Gzh/shell/ autoSwitchMain.sh 2>&1 > /dev/null &
備機192.168.190.208:
autoSwitchSlave.sh
#!/bin/sh
#############################################################
#desc:服務器宕機自動切換服務
#author:gaozhonghui
#mail:toptreegzh@163.com
#date:20121101
#############################################################
vip=192.168.190.88
gateWay=192.168.190.254
netMask=255.255.255.0
bcast=192.168.190.255
function_bind_vip1(){
/sbin/ifconfig eth0:1 ${vip} broadcast ${bcast} netmask ${netMask} up
/sbin/route add -host ${vip} dev eth0:1
}
function_remove_vip1(){
/sbin/ifconfig eth0:1 ${vip} broadcast ${bcast} netmask ${netMask} down
}
function_vip_arping1(){
/sbin/arping -i eth0 -s ${vip} ${gateWay} > /dev/null 2>&1
}
function_restart_nginx(){
/web/webserver/nginx/sbin/nginx -s reload
}
bind_time_vip="N"
while true
do
httpCode_rip1=`/usr/bin/curl -o /dev/null -s -w %{http_code} http://192.168.190.199`
if [ x${httpCode_rip1} == "x200" ];
then
if [ ${bind_time_vip} == "Y" ];
then
function_remove_vip1
bind_time_vip="N"
fi
function_vip_arping1
else
if [ ${bind_time_vip} == "N" ]
then
function_bind_vip1
function_vip_arping1
bind_time_vip="Y"
fi
fi
sleep 10
done
啟動守候進程
/usr/bin/nohup /bin/sh /home/Gzh/shell/autoSwitchSlave.sh 2>&1 > /dev/null &
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。