例如上面,我们给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,自己想怎么测就怎么测。