一、我们一直以来用的heartbeat

大家用heartbeat做双机热备已经都做过很多次很熟悉了,而且配置起来其实也可以说是比较容易的.但是,说实话我们双机配置起来以后能实现的功能其实比较简单,只有在主服务器down掉或者主服务器的heartbeat服务停掉才可以切换,如果要想监控某个进程只有靠脚本。

二、遇到的问题

前一段时间给国电做双机,国电说我们的双机只有在主服务器down掉或者主服务器的heartbeat服务停掉才可以切换,功能太简单了,他们需要在主服务器的网卡坏掉也可以切换,虽然国电的一直比较事多,但是这个要求也算在情理之中,当时我没有答应他们,但是回来却觉得这个功能heartbeat应该可以实现,但是问了技术部的兄弟们,说以前都没有做过,只是通过自己写shell脚本实现过。我相信写脚本也可以很好的实现这个功能,但是我想heartbeat这么一个大名鼎鼎的开原双机热备的软件怎么会没有这个简单,而不可缺少的功能呢?于是经过我查找资料,以及试验,终于找到了heartbeat自带的断网切换的工具-ipfail。我就把具体的实现方法写给大家,希望大家以后可以用的到。

三、ipfail断网切换的原理

关于ipfail这个断网切换的原理很简单,首先heartbeat要判断自己的网络是否正常其实就是通过ping某个ip,如果可以ping的通,说明网络是通的,如果ping不通了,说明是网络断了,或者是主服务器的网卡坏了,然后执行切换的动作。

但是如果是被ping的那个ip的网卡出问题了怎么办呢,那岂不是也造成了误切换?所幸heartbeat想到了这种情况,而提供了ping group的功能,就是让heartbeat同时ping两个或者两个以上的ip,如果所有的都ping不通了,ipfail才认为是主服务器的网络断了,或是网卡坏了。

然而在大多数的一般情况下我们ping一个ip也是可以的,因为我们可以把这个ip设置成我们这个网络中default gateway(默认网关)的ip,因为如果是默认网关的网卡坏了,即便是误切换也无所谓了,默认网关坏了那么我们的服务是怎么也不可能被访问到了。

下边我会对 ping 一个ip和ping group的功能及配置方法一一介绍。

四、ipfail的配置与使用

我们要使用ipfail这个断网切换的功能,只要在ha.cf这个配置文件中配置即可,下面我把和ipfail相关,以及和断网切换功能相关的配置文件行给列出:

#ping 10.10.10.254

#ping 172.16.103.254

#

#       Treats 10.10.10.254 and 10.10.10.253 as a psuedo-cluster-member

#       called group1. If either 10.10.10.254 or 10.10.10.253 are up

#       then group1 is up

#       Used together with ipfail below...

#

#ping_group group1 172.16.103.254 172.16.103.212

#ping_group group1 10.0.0.200 10.0.0.202 10.0.0.178

#ping_group group1 172.16.103.254 172.16.103.32

#

#       Processes started and stopped with heartbeat. Restarted unless

#               they exit with rc=100

#

#respawn userid /path/name/to/run

#respawn hacluster /usr/ha/lib/heartbeat/ipfail

#respawn hacluster     /usr/local/lib/heartbeat/ipfail

#

#       Access control for client api

#               default is no access

#

#apiauth client-name gid=gidlist uid=uidlist

#apiauth ipfail gid=haclient uid=hacluster

1.配置文件中有很多英文的解释以及示例被#号注释,供参考,我们使用ipfail时只要去掉相应的#号即可,下面写出ping一个ipipfail配置:

ping 172.16.103.254

respawn hacluster     /usr/local/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

只有这3行,非常简单,只要写在ha.cf重启动heartbeat服务就可以生效了,我来解释一下这3行配置文件的意思:

ping 172.16.103.254

一般是ping网关,告诉ipfail网络是否畅通。

respawn hacluster     /usr/local/lib/heartbeat/ipfail

这句就是指定断网切换的程序文件路径,我们一定要给出正确的路径,一般情况下,这个ipfail文件会在heartbeat安装目录下的lib/heartbeat/子文件夹下,确认好以后我们给出正确的路径, 其中hacluster是一个uid,是以hacluster这个用户身份运行ipfail。

apiauth ipfail gid=haclient uid=hacluster

是指定对ipfail有权限的用户和组

2.ping一个groupipfail配置:

ping_group group1 172.16.103.254 172.16.103.212

respawn hacluster     /usr/local/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

ping_group group1 172.16.103.254 172.16.103.212

这个就是同时ping多个ip,只有所有的ip都无法ping通时,ipfail才会执行切换的动作,保证了不会是因为被ping的ip出了问题而产生误切换。

后边两句前面说过了,不再解释了。

最后需要注意的是不要把ping 和ping group 这两行同时写出来,写ping的内容时,要保证ping group是注释的,写ping group时,要保证ping那行是注释着的,否则会出问题的, 切换运行不正常。

转载于:https://blog.51cto.com/lucifer119/1338212

heartbeat自带的断网切换功能-ipfail相关推荐

  1. html实现让电脑断网的功能,13. Electron 断网提醒功能的实现

    桌面客户端的程序都必备的一个功能是判断网络状态,这个其实可以用window.addEventListener来进行时间监听. 相关事件 其实这个是JavaScript的一种方式进行监听网络状态,监听的 ...

  2. GD32F130之USART自带的RS485方向切换功能

    关于RS485收发器的基本使用 在使用单片机实现串口RS485通信时,需要外接一个TTL转RS485的收发器芯片,例如SP3485和MAX3485.由于RS485使用的是单数据通道,差分信号传输方式, ...

  3. edge自带断网游戏

    在没有网络时你会不会很无聊?博主告诉你一个edge浏览器自带的断网小游戏,让你在断网时也能玩游戏! 网址: 打开edge://surf这个断网游戏网站即可游玩: 作弊码既隐藏模式: 输入microso ...

  4. 关于实现校园网防断网的可行方案

    关于实现校园网防断网的可行方案 文章目录 关于实现校园网防断网的可行方案 前言 实现原理 实践流程 经验总结 前言 我们学校校园网采用的是Web网页认证的方式来上网的,或者使用锐捷客户端认证上网,都可 ...

  5. Linux命令screen—终端切换,工作环境保存,画面同步,防断网

    Screen基础 创建一个新的窗口 会话分离与恢复 清除dead 会话 关闭或杀死窗口 screen 高级应用 会话共享 会话锁定与解锁 发送命令到screen会话 屏幕分割 Reference 猜你 ...

  6. qwidget多个窗口同步_Linux命令screen—终端切换,工作环境保存,画面同步,防断网...

    Screen基础 Screen是一款由GNU计划开发的用于命令行终端切换的自由软件.用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换.GNU Screen可以看作是窗口管理器的命 ...

  7. mysql vip切换未重连问题_服务器断网事务未提交导致MYSQL锁表问题(ADSL拨号上网)...

    环境描述: 由于特殊原因服务器的网络是电信ADSL拨号上网的,用"自动切换IP精灵"进行自动断网重连,每次重新连上网络需要2s时间,设置2小时切换一次网络. MYSQL数据库在远程 ...

  8. c语言程序窗口后台持续监测,用c语言实现后台运行的、每隔30s检查一次的、带有日志功能的断网重新连接程序...

    /*这是一个后台运行的.每隔30s检查一次的.带有日志功能的断网重新连接程序. 要想使用它必须要配置好c语言环境,比如安装有mingw的codeblocks 实现的方式就是每隔一段时间就去ping一下 ...

  9. 如何通过路由器日志查看路由器是否断网过_路由器本身有一个日志功能,里面存了很多工作记录...

    第一种原因或许是来自路由器内存的问题,路由器本身有一个日志功能,里面存了很多工作记录. 有的路由器本身内存小,用的时间久了日志信息就会占满内存,出现路由器无缘无故卡一下的状况,从而导致网络连接故障,无 ...

最新文章

  1. 聊一聊Spring中的线程安全性
  2. 独家 | 准确度VS速度——数据科学家能从搜索中学到什么?(附链接)
  3. gcc/g++添加头文件目录和库文件目录
  4. 全球及中国纳米材料行业竞争格局及发展规模预测报告2021年版
  5. Linux从入门到精通——磁盘与目录的容量(du、df)
  6. jdbc时区_什么比日期和时区更难? SQL / JDBC中的日期和时区!
  7. Hive jdbc执行seelct 语句时报 return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
  8. linux systemd命令,systemd命令
  9. 使用加密签名时遇到的一个问题
  10. [渝粤教育] 西南科技大学 西方经济学 在线考试复习资料(3)
  11. SunFMEA-基于AIAG-VDA-FMEA的风险管理工具
  12. 天猫、抖音各大电商平台关键词调用、价格监控、竞价API
  13. 模2除法(CRC校验码计算)模2除法和算数除法不同,文中例子120/13用模2除法结果:商11余数7,而算数除法结果:商9余数3
  14. 使用Md5加密算法对密码进行加密(工具类)
  15. mysql 如何去掉毫秒_mysql 如何去掉毫秒值
  16. PRT电波拉皮的原理, 做电波拉皮效果好吗能维持多久
  17. 重装系统后Win10无故关机解决
  18. 2020-04-13
  19. Smarty (一)
  20. xampp mysql ssl_xampp搭建https服务器

热门文章

  1. qt 中常见错误汇总
  2. phphstudy运行不了网站_phpStudy访问速度慢和启动失败的解决办法
  3. Mac安装code blocks以及解无法打开的问题
  4. 通过PowerDesigner实现sql-pdm-sql
  5. 笔记-中项案例题-2018年上-人力资源管理
  6. 笔记整理-信息系统开发基础-软件测试-模糊测试
  7. 笔记-信息系统安全管理-计算机信息安全保护等级划分准则
  8. 30个Python常用极简代码
  9. 提高mysql千万级大数据SQL查询优化30条经验
  10. IDEA中安装Free Mybatis plugin插件实现从dao层到mapper层自由跳转