目的:当服务挂掉后自动重启服务
方案一:crontab 定时任务检测与重启。
1、创建服务运行检测与重启脚本: appRestart.sh
#!/bin/sh # 进行jar所在目录 cd /opt/app/ source /etc/profile # 查询程序是否存活 project=`ps -ef|grep appServer-1.0.0|grep -v grep|wc -l` date=`date` server_name="appServer-1.0.0" # $? -ne 0 不存在 # $? -eq 0存在 if [ $project -eq 0 ] then nohup java -jar appServer-1.0.0.jar >> nohup.log & #重启服务 echo `date +%Y-%m-%d` `date +%H:%M:%S` $server_name >> ./restart.log #记录重启日志 fi
2、配置crontab 定时任务
crontab -e 编辑定时任务配置
新增配置,一分钟执行一次 :
*/1 * * * * /home/app/schdule/appRestart.sh >> /home/app/schdule/appRestart.log
crontab -l 查看定时任务配置。
方案二:利用Keepalived的vrrp_script进行监测与重启。
该方案适用于 Keepalived+Nginx 集群做VIP,适用于对高可用要求较高的系统。当只有单节点时,可充当服务健康监控与重启功能。
1、安装Keepalived服务(略)。
单节点配置时注意设置 state 为 master
2、配置vrrp_script脚本
vrrp_script checkAndRestart { script "/home/appRestart.sh" #指向重启脚本 interval 3 #每3秒执行一次脚本 weight -20 } vrrp_instance test { ... track_script { checkAndRestart } ... }
--end