什么是浮动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. 使用SQL-Server分区表功能提高数据库的读写性能

    首先祝大家新年快乐,身体健康,万事如意. 一般来说一个系统最先出现瓶颈的点很可能是数据库.比如我们的生产系统并发量很高在跑一段时间后,数据库中某些表的数据量会越来越大.海量的数据会严重影响数据库的读写 ...

  2. Creative Commons : CC (知识共享署名 授权许可)

    1 https://creativecommons.org/      Keep the internet creative, free and open. Creative Commons help ...

  3. 使用 js 实现十大排序算法: 快速排序

    使用 js 实现十大排序算法: 快速排序 QuickSort 快速排序 /** * * @author xgqfrms * @license MIT * @copyright xgqfrms * @c ...

  4. Flutter & Scaffold & multiple floatingActionButton

    Flutter & Scaffold & multiple floatingActionButton demo import 'package:flutter/material.dar ...

  5. Stack Overflow & Segment Fault

    Stack Overflow & Segment Fault https://stackoverflow.com/ https://stackoverflow.com/users/593446 ...

  6. flutter web in action

    flutter web in action flutter for web https://flutter.dev/web https://flutter.dev/docs/get-started/w ...

  7. JS Calendar API

    JS Calendar API js 如何获取当天是周几(一周的第几天) const date = new Date(); // Mon Mar 23 2020 15:15:36 GMT+0800 ( ...

  8. post upload file & application/x-www-form-urlencoded & multipart/form-data

    post upload file application/x-www-form-urlencoded & multipart/form-data https://stackoverflow.c ...

  9. uniapp 发起网络请求

    推荐下我写的uni-http 创建http-config.js import Vue from 'vue' const BASE_URL = 'http://xxx.com'; if (process ...

  10. 如何成为NGK超级节点?

    NGK这个 "超级节点" 到底是什么?什么是超级节点呢? 区块链网络中的每一个节点,其实就是存储数据的每一台电脑或者服务器终端.节点要完成新区块的生产.交易的验证与记帐.因此节点之 ...