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


在高可用集群環境中,一般都需要使用浮動IP來實現web高可用(High Availability)。

浮動IP的概念以及為什么需要浮動IP請參考:浮動IP(FLOAT IP)

本篇文章主要講實際操作步驟:

可以是雙機,也可以是多機,主服務器為172.24.8.55,浮動IP設置為172.24.8.80。

一、配置浮動IP:

利用單個網卡可以綁定多個IP地址的技術。

1、主服務器配置浮動IP

在主服務器上拷貝eth0位eth0:1,並做修改。

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1

編輯文件ifcfg-eth0:1:

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訪問的一樣,則說明配置成功。

2、從服務器配置浮動IP

配置步驟和主服務器完全一樣,eth0:1的IP地址同樣設置成浮動IP172.24.8.80,在啟動網卡測試之前,需在主服務器關閉浮動IP:

ifdown eth0:1

然后在從服務器啟動eth0:1

ifup eth0:1

測試步驟也和主服務器一樣。

3、如果還有其他從服務器,配置步驟如上。

二、寫腳本完成浮動IP的自動開啟與關閉

利用crontab自動執行技術,定時檢查IP地址的狀態,並啟動eth0:1或者關閉eth0:1。

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。

如果還有其他從服務器,只需拷貝該腳本。

2、主服務器腳本 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

3、使用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高可用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM