Linux高可用性方案之Heartbeat的watchdog配置(原创) 编辑

Watchdog概述 

在日常使用heartbeat接管资源的应用中,由于heartbeat无法对操作系统自身出现的问题进行监控。如果主节点操作系统挂起,一方面可能导致服务中断,另一方面由于主节点资源无法释放,而备份节点却接管了主节点的资源,此时就发生了两个节点同时争用一个资源的状况。
针对这个问题,就需要在Linux内核中启用一个叫watchdog的模块。watchdog是一个Linux内核模块,它通过定时向/dev/watchdog设备文件执行写操作,从而确定系统是否正常运行。如果watchdog认为内核挂起,就会重新启动系统,进而释放节点资源。
watchdog代码也支持用软件替换外部的硬件计时器,该软件叫做 softdog,softdog维护一个内部计时器,在另一个进程写入/dev/watchdog设备文件时更新,如果softdog没有看到进程写入 /dev/watchdog文件,它认为内核一定出故障了,它将启动一个内核恐慌,正常情况下,内核恐慌将导致系统关闭,但是你可以修改这个默认行为,将其改为默认行为为重启系统。
当你在/etc/ha.d/ha.cf文件中启用了watchdog选项后,Heartbeat将每隔相当于deadtime长的时间写入/dev/watchdog文件(或设备),因此,出现任何导致Heartbeat更新 watchdog设备失败的事情,一旦watchdog超时周期(默认是一分钟)过期,watchdog将启动内核恐慌。
Watchdog的工作原理 
Watchdog在实现上可以是硬件电路也可以是软件定时器,能够在系统出现故障时自动重新启动系统。在Linux 内核下, watchdog的基本工作原理是:当watchdog启动后(即/dev/watchdog 设备被打开后),如果在某一设定的时间间隔内/dev/watchdog没有被执行写操作, 硬件watchdog电路或软件定时器就会重新启动系统。
/dev/watchdog 是一个主设备号为10, 从设备号130的字符设备节点。 Linux内核不仅为各种不同类型的watchdog硬件电路提供了驱动,还提供了一个基于定时器的纯软件watchdog驱动。 驱动源码位于内核源码树drivers\char\watchdog\目录下。
硬件与软件watchdog的区别 
硬件watchdog必须有硬件电路支持, 设备节点/dev/watchdog对应着真实的物理设备, 不同类型的硬件watchdog设备由相应的硬件驱动管理。软件watchdog由一内核模块softdog.ko 通过定时器机制实现,/dev/watchdog并不对应着真实的物理设备,只是为应用提供了一个与操作硬件watchdog相同的接口。
硬件watchdog比软件watchdog有更好的可靠性。 软件watchdog基于内核的定时器实现,当内核或中断出现异常时,软件watchdog将会失效。而硬件watchdog由自身的硬件电路控制, 独立于内核。无论当前系统状态如何,硬件watchdog在设定的时间间隔内没有被执行写操作,仍会重新启动系统。
一些硬件watchdog卡如WDT501P 以及一些Berkshire卡还可以监测系统温度,提供了 /dev/temperature接口。 对于应用程序而言, 操作软件、硬件watchdog的方式基本相同:打开设备/dev/watchdog, 在重启时间间隔内对/dev/watchdog执行写操作。即软件、硬件watchdog对应用程序而言基本是透明的。
在任一时刻, 只能有一个watchdog驱动模块被加载,管理/dev/watchdog 设备节点。如果系统没有硬件watchdog电路,可以加载软件watchdog驱动softdog.ko。
测试Watchdog

只要在/etc/ha.d/ha.cf加入

watchdog /dev/watchdog

即可自动启用watchdog功能
可通过如下步骤确认

1、 # grep misc /proc/devices 
10 misc
2、 # cat /proc/misc |grep watchdog
130 watchdog
3、 # lsmod |grep softdog
softdog                 9941  2 

即可确认启用了watchdog功能如果没有生成/dev/watchdong设备,则可通过如下命令自行创建
mknod /dev/watchdog c 10 130 
在主节点上可通过"killall -9 heartbeat"命令关闭Heartbeat进程。由于是非法关闭Heartbeat进程,因此Heartbeat所控制的资源并没有释放。备份节点在很短一段时间没有收到主节点的响应后,就会认为主节点出现故障,进而接管主节点资源。在这种情况下,就出现了资源争用情况,两个节点都占用一个资源,造成数据冲突。针对这个情况,可以通过Linux提供的内核监控模块watchdog来解决这个问题,将watchdog集成到Heartbeat中。如果Heartbeat异常终止,或者系统出现故障,watchdog都会自动重启系统,从而释放集群资源,避免了数据冲突的发生。
在执行"killall -9 heartbeat"时,会在/var/log/messages中看到如下信息:
Softdog: WDT device closed unexpectedly. WDT will not stop! 
系统就会马上重启

参考至:http://linux.chinaitlab.com/linuxjq/744842_6.html

          http://book.51cto.com/art/200912/168038.htm

          http://aaa3060.blog.163.com/blog/static/2817338520104314466314/

          http://blog.sina.com.cn/s/blog_5fc3a8b60100x0ge.html

本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

作者:czmmiao 原文地址:http://czmmiao.iteye.com/blog/1174701

时间: 2024-11-05 17:20:09

Linux高可用性方案之Heartbeat的watchdog配置(原创) 编辑的相关文章

Linux高可用性方案之Heartbeat的Stonith配置(原创)

前言  前一阵,在为广发银行搭建HA集群时,客户总希望在出现脑裂问题后能很好的解决.当时由于没有深刻的理解heartbeat的各个模块,crm.ccm.ipfail各个插件试试得我是晕头转向的,最后的解决方式是加了两根心跳线.说白了,还是没解决,只是在心跳监测方面更加强壮而已,这里笔者介绍Stonith这个模块,以解决脑裂问题. 脑裂  当群集发生裂脑的状况时候,因为无法进行任何沟通而误会对方无法运作,所以主与备份服务器都会启动浮动IP和相关服务,此时若两部服务器对外连线亦未短线,那么势必导致有

Linux高可用性方案之Heartbeat的CRM配置(原创)

heartbeat默认模式是没法监控资源的,也就是说其中某个资源要是crash掉了,也不会发生任何动作,它只有当它认为对方机器dead后才会发生动作,也就是机器crashed,网络断掉了之类.这显然没法达到我们的目标.为了达到我们的目标就要采用crm(cluster resource management)模式了. 本文需要实现的目标,让ha自动监控资源的运行状态. 启动服务ip为192.168.0.222,自动运行脚本echo.sh echo.sh脚本内容如下#!/bin/bash echo

Linux高可用性方案之Heartbeat的CRM节点得分计算(原创)

crm资源得分概述  在V2的Heartbeat中,为了将资源的监控和切换结合起来,同时支持多节点集群,Heartbeat提供了一种积分策略来控制各个资源在集群中各节点之间的切换策略.通过该积分机制,计算出各节点的的总分数, 得分最高者将成为active状态来管理某个(或某组)资源. 如果在CIB的配置文件中不做出任何配置的话,那么每一个资源的初始分数(resource-stickiness)都会是默认的0,而且每一个资源在每次失败之后所减掉的分数(resource-failure-sticki

Linux高可用性方案之Heartbeat日志查看(原创)

日志是我们跟踪系统和应用程序最好的方式,在Heartbeat中日志可以自定义输出位置,只需在ha.cf文件配置即可,具体可参见笔者的 http://czmmiao.iteye.com/blog/1174010 下面跟着笔者我们来看详细看下Heartbeat的日志启动主机Heartbeat服务  #/etc/init.d/heartbeat start  Heartbeat启动时,通过"tail -f /var/log/ messages"查看主节点系统日志信息,输出如下:# tail

Linux高可用性方案之Heartbeat安装(原创)

安装Heartbeat前的准备  Heartbeat集群必须的硬件 从下图看出,构建一个Heartbeat集群系统必须的硬件设备有: 节点服务器: 网络和网卡: 共享磁盘. 节点服务器 安装Heartbeat至少需要两台主机,并且对主机的要求不高,普通的PC服务器即可满足要求.当然,也可以在虚拟机上安装Heartbeat,现在Heartbeat可以很好地运行在Linux系统下,很多Linux发行版本都自带了Heartbeat套件,同时,还可以运行在FreeBSD和Solaris操作系统上. 网卡

Linux高可用性方案之Heartbeat架构(原创)

Heartbeat 概述  Heartbeat 是 Linux-HA 工程的一个组件, 1999 年开始到现在,发布了众多版本,是目前开源 Linux-HA 项目最成功的一个例子,在行业内得到了广泛的应用.随着 Linux在关键行业应用的逐渐增多,它必将提供一些原来由 IBM 和 SUN 这样的大型商业公司所提供的服务,这些商业公司所提供的服务都有一个关键特性,就是高可用集群. 高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一

Linux高可用性方案之Heartbeat的日常维护命令(原创)

crm_resource  crm_resource命令对资源执行各种资源相关的操作.它可以修改已配置资源的定义.启动和停止资源,以及在节点间删除和迁移资源. crm_resource  [-?|-V|-S] -L|-Q|-W|-D|-C|-P|-p [options] 示例 列出所有资源:crm_resource -L  检查正在运行资源的位置(以及是否在运行):crm_resource -W  -r my_first_ip  如果 my_first_ip 资源正在运行,此命令的输出中会显示正

Linux 2.6.19.x 内核编译配置选项简介

Linux 2.6.19.x 内核编译配置选项简介 版权声明 本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL 的精神发布.任何人都可以自由使用.转载.复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件.您可以自由链接.下载.传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明. 其他作品 本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有作品的列表: 金步

网卡-linux vmware下的eth1和eth2配置不成功

问题描述 linux vmware下的eth1和eth2配置不成功 对一台vmare上的Linux 进行了如下配置: auto eth0 iface eth0 inet static address 192.168.0.21 gateway 192.168.0.1 netmask 255.255.255.0 dns-nameservers 192.168.0.1 auto eth1 iface eth1 inet static address 192.168.1.21 gateway 192.1