两台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. RAID与LVM磁盘阵列技术

    RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列) RAID概念: RAID技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据 ...

  2. Java程序占用实际内存大小

    很多人错误的认为运行Java程序时使用-Xmx和-Xms参数指定的就是程序将会占用的内存,但是这实际上只是Java堆对象将会占用的内存.堆只是影响Java程序占用内存数量的一个因素.要更好的理解你的J ...

  3. MySQL之架构与历史(二)

    多版本并发控制 MySQL的大多数事务型存储引擎实现的都不是简单的行级锁.基于提升并发性能的考虑,它们一般都同时实现了多版本并发控制(MVCC).不仅是MySQL,包括Oracle.PostgreSQ ...

  4. 数据结构之B-树

    作为文件系统索引的常用数据结构,B-树的查找涉及硬盘和内存两个部分,硬盘的读写将影响查找的速度.传统关系型数据库如Mysql采用B-树作为索引,新型内存数据库levledb通过改进数据组织方式通过内存 ...

  5. IOS开发---菜鸟学习之路--(六)-UITableView几个方法的使用说明

    对于UITableView的基础使用我这边就不做重复介绍了 我重点就来介绍下如何实现大部分新闻的界面.也就是第一条记录显示大图片下面加一段文字说明 然后剩下来的内容全部显示为文字图片的格式 其实要做到 ...

  6. 2、HTML基础总结 part-2

    1.表单一 <html> <body> <form> 姓名: <input type="text" name="name&quo ...

  7. Leetcode 523.连续的子数组和

    连续的子数组和 给定一个包含非负数的数组和一个目标整数 k,编写一个函数来判断该数组是否含有连续的子数组,其大小至少为 2,总和为 k 的倍数,即总和为 n*k,其中 n 也是一个整数. 示例 1: ...

  8. [HTTPS]pfx转jks

    keytool -importkeystore -srckeystore  src.pfx -srcstoretype pkcs12 -destkeystore trg.jks -deststoret ...

  9. fade away

  10. 【SPOJ1297】Palindrome (SA+RMQ)

    求最长回文串.把原串翻转后,加在原串后面,中间插入一个辨别字符.然后求SA,Height.然后枚举每个字母作为回文串中心,分长度为奇数和偶数去讨论:奇数求 suffix(i)和suffix(n-i+1 ...