什么是浮动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,自己想怎么测就怎么测。

Linux系统浮动IP的配置的更多相关文章

  1. CentOS(六)--Linux系统的网络环境配置

    Linux系统下的网络环境配置,Linux.Unix就是网络的世界,所以在Linux系统中如何配置网络环境变量是至关重要的,这里将会给出3种Linux系统下网络环境配置的方法! 在配置网络环境之前,首 ...

  2. Ubuntu Linux下设置IP的配置命令

    Ubuntu Linux下设置IP的配置命令 今天装了Ubuntu,但是发现不能上网,开始排查问题: 1.首先确定网络连接是否正确,所用的网线是否可以正常工作 2.查看网卡是否能正常工作,检测的方法如 ...

  3. 【Oracle RAC】Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂)

    [Oracle RAC]Linux系统Oracle11gR2 RAC安装配置详细过程V3.1(图文并茂) 2 Oracle11gR2 RAC数据库安装准备工作2.1 安装环境介绍2.2 数据库安装软件 ...

  4. 【Oracle RAC】Linux系统Oracle12c RAC安装配置详细记录过程V2.0(图文并茂)

    [Oracle RAC]Linux系统Oracle12c RAC安装配置详细过程V2.0(图文并茂) 2 Oracle12c RAC数据库安装准备工作2.1 安装环境介绍2.2 数据库安装软件下载3 ...

  5. 使用SecureCRT连接虚拟机中Linux系统 和 虚拟机网络配置

    使用SecureCRT连接步骤:1.首先打开虚拟机,点击左上角的编辑,再点击虚拟网络编辑器(已经进行虚拟网络编辑的忽略此步骤,直接进行第二步) 点击VMnet8网络,点击更改设置,此步骤需要管理员权限 ...

  6. Linux系统下tomcat的配置

    Linux系统下tomcat的配置 完成后可以输入命令查看日志文件: 最后进入网页测试下吧: 可以出来这个网页就好了

  7. 【Oracle RAC】Linux系统Oracle18c RAC安装配置详细记录过程(图文并茂)

    本文Oracle 18c GI/RAC on Oracle Linux step-by-step 的安装配置步骤,同时也包含dbca 创建数据库的过程. 1. 关闭SELINUX,防火墙vi /etc ...

  8. VMware虚拟机安装Linux系统后IP配置(二)

    1.在NAT模式下自动获取IP 2.编辑网卡配置文件(通用) 3.Ctrl+L 清屏.重启网络服务后检查网络是否正常上网 修改后本机IP地址在linux中ping通本机IP 然而在本机却ping不通l ...

  9. linux系统查看IP地址,不显示IP地址或者只显示127.0.0.1

    在linux系统中输入命令: vi  /etc/sysconfig/network-scripts/ifcfg-eth0 然后显示如下结果 点击I或者是A进入可编辑状态(需要先切换到管理员帐号下,自行 ...

随机推荐

  1. SwiftUI error All In One

    SwiftUI error All In One Instance member xxx cannot be used on type yyy Instance member 'game' canno ...

  2. 手把手教你使用 js 实现一个 Canvas 编辑器

    手把手教你使用 js 实现一个 Canvas 编辑器 拖拽 缩放,等比缩放 导出 image 模版 撤销,重做 OOP,封装,继承,多态 发布库 CI/CD (gitlab/github) ... h ...

  3. How to change Linux Terminal display username

    How to change Linux Terminal display username 如何更改 Linux Terminal 显示的用户名 (base) ➜ ~ whoami xgqfrms-m ...

  4. css 设置多行文本的行间距

    css 设置多行文本的行间距 block element span .ticket-card-info{ line-height:16px; display: inline-block; } .tic ...

  5. vue & template & v-else & v-for bug

    vue & template & v-else & v-for bug nested table bug https://codepen.io/xgqfrms/pen/wvaG ...

  6. NGK高效的背后驱动力是社区发展

    社区是公有链生态系统中最重要的部分,如果开发了区块链应用或工具,却没有用户使用,那将毫无价值.因此对公链项目来说首先需要构建用户群,并深入研究用户群体的需求.就目前而言,任何项目都需要社区力量加入项目 ...

  7. C语言数据类型思维导图

  8. 创建gitHub账户并配置秘钥

    1. 登录注册地址 https://github.com/ 2.点击注册 Sign up 3.输入邮箱 密码 进行注册 4.注册成功后,登录邮箱验证 .然后通过邮箱和密码登录gitHub.设置 set ...

  9. 【Android初级】如何实现一个有动画效果的自定义下拉菜单

    我们在购物APP里面设置收货地址时,都会有让我们选择省份及城市的下拉菜单项.今天我将使用Android原生的 Spinner 控件来实现一个自定义的下拉菜单功能,并配上一个透明渐变动画效果. 要实现的 ...

  10. RabbitMQ之TTL(Time-To-Live 过期时间)

    本文转载自RabbitMQ之TTL(Time-To-Live 过期时间) 概述 RabbitMQ可以对消息和队列设置TTL. 目前有两种方法可以设置.第一种方法是通过队列属性设置,队列中所有消息都有相 ...