两台Linux服务器,一台为主机(IP:124.158.26.30)对外提供了一定的网络服务,另一台从机(IP:124.158.26.31)能提供相同的服务,但ip地址没有对外部公开客户端连接的都是124.158.26.30这个ip地址,如果主机故障,则会使网络服务暂时中断,时间越长造成损失越大由于没有采用双机热备技术,考虑自己用Linux脚本来实现简单的浮动ip技术,当主机故障时从机获取124.158.26.30这个ip,暂时替代主机提供服务,当主机恢复时,从机自动释放这个ip
 
实现:
 利用单个网卡绑定多个ip地址的技术和crontab自动执行技术
 为主机的网卡多绑定一个静态ip,如124.158.26.32 ,这个地址是便于从机判断的,为从机的网卡多绑定一个动态ip,127.0.0.1,它在主机故障时将会被脚本修改为124.158.26.30
 在从机添加一个脚本 floatip.sh,使用crontab技术让这个脚本每分钟执行一次,这个脚本的作用是判断主机的地址32能否ping通,一旦不通则将让自己的网卡多余那个ip地址改为124.158.26.30,如果主机恢复,则将这个地址改回为127.0.0.1
 
步骤:
 一、为主机多绑定一个静态ip124.158.26.32

/etc/sysconfig/network-scripts目录里面创建一个名为

ifcfg-eth0:1的文件,内容为:

DEVICE=eth0:1

IPADDR=139.24.214.82

NETMASK= 255.255.255.0

ONBOOT= yes

二、在从机上建立脚本floatip.sh
 c1=`ping 124.158.26.32 -c 1 | grep Unreachable | wc -l`
 c2=`ping 124.158.26.32 -c 10 | grep Unreachable | wc -l`
 c3=`ping 124.158.26.30 -c 10 | grep Unreachable | wc -l`
 c4=`/sbin/ifconfig |grep 124.158.26.30 |wc -l`
  if [ $c1 -gt 0 ] ;then
  if [ $c2 -gt 9 ] ;then
  if [ $c3 -gt 9 ] ;then
  /sbin/ifconfig eth0:1 124.158.26.30 netmask 255.255.255.0
  echo "float ip to 30"
  fi
  fi
 echo "can not connect"
 else
  if [ $c4 -gt 0 ] ;then
  /sbin/ifconfig eth0:1 127.0.0.1 netmask 255.255.255.0
  echo "reset ip"
  fi
 echo "connection is ok"
 fi

用chmod +x autoFloatIP.sh

让它可以执行,脚本的内容为

c1=$(ping 139.24.214.82 -c 1|grep Unreachable|wc -l)

if [ $c1 -gt 0 ]  then

c2=$(ping 139.24.214.82 -c 10|grep Unreachable|wc -l)

if [ $c2 -gt 9 ]  then

c3=$(ping 139.24.214.22 -c 10|grep Unreachable|wc -l)

if [ $c3 -gt 9 ]  then

/sbin/ifconfig eth0:1 139.24.214.22 netmask 255.255.254.0

echo "float ip to 22"

fi

fi

echo "can not connect"

else

c4=$(/sbin/ifconfig|grep 139.24.214.22|wc -l)

if [ $c4 -gt 0 ]  then

/sbin/ifconfig eth0:2 127.0.0.1 netmask 255.255.254.0

echo "reset ip"

fi

echo "connection is ok"

fi

其中关键的命令为

/sbin/ifconfig eth0:1 139.24.214.22 netmask 255.255.254.0

/sbin/ifconfig eth0:2 127.0.0.1 netmask 255.255.254.0

用这个方法来动态修改

IP

,动态

IP

在电脑重启会消失

从机上建立crontab

让后加上这样的一行并保存

* * * * * /root/autoFloatIP.sh > /dev/null 2>&1

小提示

在测试时,你可以先将这句话改为

* * * * * /root/autoFloatIP.sh

这样你可以用

mutt

收到很多邮件,用户跟踪脚本执行情况

在Linux 双机下自己手动实现浮动ip技术的更多相关文章

  1. openstack环境下的虚拟机通过浮动IP访问后能ping通外网IP不能ping通域名

    1.环境简介 openstack环境下构造Ubuntu系统的VM,VM配置受管子网和自管子网,同时绑定浮动IP 2.通过浮动IP访问VM后,ping www.baidu.com失败,但是通过IP地址p ...

  2. windows和linux环境下java调用C++代码-JNI技术

    最近部门做安卓移动开发的需要调C++的代码,困难重重,最后任务交给了我,查找相关资料,没有一个教程能把不同环境(windows,linux)下怎么调用说明白的,自己在实现的过程中踩了几个坑,在这里总结 ...

  3. 虚拟机linux系统下ifconfig获取不到ip

    原因:网卡未激活 1.输入ifup eth0命令激活网卡 2.输入ifconfig查询ip

  4. 浮动IP(Floating IPs):开始构建你的高可用性的应用

    高可用性是所有生产环境的关键.开发者因此可以高枕无忧因为他们知道他们的应用被设计为可以承受住故障. 今天,我们非常激动的宣布我们应用了浮动IP技术.浮动IP指的是一个IP地址可以立即从一个Drople ...

  5. linux系统下手动安装Angular-cli

    安装Angular-cli 背景 由于公司linux服务器没有外网,无法通过npm包管理器直接安装,只能手动安装一个Angular-cli平台环境! 安装步骤 1. 先再linux系统下安装好node ...

  6. (收集)linux环境下乱码的解决方法

    **************************** 就是从数据库中取出来时,在存入linux的文件里时,在字符流时制定编码格式.代码如下: FileOutputStream fos=new Fi ...

  7. Linux系统下 解决Qt5无法连接MySQL数据库的方法

    Linux平台下解决Qt5连接mysql数据库的问题:输入sudo apt-get install libqt5sql5-mysql解决,这种方法只能解决Qt是用sudo apt-get instal ...

  8. Thrift在Windows及Linux平台下的安装和使用示例

    本文章也同时发表在个人博客Thrift在Windows及Linux平台下的安装和使用示例上. thrift介绍 Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的R ...

  9. 【夯实Mysql基础】MySQL在Linux系统下配置文件及日志详解

    本文地址 分享提纲: 1. 概述 2. 详解配置文件 3. 详解日志 1.概述 MySQL配置文件在Windows下叫my.ini,在MySQL的安装根目录下:在Linux下叫my.cnf,该文件位于 ...

随机推荐

  1. RDD算子、RDD依赖关系

    RDD:弹性分布式数据集, 是分布式内存的一个抽象概念 RDD:1.一个分区的集合, 2.是计算每个分区的函数 ,    3.RDD之间有依赖关系 4.一个对于key-value的RDD的Partit ...

  2. 微信SSL证书更换的检查与安装方法

    Ubuntu, Debian 查看根证书 确认操作系统上,是否存在以下文件: /etc/ssl/certs/DigiCert_Global_Root_CA.pem /etc/ssl/certs/Bal ...

  3. laravel5.2总结--blade模板

    ## 1.基本用法 ``` ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div ...

  4. 【palindrome partitioning II】cpp

    题目: Given a string s, partition s such that every substring of the partition is a palindrome. Return ...

  5. 整理的一些Android开发类免费视频课程

    1.Android实战淘宝网项目视频:http://edu.ibeifeng.com/view-index-id-248.html 2.Android滚动视差实现课程:http://edu.ibeif ...

  6. java中常用的几种缓存类型介绍

    在平时的开发中会经常用到缓存,比如locache.redis等,但一直没有对缓存有过比较全面的总结.下面从什么是缓存.为什么使用缓存.缓存的分类以及对每种缓存的使用分别进行分析,从而对缓存有更深入的了 ...

  7. [oldboy-django][1初识django]创建虚拟(干净)的Python环境

    如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?此时可以针对不同应用创建不同的虚拟环境. 这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境.virtual ...

  8. .Net MVC删除图片

    还在学校,菜鸟级别,接触到的只是  /// <summary> /// 根据imageID删除图片 /// </summary> /// <returns>< ...

  9. SQL语句操作符优化

    转载地址:http://database.51cto.com/art/200903/112810.htm IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格. ...

  10. ORA-12012: 自动执行作业 "SYS"."ORA$AT_OS_OPT_SY_21" 出错

    oracle 12.2.0.1版本报错: Errors in file /u01/app/oracle/diag/rdbms/easdb/easdb2/trace/easdb2_j000_27520. ...