OpenShift 503 自动重启Shell脚本优化版

  “OpenShift是红帽公司推出的一个云计算服务平台,开发人员可以用它来构建和发布web应用。Openshift广泛支持多种编程语言和框架,如Java,Ruby和PHP等。另外它还提供了多种集成开发工具如Eclipse integration,JBoss Developer Studio和 Jenkins等。OpenShift 基于一个开源生态系统为移动应用,数据库服务等,提供支持。”  ——百度百科

  近来听说了OpenShift,于是试用了下,还不错,功能齐全,速度也还可以,美中不足的是有时维护后再访问会坑爹的503,应用状态变成Idle或Unkonw等等,必须手动执行重启才恢复,让人很不爽。

  OpenShift提供了两种方式:进入Web后台/SSH命令行。但是无论哪种都不很方便,这等蛋疼事还是交给电脑自动来做比较好。

  想到这种事遇到的人不算少,不知道有没有做过类似东西的人,于是上百度搜索,找到一篇关于此问题的文章,《Openshift 503自动重启应用》,呵呵,可以偷懒了,文章是通过使用一个bash脚本,配合OpenShift的Cron来实现这一功能.

  作者给出的使用方法是:复制到 app-root/repo/.openshift/cron/minutely 目录下并赋予711执行权限。

  简单分析下,可以看出是调用curl获取指定网页的状态码,如果返回是200或302则判定为正常,否则执行自动重启。

  我在试用之后有些我发现了一些不足:

    1.因时区设定问题(OpenShift默认是EST时间,即美国东部时间),写出的日志时间不是北京时间,查看日志还得自己换算时间,极为不爽。

    2.网站返回301也会执行重启代码(有时候因为特殊原因例如域名跳转或者维护需要设定首页301跳转,造成不便)。

    3.配置稍麻烦,需手动填写sshid变量值和域名,虽然没什么大问题,但是我比较喜欢追求完美。


  第一个问题十分好解决,使用linux下的export命令更改时区设定即可解决,由于export仅在本次执行有效,所以必须每次执行脚本都加上这句“export TZ='Asia/Shanghai'”;

  第二个问题需要更改一下grep命令的参数,加入301判定即可。

  第三个问题使用OpenShift独有的环境变量即可,域名为OPENSHIFT_APP_DNS,数据目录为OPENSHIFT_DATA_DIR,其他还有一些环境变量可以在SSH SHELL下执行export查看。

 

    最后,成品代码如下:

  

 1 #!/bin/bash
 2 export TZ='Asia/Shanghai'
 3 curl -I ${OPENSHIFT_APP_DNS} 2> /dev/null | head -1 | grep -q '200\|301\|302'
 4 s=$?
 5 if [ $s != 0 ];
 6     then
 7         echo "`date +"%Y-%m-%d %H:%M:%S"` down" >> ${OPENSHIFT_DATA_DIR}web_error.log
 8         let t=`date +"%M"`%5
 9         if [ $t -eq 0 ];
10             then
11                 echo "`date +"%Y-%m-%d %H:%M:%S"` restarting..." >> ${OPENSHIFT_DATA_DIR}web_error.log
12                 /usr/bin/gear stop 2>&1 /dev/null
13                 /usr/bin/gear start 2>&1 /dev/null
14                 echo "`date +"%Y-%m-%d %H:%M:%S"` restarted!!!" >> ${OPENSHIFT_DATA_DIR}web_error.log
15         fi
16 else
17     echo "`date +"%Y-%m-%d %H:%M:%S"` is ok" > ${OPENSHIFT_DATA_DIR}web_run.log
18 fi

  使用方法:保存此脚本在 app-root/repo/.openshift/cron/minutely 并赋予711执行权限。

  下载:OpenShift自动重启脚本优化版.zip

 

(文中引用原脚本来自 《Openshift 503自动重启应用》文章作者:wgwxf

 (转载请注明出处 http://www.cnblogs.com/felixgeory/p/Skill-OpenShift-AutoRestartOptimizationScript.html )

 

posted @ 2014-05-03 21:41  aprikyblue  阅读(1599)  评论(0编辑  收藏  举报