用watchdog 保证服务器的高可用性

watchdog 是一款优秀的系统监控工具。普通情况下,它看似无关紧要,但却能在危机关头力挽狂澜。因为它能够在系统资源即将耗尽或即将崩溃时主动重启系统,避免由于硬件罢工而导致的被动重启或宕机造成的数据损失和业务损失。这里将讨论软件watchdog ,而不是硬件watchdog 。

watchdog 实际上是一个用于系统主动重启的计时器,默认倒计时为60秒,系统在60秒内往 /dev/watchdog 设备中进行一次写操作,如果成功则归零计时器,重新倒计时。如果在60秒内,没有任何写操作,watchdog 便认为系统发生严重故障,主动重启系统,以求自救而不是等死。

在主动重启之前, 会执行以下一系列操作:

a、关闭所有打开的文件
b、如果sendmail应用存在,配置文件中提供了管理员的email地址,将发封email给管理员
c、通知系统重启
d、将重启信息记入系统日志kill掉所有进程将重启信息记入wtmp
e、关闭倒计时,磁盘限额,交换分区
f、卸载所有非根文件系统
g、以只读方式重新装载根文件系统(这个十分重要,防止破坏系统,因为被动重启有可能破坏系统)
h、关闭网络接口
i、重启系统

内核级别的watchdog,通常是内核自带,除非编译,没有给用户配置的余地。另外还有用户接口,可以更方便的使用。

watchdog 会根据配置检测系统平均负载,剩余内存,网络是否通畅等,为此我们可以轻松设置系统可用资源的上限,当满足某一条件则会触动重启机制,这可以方便的保护机器。例如,我们设置当剩余虚拟内存页面低于x,或15分钟平均负载高于y时,系统将自动重启,配合heartbeat,可以把灾难降至最低,特别是高负载带来的系统宕机。

这里以scientific linux 6和Ubuntu 10.04为例:

1、安装

01.#yum install watchdog

01.#apt-get install watchdog

2、配置模块

a、查看模块信息

#modinfo softdog        #注意,由于是软件实现的watchdog,故称为softdog,而不是watchdog。

b、开机加载softdog模块(由于并非基础性模块,不用事先考虑系统启动顺序)

CentOS 6 /scientific linux 6】:

#cat /etc/sysconfig/modules/watchdog.modules 
 
#!/bin/sh 
if [ ! -c /dev/watchdog];then 
    /sbin/modprobe softdog >/dev/null 2>&1 
fi 
 
#chmod +x  /etc/sysconfig/modules/watchdog.modules

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/fc258c7fb94a7997834860d9320e8743.html