> Linux集群 > 服务器集群 >

使用nagios做heartbeat监控时,在nagios服务器端报警提示:NRPE: Command 'check_heartbeat' not defined 在nagios客户端/usr/local/nagios/libexec/check_nrpe -H 192.168.3.211 -c check_heartbeat都能够正常执行

在将heartbeat应用到线上后,启动service heartbeat start没有反应,可以参考下这里的解决方法。

heartbeat启动后无反应

查看日志文件:
 

tail -f /var/log/ha-log:
heartbeat[30680]: 2015/01/27_18:04:29 info: Version 2 support: false
heartbeat[30680]: 2015/01/27_18:04:29 WARN: Logging daemon is disabled --enabling logging daemon is recommended
heartbeat[30680]: 2015/01/27_18:04:29 info: **************************
heartbeat[30680]: 2015/01/27_18:04:29 info: Configuration validated. Starting heartbeat 2.1.3
heartbeat[30681]: 2015/01/27_18:04:29 info: heartbeat: version 2.1.3
heartbeat[30681]: 2015/01/27_18:04:29 WARN: No Previous generation - starting at 1422353070
heartbeat[30681]: 2015/01/27_18:04:29 info: Heartbeat generation: 1422353070
heartbeat[30681]: 2015/01/27_18:04:29 info: No uuid found for current node - generating a new uuid.
heartbeat[30681]: 2015/01/27_18:04:29 info: Creating FIFO /var/lib/heartbeat/fifo.
 

一直保持在此不动,heartbeat所管理的资源也没有启动。

查看debug日志也不起作用,还可以从哪里分析报错日志与信息?

使用命令:
 

service hearbeat status

提示:
Cannot shmget for process status: Invalid argument

由于kernel.shmmax,是内核参数导致的。因为这台机器是老机器,版本为5.5,而新配置的6.5服务器没有这个问题。
我的机器shmmax数据设置的过大,从而导致创建共享内存失败。

shmmax内核参数定义单个共享内存段的最大值,一般建议使用物理内存的一半,单位为字节。
以2G为例:2048/2*1024*1024=1073741824
在/etc/sysctl.conf中添加kernel.shmmax=1073741824,在系统重启后仍生效。

修改为:
 

service heartbeat start

仍未启动,再次:
 

service hearbeat status

报错:
Cannot shmget for process status: No space left on device

原因分析:
shmall共享内存设置过大导致shmall内核参数定义共享内存页数,一般建议设置为物理内存大小,单位为页,1页=4k
以2G为例:2048*1024*1024/4000= 536870
在/etc/sysctl.conf中添加kernel.shmall=536870,在系统重启后仍生效。

完成修改,重启hearbeat:
 

service heartbeat start

正常启动且顺利接管VIP。

 
(责任编辑:IT)