Linux配置浮动IP实现WEB高可用
在高可用集群环境中,一般都需要使用浮动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高可用的更多相关文章
- Linux配置浮动IP
在高可用集群环境中,一般都需要使用浮动IP来实现web高可用(High Availability). 浮动IP的概念以及为什么需要浮动IP请参考:https://blog.csdn.net/readi ...
- Linux系统浮动IP的配置
什么是浮动IP,为什么要配置浮动IP 首先说一下为什么要配置浮动IP. 原文链接:https://blog.csdn.net/readiay/article/details/53538085 现在有一 ...
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
- Corosync+Pacemaker+crmsh构建Web高可用集群
一.概述: 1.1 AIS和OpenAIS简介 AIS应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放.高移植性的程序接口.是在实现高可用 ...
- linux配置网卡IP地址命令详细介绍及一些常用网络配置命令
linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...
- 详述Linux配置静态IP、设置DNS和主机名(一)
Linux配置静态IP.设置DNS和主机名首先要找到配置文件,这是在Linux系统下进行工作的必须知道工作方式.后面一步步的跟着这个范例来进行配置相信你最终也会完成Linux配置静态IP.设置DNS和 ...
- Spring Cloud(八):配置中心(服务化与高可用)【Finchley 版】
Spring Cloud(八):配置中心(服务化与高可用)[Finchley 版] 发表于 2018-04-19 | 更新于 2018-04-26 | 本文接之前的<Spring Clou ...
- Linux配置代理IP
Linux配置代理IP: vim /etc/profile http_proxy=http://username:password@ip:port/ https_proxy=http://userna ...
- Nginx系列篇三:linux中Nginx+keepalived做一个高可用的主从配置
建议:先阅读搭建Nginx负载均衡之后再看此篇 备注: Nginx+keepalived的高可用有两种方式 一.主从配置 二.双主热备配置[下一篇] 准备: 标配四台服务器 Master:192.16 ...
随机推荐
- Silverlight的DataGrid合并单元格
现在也不知道还有没有同学做Silverlight开发了,我是一个Silverlight菜鸟,遇到问题也很难百度查到.就简单的记录一下这两天遇到的问题,并做了一个简单的小Demo,希望能够帮助到其他同学 ...
- json、xml和java对象之间的转化
其实从面相对象的角度来理解这个问题,就会很清晰.java中的一切皆对象即把世间万物(Everything in the world)看做java对象,任何处理不了的问题都可以先转化成java对象在做处 ...
- Hadoop的安装(日志四)
上一篇:SSH免密码(日志三) 1,进入conf目录,查看所有的文件 2,第一个修改的是hadoop-env.sh的文件,配置javahome的地址 3,第二个就是配置core-site的文件,包括临 ...
- java泛型探索——介绍篇
1. 泛型出现前后代码对比 先来看看泛型出现前,代码是这么写的: List words = new ArrayList(); words.add("Hello "); words. ...
- (转)static 变量
一. static 变量 static变量大致分为三种用法1. 用于局部变量中,成为静态局部变量. 静态局部变量有两个用法,记忆功能和全局生存期.2. 用于全局变量,主要作用是限制此全局变量被其他的文 ...
- 最近项目用到Dubbo框架,分享一下~
1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...
- Zookeer-- 上搭建 hbase
一.HBase的相关概念1.HBase的概念:大量数据进行随机近实时读写时使用Hbase.2.HBase是一个模仿Gootable's Bigtable的,开源的.分布式的.版本化的非关系型数据库.3 ...
- javaWeb学习总结(7)-关于session的实现:cookie与url重写
本文讨论的语境是java EE servlet.我们都知道session的实现主要两种方式:cookie与url重写,而cookie是首选(默认)的方式,因为各种现代浏览器都默认开通cookie功能, ...
- 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 ...
- Neo4j 第五篇:批量更新数据
相比图形数据的查询,Neo4j更新图形数据的速度较慢,通常情况下,Neo4j更新数据的工作流程是:每次数据更新都会执行一次数据库连接,打开一个事务,在事务中更新数据.当数据量非常大时,这种做法非常耗时 ...