keepalived+java服务做自启脚本

背景:

生产环境下有部署keepalived+java程序服务做web端服务,同时keepalived做主备可高用架构的。因为java服务程序是在普通用户下运行的,keepalived服务是在root用户下运行的,所以需要两三个脚本来支持这个服务的。

注:这里keepalived启动的时候有一个校验的脚本,就是检查前置的java服务程序是运行的状态下,可以启动keepalived服务,然后会启动之后立马就进行kill掉的。 

脚本需求:

这里脚本需求主要分为三个的:

第一个是keepalived服务启动的检查脚本。这里一般都是手工启动的时候的检查脚本的。要求是java服务程序是运行的状态下,可以允许启动keepalived服务,然后就立即kill掉。

 keepalived启动检查脚本:

#!/bin/bash
num=`ps -ef | grep "/app/apache-tomcat-8.5.83" | grep -v grep | wc -l`
if [ $num -lt 1 ]
then
    echo "The java process is not running,need restart java"
    sleep 2
    number=`ps -ef | grep "/app/apache-tomcat-8.5.83" | grep -v grep | wc -l`
    if [[ "$number" -le "0" ]]
    then
		echo "The java process is not running,need stop keepalived"
		killall keepalived
    fi
fi

脚本思路如下:

1. 首先检查java服务程序是否运行的状态并赋值给变量,这里是使用了ps等命令;

2. 对变量的值进行判断,如果java服务进程存在则退出检查,如果java服务程序不存在则等待2S,让其触发java服务自启功能,这个后面会讲解的;

3. 2s等待时间过后,再次判断java服务程序是否是运行的状态,不是则杀掉keepalived服务,是则退出。

 

java自动启动脚本:

#!/bin/bash
#author:xionghj001
log_output () {
    if [ ! -f /home/mwop/bin/check-java.log ]
    then
cd /home/mwop/bin/
touch check-java.log
    fi
    echo -e "\e[$1m[$(date +"%F %T")] $2 \e[0m" 
}
num=`ps -ef | grep "/app/apache-tomcat-8.5.83" | grep -v grep | wc -l`
if [ "$num" -gt "0" ]
then
    log_output 32 "INFO The java process is running" | tee -a /home/mwop/bin/check-java.log
else
    log_output 31 "ERROR The java process is not running,need start java" | tee -a /home/mwop/bin/check-java.log
    cd /app/apache-tomcat-8.5.83/bin/
    sh startup.sh
    sleep 0.5
    number=`ps -ef | grep "/app/apache-tomcat-8.5.83" | grep -v grep | wc -l`
    if [ "$number" -gt "0" ]
    then
		log_output 32 "INFO The java process has been restarted and is running" | tee -a /home/mwop/bin/check-java.log
    else
		log_output 31 "ERROR The java process has failed to restart and is not running" | tee -a /home/mwop/bin/check-java.log
    fi
fi
crontab -e -u mwop
*/1 * * * * /bin/bash /home/mwop/bin/check_java.sh

脚本思路如下:

1. 首先创建脚本执行记录的日志函数,用于记录每次脚本执行的过程和结果;

2. 先判断java服务程序是否是运行的状态,如果是则输入java进程正在运行的记录并记录到指定的日志文件里;

3. 如果判断java服务程序不是运行的状态,则自动重启一下java服务程序,并再次进行判断,如果存在则输出java重启完成,否则就输出java服务程序重启失败,需要人工介入;

4. 并在设置cron定时任务,设置为每一分钟进行一次判断。

keepalived自动启动脚本:

#!/bin/bash
#time:2023-01-6
#author:xionghj001
#check keepalived is active

log_output () {
    if [ ! -f /root/bin/check-keepalived.log ]
    then
        cd /root/bin/
        touch check-keepalived.log
    fi
    echo -e "\e[$1m[$(date +"%F %T")] $2 \e[0m" 
}

num=`ps -ef | grep "/app/apache-tomcat-8.5.83" | grep -v grep | wc -l`
if [ "$num" -gt "0" ]
then
    a=`ps -ef | grep "/usr/sbin/keepalived -D" | grep -v grep | wc -l`
    if [[ "a" -gt "0" ]]
    then
		log_output 32 "INFO Keepalived and java process is running" | tee -a /root/bin/check-keepalived.log
    else
		log_output 31 "ERROR java process is running but Keepalived  process is not running,need restart keepalived process" | tee -a /root/bin/check-keepalived.log
		systemctl start keepalived
		sleep 0.5
		b=`ps -ef | grep "/usr/sbin/keepalived -D" | grep -v grep | wc -l`
		if [[ "b" -gt "1" ]]
		then
			log_output 32 "INFO The keepalived process has been restarted and is running,and java process is running " | tee -a /root/bin/check-keepalived.log
		else
			log_output 31 "ERROR The java process has failed to restart and is not running but java process is running,need Manual processing is required " | tee -a /root/bin/check-keepalived.log
		fi
    fi
else
    log_output 31 "ERROR The java process is not running,need start java" | tee -a /root/bin/check-keepalived.log
fi
crontab -e -u root
*/2 * * * * /bin/bash /root/bin/check_keepalived.sh

脚本思路如下:

1. 首先创建脚本执行记录的日志函数,用于记录每次脚本执行的过程和结果;

2. 先判断java服务程序是否是运行的状态,如果是,将继续判断keepalived服务是否运行状态,如果keepalived服务也是运行状态,则输出java服务和keepalived都是运行的状态;

3. 如果判断keepalived服务不是运行的状态,则重启一下keepalived服务,然后再次检查keepalived服务是否是运行的状态,是则输出keepalived服务重启完成,java服务也是运行的状态,否则则输出keepalived服务重启失败,需要人工介入进行操作;

4. 并在设置cron定时任务,设置为每两分钟进行一次判断。

总结: 

如上的脚本主要是适用于如果服务再晚上异常宕机之后,服务器恢复之后,java服务和keepalived可以自动的重启好,这样就提高了系统的可用性,避免因为服务器宕机导致晚上无法进行重启服务的操作的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiang0615csdn

你对鼓励是我最大的动力来源

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值