热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

服务器上启动的ip为10.0.0.8_部署浮动IP

一:为什么需要浮动IP现在有一个场景,在一台Linux上部署一个web应用,应用跑在tomcat里面,linux网卡上的ip

一:为什么需要浮动IP

现在有一个场景,在一台Linux上部署一个web应用,应用跑在tomcat里面,linux网卡上的ip是115.239.100.120,大致就是如下的部署关系:

adf307979a0d8be601db53b039ab6eb0.png

用户通过输入IP地址就能访问这个应用了,但是天有不测风云,有时候因为一些原因,服务会挂掉。于是开发人员就

想了一个办法,在另外一个Linux上,部署同样的一个应用,这样这个服务挂了,另外一个顶上,于是架构就变成了下面

这个样子:

e04f28620953915dad50b9eeed328ea9.png

如果用户访问100.120访问不了,就访问100.121就行了,但是这样引入了一个问题,用户需要记住两个IP,很不方便!

所以这个时候就需要浮动IP了。

二:浮动IP是什么

上面我们搭建了两个一模一样的服务,但是用户需要记住两个IP,实在是太麻烦了,于是我们可以采用另外一个策略,

我们给其中一个机器在添加一个IP,让用户访问这个IP, 一个网卡是可以 添加多个IP的。

40091ea7c214b25f160c2b574519b400.png

例如上面,我们给100.120主机添加一个100.80的IP,用户访问115.239.100.80这个IP,如果这台机器的服务挂了,我们就将

这个ip转移到100.121这个机器上,这样对于用户而言,他们始终访问的就只是一个IP而已。

      在上面的场景中:115.239.100.80这个ip就是浮动IP,他会随着主机服务挂掉而转移到另外一个能够提供相同服务的主机上,

对于用户而言,他们始终觉得服务是正常的。一般而言,在高可用集群中使用的比较多,例如LVS(LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。--百度百科)集群等

      其实一个高可用集群一般而言都有浮动IP的,如果没有,机器宕机了还怎么玩?

三:如何配置

(1)主要技术点:利用单个网卡可以绑定多个IP地址的技术。(2)在主服务器配置浮动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地址10.xx.1.212,去掉网关信息,修改完如下:

DEVICE="eth0:1"BOOTPROTO="static"ONBOOT="yes"NM_CONTROLLED="no"TYPE="Ethernet"IPADDR="10.xx.1.212"NETMASK="255.255.255.0"或者:

DEVICE=eth0:1IPADDR=10.xx.1.212NETMASK=255.255.255.0ONBOOT=yes然后启动该网卡,验证是否生效:

ifup eth0:1查看是否有浮动IP地址:

ip addr或者ip a接着访问浮动IP地址10.xx.1.212,能访问成功,即和主服务器10.xx.1.22访问的一样,则说明配置成功。(3)在从服务器上配置浮动IP配置步骤和主服务器完全一样,eth0:1的IP地址同样设置成浮动IP:10.xx.1.212,在启动网卡测试之前,需在"主服务器"关闭浮动IP:

ifdown eth0:1然后在"从服务器"启动eth0:1

ifup eth0:1测试步骤也和"主服务器"一样。(4)其他服务配置浮动IP如果还有其他从服务器,配置步骤如步骤“2”。(5)写脚本完成浮动IP的自动开启和关闭利用crontab自动执行技术,定时检查IP地址的状态,并启动eth0:1或者关闭eth0:1。a:从服务器脚本

    在root目录下,生成脚本文件

touch slaveFloatIP.sh

    编写脚本

vim slaveFloatIP.sh

    复制下面的的代码进去:

 MASTER_IP="10.xx.1.22"         FLOAT_IP="10.xx.1.212"         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。

备注:如果还有其他从服务器,只需拷贝该脚本。b:主服务器脚本 ,在root目录下,生成脚本文件

touch masterFloatIP.sh

        编写脚本

vim masterFloatIP.sh复制下面的的代码进去:

FLOAT_IP="10.xx.1.212"         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

(6)使用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

四:总结

到这里就完成了浮动IP的配置和主从服务器自动开启浮动IP。

完成后就可以通过浮动IP地址访问,服务器集群内只要有一台服务器正常运行,web就能访问,实现了web高可用。

本文参考一下文章完成:

1):https://blog.csdn.net/readiay/article/details/53538085

2):https://blog.csdn.net/weixin_40006394/article/details/80451269




推荐阅读
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • ! Configuration File for keepalivedglobal_defs {   notification_email {     ... [详细]
  • Mysql + keepalive高可用搭建
    Mysql+keepalive高可用搭建系统环境:centos6.8Ip:192.168.137.36主库192.168.137.38从库VIP(虚拟ip浮动ip):192.168.13 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • Nginxgaodaima.comnginx属于七层架构,支持的是http协议,本身对tcp协议没有支持。所以不能代理mysql等实现负载均衡。但是lvs这个东西不熟悉,主要是公司 ... [详细]
  • LVS服务器集群系统
    LVS介绍LVS:LinuxVirtualServer,负载调度器,内核集成,章文嵩(花名正明),阿里的四层SLB(ServerLoadBalance)是基于LVS+keepali ... [详细]
  • fidder监控请求响应时间和请求IP(摘抄至网络)
    增加监控请求的详情时间在CustomRules.js的classHandlers中增加添加请求的响应时间publicstaticBindU ... [详细]
  • centos 6.5 mysql 集群_CentOS 6下安装部署Galera Cluster for MySQL集群
    GaleraClusterforMySQL是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高, ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • http:www.importnew.com6510.html优先级队列(PriprityQueue)是一种无界队列,基于优先级堆,它的元素根据自然顺序或者通过实现Compar ... [详细]
author-avatar
淀死鈊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有