linux双机器浮动ip配置方法
双机配置浮动ip
通常在高可用集群中,双机部署的服务,需要配置浮动ip,来保证其中一个机器挂掉后,另一个机器可以继续工作,用户不感知。
浮动ip的概念及作用:浮动IP(FLOAT IP)_float -point ip-CSDN博客
一、配置浮动ip
利用单个网卡可以绑定多个IP地址的技术;
例如:主服务器ip为172.100.1.11,从服务器ip为172.100.1.12,浮动ip为172.100.1.222;
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.100.1.222,去掉网关信息,修改完如下:
DEVICE=eth0:1
BOOTPROTO=static
ONBOOT=yes
NM_CONTROLLED=no
STARTMODE=onboot
IPADDR=172.100.1.222
NETMASK=255.255.255.0
然后使用ifup命令启动该网卡,并验证是否生效:
ifup eth0:1
查看是否有浮动IP地址:
ip addr 或者 ip a 或者 ifconfig
接着访问浮动IP地址172.100.1.222,能访问成功,即和主服务器172.100.1.11访问的一样,则说明配置成功。
2、在“从服务器”配置浮动IP
从服务器的配置步骤和主服务器完全一样,eth0:1的IP地址同样设置成浮动IP:172.100.1.222,在启动网卡测试之前,需在"主服务器"关闭浮动IP:
ifdown eth0:1
然后在"从服务器"使用ifup命令启动eth0:1
ifup eth0:1
验证步骤也和"主服务器"一样。
二、使用脚本实现浮动IP的自动开启与关闭
利用crontab自动执行技术,定时检查IP地址的状态,来决定是否启动eth0:1或者关闭eth0:1。
1、“从服务器”脚本
在root目录下
生成脚本文件
touch slaveFloatIP.sh
编写脚本
vim slaveFloatIP.sh
复制下面的的代码进去:
MASTER_IP=172.100.1.11
FLOAT_IP=172.100.1.222
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 -o $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浮动IP地址,如果ping不通,说明主服务器挂掉了或者没启动浮动IP,则在从机上启动浮动IP。
当主服务器再上线,即能够ping通主服务器且能ping通浮动IP地址,则在从机上关闭浮动IP。
备注:
如果还有其他从服务器,只需拷贝该脚本。
2、“主服务器”脚本
在root目录下
生成脚本文件
touch masterFloatIP.sh
编写脚本
vim masterFloatIP.sh
复制下面的的代码进去:
FLOAT_IP=172.100.1.222
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
* * * * * /root/slaveFloatIP.sh
* * * * * sleep 5; /root/slaveFloatIP.sh
* * * * * sleep 10; /root/slaveFloatIP.sh
* * * * * sleep 15; /root/slaveFloatIP.sh
* * * * * sleep 20; /root/slaveFloatIP.sh
* * * * * sleep 25; /root/slaveFloatIP.sh
* * * * * sleep 30; /root/slaveFloatIP.sh
* * * * * sleep 35; /root/slaveFloatIP.sh
* * * * * sleep 40; /root/slaveFloatIP.sh
* * * * * sleep 45; /root/slaveFloatIP.sh
* * * * * sleep 50; /root/slaveFloatIP.sh
* * * * * sleep 55; /root/slaveFloatIP.sh
效果
以上步骤完成了浮动IP的配置和主从服务器自动开启浮动IP。
完成后可以通过浮动IP地址访问主服务器,当主服务器挂掉之后,从服务器会自动挂上浮动ip,承担起主服务器的任务,当主服务器恢复之后,从服务器会解绑浮动ip,主服务器会挂上该浮动ip,服务器集群内只要有一台服务器正常运行,web就能访问,实现了web高可用。