两台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. Kali 网络配置

    一.配置IP 编辑/etc/network/interfaces # This file describes the network interfaces available on your syst ...

  2. 【Unique Paths】cpp

    题目: A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). ...

  3. ios开发学习笔记004-进制与位运算

    进制 二进制   0 1组成,封2进1 八进制 0-7组成,封8进1 十进制 0-9组成,封10进1 十六进制 0-15组成,封16进1 printf以不同进制形式进行输出 变量的内存地址形式 变量在 ...

  4. Python基础-week01 Python安装/变量/输入/及循环语句使用

      一.Python介绍 (1).目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,You ...

  5. python 字符编码与转码

    一. 字符编码 ASCII: 一个字节,最多能表示255个字符 GB2312(1980年):一共收录了7445个字符,包括6763个汉字和682个其它符号. GBK1.0(1995年):收录了2188 ...

  6. c++ primer 读书笔记

    顺序容器:为程序提供控制元素存储和访问顺序的能力,这种顺序与元素加入到容器时的位置相对应,而与元素值无关. 另外还有根据关键字的值来存储元素的容器:有序.无序关联容器. 另外STL还有三种容器适配器, ...

  7. ORA-01017: invalid username/password; logon denied异常的分析

    今天在整合SpringMVC与mybatis的时候遇到了一个异常: 四月 24, 2017 10:37:31 下午 org.apache.catalina.core.StandardWrapperVa ...

  8. 【bzoj3687】简单题 背包dp+STL-bitset

    题目描述 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的异或和.目前为止,小呆已经解决了前三个问题 ...

  9. HDU 2065 "红色病毒"问题 ——快速幂 生成函数

    $A(x)=1+x^2/2!+x^4/4!...$ $A(x)=1+x^1/1!+x^2/2!...$ 然后把生成函数弄出来. 暴力手算. 发现结论. 直接是$4^{n-1}+2^{n-1}$ 然后快 ...

  10. css选择器位置和数量技巧

    1. 除去首个元素 li:not(:first-child) li + li li:first-child ~ li 2. 第1-3个元素 li:nth-child(-n+3) 3. 除去第1-3个元 ...