天天看點

Apache網站叢集corosync+pacemaker架構使用crm_mon做簡單監控

思路:使用pacemaker原生的CLI管理工具元件的crm_mon,監控叢集的狀态

梗概:把crm_mon做成LSB标準的服務。使用crm configure工具添加到叢集資源中。設定Apache資源與crm_mon資源的啟動順序和綁定關系。

操作:

一、制作标準的LSB 架構crm_mon服務以友善pacemaker管理,拷貝如下腳本到叢集節點的/etc/init.d/目錄下并給執行權限

注:可以根據實際情況,修改crm_mon的參數,例如我們還可以使用

crm_mon --daemonize --snmp-traps snmptrapd.example.com

來發出SNMP資訊,并通過nagios等SNMP代理收集并處理。

#!/bin/bash  

# crm_mon        Startup script for the Pacemaker managment tools: crm_mon 

# chkconfig: - 86 16 

# description: crm_mon scripts for pacemaker's lsb style 

# processname: crm_mon 

# pidfile: /var/run/crm_mon.pid 

### BEGIN INIT INFO 

### END INIT INFO 

# wangxiaoyu#live.com 

# 2011-03-20 22:53:59 

# Version 0.1 

# Source function library. 

. /etc/rc.d/init.d/functions 

crm_mon=/usr/sbin/crm_mon 

prog=crm_mon 

pidfile=${PIDFILE-/var/run/crm_mon.pid} 

lockfile=${LOCKFILE-/var/lock/subsys/crm_mon} 

RETVAL=0 

# 請根據實際情況,修改crm_mon的啟動參數

OPTIONS='--daemonize --as-html /var/www/html/crm_mon.html' 

start() { 

        echo -ne $"Starting $prog: " 

    $crm_mon $OPTIONS 

    RETVAL=$? 

    [ $RETVAL -ne 0 ] && echo_failure && return $RETVAL 

    pidNum=$(pidof ${crm_mon}) 

        [ "$pidNum" -ne 1 ] && touch ${pidfile} \ 

    && echo -ne ${pidNum} > ${pidfile} \ 

    && touch ${lockfile} 

        RETVAL=$?  

    [ $RETVAL = 0 ] && echo_success 

        return $RETVAL

# 最初嘗試通過function中的deamon函數實作,發現不成功,隻好自己寫pidfile和lockfile 

# When stopping crm_mon a delay of >10 second is required before SIGKILLing the 

# crm_mon parent; this gives enough time for the crm_mon parent to SIGKILL any 

# errant children. 

stop() { 

    echo -n $"Stopping $prog: " 

    killproc -p ${pidfile} -d 10 $crm_mon 

    echo 

    [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile} 

reload() { 

    echo -n $"Reloading $prog: " 

    # Force LSB behaviour from killproc 

    LSB=1 killproc -p ${pidfile} $crm_mon -HUP 

        RETVAL=$? 

    if [ $RETVAL -eq 7 ]; then 

            failure "$crm_mon shutdown" 

        fi 

# See how we were called. 

case "$1" in 

  start) 

    start 

    ;; 

  stop) 

    stop 

  status) 

        status -p ${pidfile} $crm_mon 

  restart) 

  condrestart|try-restart) 

    if status -p ${pidfile} $crm_mon >&/dev/null; then 

        stop 

        start 

    fi 

  force-reload|reload) 

        reload 

  *) 

    echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|help}" 

    RETVAL=2 

esac 

exit $RETVA 

二、添加crm_mon資源到叢集中,并設定與資源HTTPD(管理Apache服務的腳本)的綁定關系和啟動順序

在任意一叢集節點上操作:

crm configure primitive CRM_MON lsb:crm_mon

crm configure colocation CRM_MON_with_HTTPD inf: CRM_MON HTTPD

crm configure order order HTTPD_before_CRM_MON inf: HTTPD CRM_MON

三、現在我們就可以通過http://VIP/crm_mon.html頁面實時檢視叢集的狀态了

# elinks http://VIP/crm_mon.html # 結果如下

Last updated: <b>Sun Mar 20 22:32:38 2011</b>

Current DC: pcmk-2 (pcmk-2)

3 Nodes configured.

3 Resources configured.

STONITH of failed nodes

:

disabled

Cluster is

symmetric

No Quorum Policy

Ignore

Node: pcmk-2 (pcmk-2): online

Node: pcmk-1 (pcmk-1): standby

Node: pcmk-3 (pcmk-3): online

VIP (ocf::heartbeat:IPaddr2): Started pcmk-2 

HTTPD (ocf::heartbeat:apache): Started pcmk-2 

CRM_MON (lsb:crm_mon): Started pcmk-2  

<a href="http://down.51cto.com/data/2357781" target="_blank">附件:http://down.51cto.com/data/2357781</a>

     本文轉自xiaoyuwang 51CTO部落格,原文連結:http://blog.51cto.com/wangxiaoyu/520923,如需轉載請自行聯系原作者