在高可用集群环境中,一般都需要使用浮动IP来实现web高可用(High Availability)。

浮动IP的概念以及为什么需要浮动IP请参考:浮动IP(FLOAT IP)

本篇文章主要讲实际操作步骤:

可以是双机,也可以是多机,主服务器为172.24.8.55,浮动IP设置为172.24.8.80。

一、配置浮动IP:

利用单个网卡可以绑定多个IP地址的技术。

1、主服务器配置浮动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地址172.24.8.80,去掉网关信息,修改完如下:

DEVICE="eth0:1"
BOOTPROTO="static"
ONBOOT="yes"
NM_CONTROLLED="no"
TYPE="Ethernet"
IPADDR="172.24.8.80"
NETMASK="255.255.255.0"

然后启动该网卡,验证是否生效:

ifup eth0:1

查看是否有浮动IP地址:

ip addr

接着访问浮动IP地址172.24.8.80,能访问成功,即和主服务器172.24.8.55访问的一样,则说明配置成功。

2、从服务器配置浮动IP

配置步骤和主服务器完全一样,eth0:1的IP地址同样设置成浮动IP172.24.8.80,在启动网卡测试之前,需在主服务器关闭浮动IP:

ifdown eth0:1

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

ifup eth0:1

测试步骤也和主服务器一样。

3、如果还有其他从服务器,配置步骤如上。

二、写脚本完成浮动IP的自动开启与关闭

利用crontab自动执行技术,定时检查IP地址的状态,并启动eth0:1或者关闭eth0:1。

1、从服务器脚本 slaveFloatIP.sh:

MASTER_IP="172.24.8.55"
FLOAT_IP="172.24.8.80" c1=$(/usr/bin/ping $MASTER_IP -c |grep Unreachable|wc -l)
c2=$(/usr/bin/ping $FLOAT_IP -c |grep Unreachable|wc -l)
c3=$(/usr/sbin/ip addr|grep eth0:)
if [ $c1 -gt -a $c2 -gt ]
then
/usr/sbin/ifup eth0:
elif [ $c1 -eq -a $c2 -eq -a "$c3" ]
then
/usr/sbin/ifdown eth0:
fi

ping 主服务器IP地址,如果ping不通,说明主服务器挂掉了,再ping浮动IP地址,如果ping不通,说明没启动浮动IP,则启动浮动IP。

当主服务器再上线,即能够ping通主服务器,同时能ping通浮动IP地址,再判断是否是该从服务器启动了浮动IP,如果是,则需要关闭,让主服务器启动浮动IP。

如果还有其他从服务器,只需拷贝该脚本。

2、主服务器脚本 masterFloatIP.sh:

FLOAT_IP="172.24.8.80"

c=$(/usr/bin/ping $FLOAT_IP -c |grep Unreachable|wc -l)
if [ $c -gt ]
then
/usr/sbin/ifup eth0:
fi

ping不通浮动IP地址,则启动eth0:1

3、使用crontab每隔5秒自动执行脚本。

crontab -e

进入文件编辑界面,主服务器配置如下:

* * * * * /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh
* * * * * sleep ; /root/masterFloatIP.sh

从服务器配置也是一样的,脚本路径改为 /root/slaveFloatIP.sh

关于crontab的介绍和使用请参考:crontab的介绍

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

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

Linux配置浮动IP实现WEB高可用的更多相关文章

  1. Linux配置浮动IP

    在高可用集群环境中,一般都需要使用浮动IP来实现web高可用(High Availability). 浮动IP的概念以及为什么需要浮动IP请参考:https://blog.csdn.net/readi ...

  2. Linux系统浮动IP的配置

    什么是浮动IP,为什么要配置浮动IP 首先说一下为什么要配置浮动IP. 原文链接:https://blog.csdn.net/readiay/article/details/53538085 现在有一 ...

  3. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  4. Corosync+Pacemaker+crmsh构建Web高可用集群

    一.概述: 1.1 AIS和OpenAIS简介 AIS应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放.高移植性的程序接口.是在实现高可用 ...

  5. linux配置网卡IP地址命令详细介绍及一些常用网络配置命令

    linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...

  6. 详述Linux配置静态IP、设置DNS和主机名(一)

    Linux配置静态IP.设置DNS和主机名首先要找到配置文件,这是在Linux系统下进行工作的必须知道工作方式.后面一步步的跟着这个范例来进行配置相信你最终也会完成Linux配置静态IP.设置DNS和 ...

  7. Spring Cloud(八):配置中心(服务化与高可用)【Finchley 版】

    Spring Cloud(八):配置中心(服务化与高可用)[Finchley 版]  发表于 2018-04-19 |  更新于 2018-04-26 |  本文接之前的<Spring Clou ...

  8. Linux配置代理IP

    Linux配置代理IP: vim /etc/profile http_proxy=http://username:password@ip:port/ https_proxy=http://userna ...

  9. Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置

    建议:先阅读搭建Nginx负载均衡之后再看此篇 备注: Nginx+keepalived的高可用有两种方式 一.主从配置 二.双主热备配置[下一篇] 准备: 标配四台服务器 Master:192.16 ...

随机推荐

  1. Silverlight的DataGrid合并单元格

    现在也不知道还有没有同学做Silverlight开发了,我是一个Silverlight菜鸟,遇到问题也很难百度查到.就简单的记录一下这两天遇到的问题,并做了一个简单的小Demo,希望能够帮助到其他同学 ...

  2. json、xml和java对象之间的转化

    其实从面相对象的角度来理解这个问题,就会很清晰.java中的一切皆对象即把世间万物(Everything in the world)看做java对象,任何处理不了的问题都可以先转化成java对象在做处 ...

  3. Hadoop的安装(日志四)

    上一篇:SSH免密码(日志三) 1,进入conf目录,查看所有的文件 2,第一个修改的是hadoop-env.sh的文件,配置javahome的地址 3,第二个就是配置core-site的文件,包括临 ...

  4. java泛型探索——介绍篇

    1. 泛型出现前后代码对比 先来看看泛型出现前,代码是这么写的: List words = new ArrayList(); words.add("Hello "); words. ...

  5. (转)static 变量

    一. static 变量 static变量大致分为三种用法1. 用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期.2. 用于全局变量,主要作用是限制此全局变量被其他的文 ...

  6. 最近项目用到Dubbo框架,分享一下~

    1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...

  7. Zookeer-- 上搭建 hbase

    一.HBase的相关概念1.HBase的概念:大量数据进行随机近实时读写时使用Hbase.2.HBase是一个模仿Gootable's Bigtable的,开源的.分布式的.版本化的非关系型数据库.3 ...

  8. javaWeb学习总结(7)-关于session的实现:cookie与url重写

    本文讨论的语境是java EE servlet.我们都知道session的实现主要两种方式:cookie与url重写,而cookie是首选(默认)的方式,因为各种现代浏览器都默认开通cookie功能, ...

  9. nested exception is java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 14 to TIMESTAMP.

    无法将"0000-00-00 00:00:00"转换为TIMESTAMP 2017-05-08 00:56:59 [ERROR] - cn.kee.core.dao.impl.Ge ...

  10. Neo4j 第五篇:批量更新数据

    相比图形数据的查询,Neo4j更新图形数据的速度较慢,通常情况下,Neo4j更新数据的工作流程是:每次数据更新都会执行一次数据库连接,打开一个事务,在事务中更新数据.当数据量非常大时,这种做法非常耗时 ...