`

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

0
1
分享到:
评论

相关推荐

    VMware实验基于heartbeat的Debian Linux高可用性集群服务

    本文将深入探讨基于Heartbeat的Debian Linux高可用性集群服务,这是一种利用开源工具Heartbeat构建的HA集群解决方案。 #### 什么是Heartbeat? Heartbeat是一个开源的高可用性解决方案,用于监控节点状态并在检测...

    利用VMware 实验基于heartbeat 的Debian Linux 高可用性集群服务

    利用VMware 实验基于heartbeat 的Debian Linux 高可用性集群服务

    Linux下高可用集群方案

    在 Linux 平台下,高可用集群方案有很多,本文介绍的是性价比比较高的一种,即使用 Heartbeat 2.0 配置 Linux 高可用性集群。高可用性(HA)集群是指可以避免单点失效的计算机集群系统,即使某个节点出现故障,集群...

    Linux系统中利用Watchdog模块提升Heartbeat的高可用性研究.pdf

    Linux系统中利用Watchdog模块提升Heartbeat的高可用性研究.pdf

    DRBR+Heartbeat+httpd搭建高可用性网站

    总之,DRBR、Heartbeat和Apache的结合提供了强大的高可用性解决方案,它们相互协作,确保即使在单个服务器出现问题时,网站服务也能持续运行,为用户提供不间断的体验。对于任何需要保障服务稳定性的企业或组织来说...

    Heartbeat+MySQL+DRBD构建高可用MySQL方案

    DRBD(Distributed Replicated Block Device)是一种分布式的块设备复制技术,主要用于实现高可用性和数据冗余。它可以被视为一种通过网络实现的RAID-1(镜像)功能,即当用户在一个节点上写入数据时,这些数据会被...

    Haproxy+Heartbeat 高可用集群方案操作记录

    Haproxy+Heartbeat高可用集群方案是一种非常实用的解决方案,通过合理的配置和实施,可以在保证服务高可用性的同时,大幅提升系统的整体性能。对于需要高度可靠性的应用场景而言,这种方案具有重要的价值。通过对...

    CentOS7通过HeartBeat配置实现高可用HA.rar

    本主题将详细探讨如何在CentOS 7操作系统中利用HeartBeat软件来配置高可用性集群,以及VIP(Virtual IP)的角色和作用。HeartBeat是一款用于监控和管理集群服务的工具,它能在主服务器出现故障时自动将服务切换到...

    Mysql数据库高可用性方案实践

    在上述高可用性方案的实践中,涉及到的几个关键点包括Mysql的安装配置、主主同步配置、Lvs和Keepalived的安装与配置、Heartbeat的配置以及DRBD的管理和维护等。每一步操作都需要按照指南仔细完成,并通过实际测试来...

    heartbeat 配置文件详解

    HA(High Availability,高可用性)heartbeat 主配置文件是 Linux 高可用性群集heartbeat 的核心组件之一。该文件用于定义群集的节点、心跳检测媒体、日志记录方式等重要参数。本文将详细介绍 heartbeat 配置文件的...

    使用heartbeat 做的mysql高可用性

    ### 使用Heartbeat实现MySQL高可用性 #### 一、引言 随着业务需求的增长和技术的发展,数据服务的稳定性成为衡量企业技术能力的重要指标之一。在众多数据库系统中,MySQL因其性能稳定、开源免费等特点,被广泛应用...

    Heartbeat MySQL DRBD构建高可用MySQL方案

    总结来说,"Heartbeat MySQL DRBD构建高可用MySQL方案"是一种结合了软件层面的心跳监控与硬件级别的数据复制的高可用性解决方案。它通过DRBD的实时数据同步和Heartbeat的故障检测及资源管理,实现了MySQL数据库的高...

    建基于Linux具有高可用性的集群环境

    总之,Heartbeat 是构建基于 Linux 的高可用性集群的重要工具之一。无论是 Heartbeat 1.x 还是 2.0 版本,都为中/高级 Linux 系统管理员、企业 IT 决策者和方案架构师提供了强大的技术支持,帮助他们在服务器出现...

Global site tag (gtag.js) - Google Analytics