这几天学习了一下heartbeat的资料,想参照 Two Apache Web Servers in an Active/Active Configuration 做个Two Nginx Web Services in Active/Active HA。研究发现,heartbeat所管理的资源代理(Resource Agent),有OCF、LSB等几种 。LSB这种shell脚本我还能依葫芦画瓢的写一点,参考linux系统中的原有脚本和网上资料,写了一个很简单的:
#!/bin/bash # # nginx: Control the nginx Daemon # # Version: @(#) /etc/init.d/nginx 0.1 # # description: This is a init.d script for nginx. Tested on CentOS4. \ # Change DAEMON and PIDFILE if neccessary. # #Location of nginx binary. Change path as neccessary DAEMON=/usr/local/nginx/sbin/nginx NAME=`basename $DAEMON` #Pid file of nginx, should be matched with pid directive in nginx config file. PIDFILE=/var/run/$NAME.pid #this file location SCRIPTNAME=/etc/init.d/$NAME #only run if binary can be found test -x $DAEMON || exit 0 RETVAL=0 start() { echo $"Starting $NAME" $DAEMON RETVAL=0 } stop() { echo $"Graceful stopping $NAME" [ -s "$PIDFILE" ] && kill -QUIT `cat $PIDFILE` RETVAL=0 } forcestop() { echo $"Quick stopping $NAME" [ -s "$PIDFILE" ] && kill -TERM `cat $PIDFILE` RETVAL=$? } reload() { echo $"Graceful reloading $NAME configuration" [ -s "$PIDFILE" ] && kill -HUP `cat $PIDFILE` RETVAL=$? } status() { if [ -s $PIDFILE ]; then echo $"$NAME is running." RETVAL=0 else echo $"$NAME stopped." RETVAL=3 fi } # See how we were called. case "$1" in start) start ;; stop) stop ;; force-stop) forcestop ;; restart) stop start ;; reload) reload ;; status) status ;; *) echo $"Usage: $0 {start|stop|force-stop|restart|reload|status}" exit 1 esac exit $RETVAL
注意对应的Nginx配置的PID指令。
参考资料: