linux单进程服务保活supervise

本文介绍了如何在资源有限的情况下,利用daemontools-0.76来实现Linux环境下单进程服务的高可用保活机制。通过安装daemontools,配置监控服务,并使用`supervise`命令监控Tomcat进程,确保服务在异常时能够自动重启。

1 概述


由于资源的有限或者投资等原因,服务器资源不够用,不能确保单个服务器跑单个服务,更别说做一些进程的主备高可用

在这种情况下也同样希望进程高可用,本次采用demontools提供的daemontools-0.76来实现单点单进程的保活机制


2 安装


安装路径:/home/app

安装patch包

[root@localhost daemontools-0.76]#  yum -y install patch

[root@localhost app]# wget http://www.qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch

[root@localhost app]# tar -zxvf daemontools-0.76.tar.gz

[root@localhost app]# cd admin/daemontools-0.76/src/

[root@localhost src]# patch  < /home/app/daemontools-0.76.errno.patch

patching file error.h

[root@localhost src]# cd ..

[root@localhost daemontools-0.76]# package/install

启动

[root@localhost daemontools-0.76]# /command/svscanboot &

[root@localhost daemontools-0.76]# ps -ef | grep svscanboot


存在对应的进程就说明启动成功

但是这种启动方式存在一定问题,shell终端退出之后进程也就退出,不适用生产环境


3 添加监控的服务


监听命令格式:nohup supervise /service/${path}/ &

这就话意思就是在后台开启一个supervise进程循环执行/service/${path}/ 下的run脚本


案例:监听tomcat进程

[root@localhost daemontools]# cd /service/

[root@localhost service]# mkdir tomcat-webems/

[root@localhost tomcat-webems]# vi run

#!/bin/bash

HTTPCODE=`curl -I -m 30 -o /dev/null -s -w %{http_code}  http://localhost:8080`

if [ "$HTTPCODE" = "200" ]; then

  echo "tomcat has already started"

else

  PID=`jps | grep Bootstrap | awk '{print $1}'`

  if [ -n $PID ]; then

       while true

       do
           kill -9 $PID &>/dev/null 2>&1

           [ $? -ne 0 ] && break

           sleep 1

       done
  fi

  exec /usr/local/tomcat-webems/bin/startup.sh

  sleep 10
fi

上个脚本的意思就是先curl访问tomcat,若状态吗为200说明tomcat正常运行,什么都不做

若不是200,先将不正常的tomcat进程杀掉,之后在重启tomcat

[root@localhost tomcat-webems]# chmod -R 755 run

[root@localhost daemontools-0.76]# jps

这个时候没有启动tomcat

[root@localhost tomcat-webems]# nohup supervise /service/tomcat-webems/ &
[root@localhost daemontools-0.76]# jps


可以看到此时已经启动起来tomcat

[root@localhost tomcat-webems]# kill -9 91880

杀死之后过一段时间就启动成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值