Linux系統浮動IP的配置


什么是浮動IP,為什么要配置浮動IP

首先說一下為什么要配置浮動IP。

原文鏈接:https://blog.csdn.net/readiay/article/details/53538085

現在有一個場景,在一台Linux上部署一個web應用,應用跑在tomcat里面,linux網卡上的ip是115.239.100.120,大致就是如下的部署關系:
 
用戶通過輸入IP地址就能訪問這個應用了,但是天有不測風雲,有時候因為一些原因,服務會掛掉。於是開發人員就想了一個辦法,在另外一個Linux上,部署同樣的一個應用,這樣這個服務掛了,另外一個頂上,於是架構就變成了下面這個樣子:

 

 

如果用戶訪問100.120訪問不了,就訪問100.121就行了,但是這樣引入了一個問題,用戶需要記住兩個IP,很不方便!所以這個時候就需要浮動IP了。上 面我們搭建了兩個一模一樣的服務,但是用戶需要記住兩個IP,實在是太麻煩了,於是我們可以采用另外一個策略,
 
我們給其中一個機器在添加一個IP, 讓用戶訪問這個IP, 一個網卡是可以添加多個IP的。

 

 例如上面,我們給100.120主機添加一個100.80的IP,用戶訪問115.239.100.80這個IP,如果這台機器的服務掛了,我們就將這個ip轉移到100.121這個機器上,這樣對於用戶而言,他們始終訪問的就只是一個IP而已。在上面的場景中:115.239.100.80這個ip就是浮動IP,他會隨着主機服務掛掉而轉移到另外一個能夠提供相同服務的主機上,對於用戶而言,他們始終覺得服務是正常的。一般而言,在高可用集群中使用的比較多,例如LVS集群等,其實一個高可用集群一般而言都有浮動IP的,如果沒有,機器宕機了還怎么玩?

配置浮動IP

再給大家一個前提:

主機:192.168.122.131

從機:192.168.122.132

浮動IP:192.168.122.13

參考鏈接:https://blog.csdn.net/weixin_40006394/article/details/80451269

開始配置一下,以下前四步,在主從機上是一樣的操作,咱們就寫一遍啊。可以主機配一步,從機配一步

1、/etc/sysconfig/network-scripts/這個目錄下,可以通過ifconfig,先確定網卡的名字,然后在這個目錄找到對應的網卡,進行一下操作

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:1
vi ifcfg-ens33:1

2、修改內容,ipaddr改為浮動IP、DEVICE=ens33:1,這個device一定要設置成對應的浮動網卡名稱,不然停啟會關掉主網卡的。

 3、啟動新網卡,還在/etc/sysconfig/network-scripts/這個目錄下啊。

ifup ifcfg-ens33:1

4、查看是否有浮動IP,跟下邊圖片一樣,就設置成功了

ip a

5、敲黑板了啊!!!

主機192.168.122.131

vi /root/masterFloatIP.sh

添加內容如下,又要敲黑板了啊,注意格式,注意格式,注意格式。sh腳本if后面有個空格,then前邊有個分號, ping不通浮動IP地址,則啟動ifcfg-ens33:1,備注:-c 1這個是數字1,wc -l這個是字母l

FLOAT_IP="192.168.122.13"
c=$(/usr/bin/ping $FLOAT_IP -c 1|grep Unreachable|wc -l)
if [ $c -gt 0 ];
then
    /usr/sbin/ifup ifcfg-ens33:1
fi

這個腳本編寫完成后記得將腳本設置為可執行的,不然不起作用的。設置為可執行之后最好在嘗試執行,如果有問題可以趕緊改。

chmod +x masterFloatIP.sh

 

從機192.168.122.132

vi /root/slaveFloatIP.sh

添加內容如下,還是要注意格式的,來個說明啊,ping主服務器IP地址或者ping浮動IP地址,如果ping不通,說明主服務器掛掉了或者沒啟動浮動IP,則在從機上啟動浮動IP。當主服務器再上線,即能夠ping通主服務器且能ping通浮動IP地址,則在從機上關閉浮動IP。敲黑板了啊!!!看到標紅的地方了沒,c3那一行,一定要確認是不是這個網卡名稱,通過ip a查看是否是ifcfg-ens33:1,我的網卡名稱是ifcfg-ens33:1,但是通過ip a查看浮動ip的時候發現,最后是ens33:1,如下圖,所以寫成ifcfg-ens33:1,就不對了,需要將ifcfg-刪掉,最終直接監控ens33:1就可以了。還有注意一下,c1、c2、c3都是可以拿出來單獨執行的,c1、c2記得把$MASTER_IP和$FLOAT_IP改成對應的IP即可,一定要單獨測試沒問題,再整體測試腳本。

 

 

復制代碼
MASTER_IP="192.168.122.131"
FLOAT_IP="192.168.122.13"
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 ens33:1)
if [ $c1 -gt 0 -o $c2 -gt 0 ];
then
  /usr/sbin/ifup ifcfg-ens33:1
elif [ $c1 -eq 0 -a $c2 -eq 0 -a "$c3" ];
then
  /usr/sbin/ifdown ifcfg-ens33:1
fi
復制代碼

這個腳本編寫完成后記得將腳本設置為可執行的,不然不起作用的。設置為可執行之后最好在嘗試執行,如果有問題可以趕緊改。

chmod +x slaveFloatIP.sh

備注:如果不是只有一個從機,直接復制這個腳本內容即可。

6、操作相同,內容不同,自己看清楚啊,自動執行腳本不一樣的。

使用crontab每隔5秒自動執行腳本

主機192.168.122.131

crontab -e

修改內容

復制代碼
#每隔5秒自動執行腳本
* * * * * /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
復制代碼

 

從機192.168.122.132

crontab -e

修改內容,從機可以設置每10秒執行一次腳本,不然主機在5秒內有時候啟動不來,最后就會導致從機一直啟動浮動IP了。

#每隔10秒自動執行腳本
* * * * * /root/slaveFloatIP.sh
* * * * * sleep 10; /root/slaveFloatIP.sh
* * * * * sleep 20; /root/slaveFloatIP.sh
* * * * * sleep 30; /root/slaveFloatIP.sh
* * * * * sleep 40; /root/slaveFloatIP.sh
* * * * * sleep 50; /root/slaveFloatIP.sh

以上就是全部流程了,設置完成后就可以自己進行測試了,關主機浮動IP,開從機浮動IP,自己想怎么測就怎么測。


免責聲明!

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



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