什么是浮动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. cnblogs blogs backup & node.js crawler

    cnblogs blogs backup & node.js crawler refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访 ...

  2. Battery API All In One

    Battery API All In One https://caniuse.com/?search=Battery navigator.getBattery() /* Promise {<pe ...

  3. algorithm & bitwise operation & the best leetcode solutions

    algorithm & bitwise operation & the best leetcode solutions leetcode 136 single-number the b ...

  4. PIP & Python packages management

    PIP & Python packages management $ python3 --version # OR $ python3 -V # Python 3.7.3 $ pip --ve ...

  5. js form.onformData事件

    在表单提交前修改数据,此事件在submit之后 f1.addEventListener("formdata", (e) => { e.formData.append(&quo ...

  6. 2021-2-19:请问你知道 Java 如何高性能操作文件么?

    一般高性能的涉及到存储框架,例如 RocketMQ,Kafka 这种消息队列,存储日志的时候,都是通过 Java File MMAP 实现的,那么什么是 Java File MMAP 呢? 什么是 J ...

  7. JVM元空间(Metaspace)

    本文转载自JVM学习--元空间(Metaspace) 从方法区(PermGen)到元空间(Metaspace) 方法区(PermGen) JDK1.8以前的HotSpot JVM有方法区,也叫永久代( ...

  8. 为什么Linux需要虚拟内存

    本文转载自为什么 Linux 需要虚拟内存 导语 操作系统中的 CPU 和主内存(Main memory)都是稀缺资源,所有运行在当前操作系统的进程会共享系统中的 CPU 和内存资源,操作系统会使用 ...

  9. Django Admin 后台Admin继承UserAdmin增加用户密码不显示明文和用户登录不了的解决方法

    Django后台Admin继承UserAdmin增加用户不显示明文方法 1.在 models.py 中用户表 # 导包规范-1.Python标准模块 from django.db import mod ...

  10. 翻译:《实用的Python编程》03_01_Script

    目录 | 上一节 (2.7 对象模型) | 下一节 (3.2 深入函数) 3.1 脚本 在该部分,我们将深入研究编写 Python 脚本的惯例. 什么是脚本? 脚本就是运行和终止一系列语句的程序. # ...