RHCS配置JAVA应用程序(HA双机热备)注意事项并附上我的脚本

这两天一直在研究使用Red Hat的集群套件RHCS拉JAVA应用程序,做双机热备,由于对于shell不熟悉,花了几天时间一直没有搞通脚本,不是应用拉不起来,就是脚本导致rgmanager启动不了或者应用频繁启动,网上查阅很多资料也没找到RHCS配置JAVA应用程序的,后来打电话叫来RedHat的技术支持,参考他们给的脚本修改了自己的脚本,总于搞通了。。。我在配置的过程中总结了一些注意事项:
1.脚本必须包含start,stop,status,restart函数
2.rhcs中failoverdomain配置为relocate表示集群检测到status函数返回非0会切换到另外一台,restart表示集群检测到status函数返回非0会尝试重启应用,然后重启不行就relocate
3.status函数必须能够正确反映当前应用的运行状态,集群根据status的
返回(如果为非0)做出切换动作,返回0代表成功,1代表失败。我之前的问题就是因为status函数没有写好导致应用一直重启或者手动kill掉进程不会重新拉起
4,最好每个JAVA应用程序有自己的监听端口,没有也可以单独启动一个监听端口,这样status函数就能根据端口号来唯一匹配到JAVA应用程序进程是否启动,特别是在一台机器上集群管理多个JAVA应用程序

以上不对的地方请大家多做指教…

最后附上我的启动脚本供大家参考,当然不好的地方请大家指出或者进行优化,本人对于shell不熟悉,欢迎指出,谢谢大家:
#!/bin/bash
. /etc/rc.d/init.d/functions

RETVAL=0

PROGNAME=”scheduler”

PROGDIR=”/usr/downloaderSchedule/”
JAVA_HOME=/usr/java/jdk1.6.0_13/
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

#启动JAVA应用程序
start(){

cd $PROGDIR

echo “working directory…..”

pwd
touch log.log
nohup $JAVA_HOME/bin/java -Xms256m -Xmx1024m -jar “$PROGNAME.jar” > log.log 2>&1 &

echo “scheduler is started.”

ps -ef | grep “$PROGNAME” | grep -v “$0” | grep -v “grep” | awk ‘{print $2}’
RETVAL=$?

return $RETVAL

}

#停止JAVA应用程序
stop() {

echo $PROGNAME

ID=`ps -ef | grep “$PROGNAME” | grep -v “$0” | grep -v “grep” | awk ‘{print $2}’`

echo $ID

echo “—————”

for id in $ID

do

kill -9 $id

echo “killed $id”

done

echo “—————”
RETVAL=0
return $RETVAL

}
#检测进程状态的函数
status(){
#通过端口和进程名称来匹配进程
netstat -atn |grep 8801 && ps -ef|grep -v grep|grep “$PROGNAME”
return $?#该处的$?是不是返回上一条命令是否成功执行?0或者1?
}

case “$1″ in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
*)

echo $”Usage: $prog {start|stop|restart|status}”
exit 1
esac

友荐云推荐

关于开发者

开发者一枚...
此条目发表在HA分类目录,贴了, , , , 标签。将固定链接加入收藏夹。

发表评论

邮箱地址不会被公开。 必填项已用*标注