Linux配置浮動IP實現WEB高可用

在高可用集羣環境中,通常都須要使用浮動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高可用。

相關文章
相關標籤/搜索