在高可用集羣環境中,通常都須要使用浮動IP來實現web高可用(High Availability)。web
浮動IP的概念以及爲何須要浮動IP請參考:浮動IP(FLOAT IP)vim
本篇文章主要講實際操做步驟:服務器
能夠是雙機,也能夠是多機,主服務器爲172.24.8.55,浮動IP設置爲172.24.8.80。測試
1、配置浮動IP:ui
利用單個網卡能夠綁定多個IP地址的技術。spa
一、主服務器配置浮動IP.net
在主服務器上拷貝eth0位eth0:1,並作修改。code
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1blog
編輯文件ifcfg-eth0:1:crontab
vim /etc/sysconfig/network-scripts/ifcfg-eth0:1
修改DEVICE爲eth0:1,NM_CONTROLLED設置爲no,IPADDR改成浮動IP地址172.24.8.80,去掉網關信息,修改完以下:
DEVICE="eth0:1"
BOOTPROTO="static"
ONBOOT="yes"
NM_CONTROLLED="no"
TYPE="Ethernet"
IPADDR="172.24.8.80"
NETMASK="255.255.255.0"
而後啓動該網卡,驗證是否生效:
ifup eth0:1
查看是否有浮動IP地址:
ip addr
接着訪問浮動IP地址172.24.8.80,能訪問成功,即和主服務器172.24.8.55訪問的同樣,則說明配置成功。
二、從服務器配置浮動IP
配置步驟和主服務器徹底同樣,eth0:1的IP地址一樣設置成浮動IP172.24.8.80,在啓動網卡測試以前,需在主服務器關閉浮動IP:
ifdown eth0:1
而後在從服務器啓動eth0:1
ifup eth0:1
測試步驟也和主服務器同樣。
三、若是還有其餘從服務器,配置步驟如上。
2、寫腳本完成浮動IP的自動開啓與關閉
利用crontab自動執行技術,定時檢查IP地址的狀態,並啓動eth0:1或者關閉eth0:1。
一、從服務器腳本 slaveFloatIP.sh:
MASTER_IP="172.24.8.55" FLOAT_IP="172.24.8.80" c1=$(/usr/bin/ping $MASTER_IP -c 1|grep Unreachable|wc -l) c2=$(/usr/bin/ping $FLOAT_IP -c 1|grep Unreachable|wc -l) c3=$(/usr/sbin/ip addr|grep eth0:1) if [ $c1 -gt 0 -a $c2 -gt 0 ] then /usr/sbin/ifup eth0:1 elif [ $c1 -eq 0 -a $c2 -eq 0 -a "$c3" ] then /usr/sbin/ifdown eth0:1 fi
ping 主服務器IP地址,若是ping不通,說明主服務器掛掉了,再ping浮動IP地址,若是ping不通,說明沒啓動浮動IP,則啓動浮動IP。
當主服務器再上線,即可以ping通主服務器,同時能ping通浮動IP地址,再判斷是不是該從服務器啓動了浮動IP,若是是,則須要關閉,讓主服務器啓動浮動IP。
若是還有其餘從服務器,只需拷貝該腳本。
二、主服務器腳本 masterFloatIP.sh:
FLOAT_IP="172.24.8.80" c=$(/usr/bin/ping $FLOAT_IP -c 1|grep Unreachable|wc -l) if [ $c -gt 0 ] then /usr/sbin/ifup eth0:1 fi
ping不通浮動IP地址,則啓動eth0:1
三、使用crontab每隔5秒自動執行腳本。
crontab -e
進入文件編輯界面,主服務器配置以下:
* * * * * /root/masterFloatIP.sh * * * * * sleep 5; /root/masterFloatIP.sh * * * * * sleep 10; /root/masterFloatIP.sh * * * * * sleep 15; /root/masterFloatIP.sh * * * * * sleep 20; /root/masterFloatIP.sh * * * * * sleep 25; /root/masterFloatIP.sh * * * * * sleep 30; /root/masterFloatIP.sh * * * * * sleep 35; /root/masterFloatIP.sh * * * * * sleep 40; /root/masterFloatIP.sh * * * * * sleep 45; /root/masterFloatIP.sh * * * * * sleep 50; /root/masterFloatIP.sh * * * * * sleep 55; /root/masterFloatIP.sh
從服務器配置也是同樣的,腳本路徑改成 /root/slaveFloatIP.sh
關於crontab的介紹和使用請參考:crontab的介紹
到這裏就完成了浮動IP的配置和主從服務器自動開啓浮動IP。
完成後就能夠經過浮動IP地址訪問,服務器集羣內只要有一臺服務器正常運行,web就能訪問,實現了web高可用。