思路:使用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,如需轉載請自行聯系原作者