Linux设置开机自启keepalived+nginx服务

文章描述了一次Linux虚拟机在宿主机重启后,nginx和keepalived服务未能自动启动的问题。通过分析who命令的输出和检查服务状态,发现是由于开机自启脚本中的路径错误和keepalived的检查脚本问题导致。解决方案包括修复检查脚本并可能添加额外的nginx启动命令到开机脚本,以确保服务能在启动时正确运行。
摘要由CSDN通过智能技术生成

目录:

目录

背景:

分析过程:

解决方案: 

解决方案一: 

解决方案二:


背景:

在工作突发遇见了Linux虚拟机所在的宿主机重启了,虚拟机上部署nginx+keepalived服务,但是宿主机重启之后发现虚拟机重启了,但是在虚拟机上部署的nginx服务和keepalived服务没有起来,经过分析发现是因为设置的开机自启脚本存在问题导致的。

分析过程:

首选通过who -b查看最近的虚拟机重启的时间节点

[root@localhosts ~]# who -b
         system boot  2023-02-08 10:47
[root@localhosts ~]# who -r
         run-level 3  2023-02-08 10:48

注:

who -b  :---查看最后一次(上次)系统启动的时间

who -r :---查看最后一次(上次)系统启动的时间,及运行级别

 检查nginx服务和keepalived服务的运行状态

[root@localhosts ~]# ps -ef | grep nginx
root      25312  25095  0 11:32 pts/2    00:00:00 grep --color=auto nginx
[root@localhosts ~]# ps -ef | grep keepalived
root      25397  25095  0 11:32 pts/2    00:00:00 grep --color=auto keepalived

注: 发现nginx服务和keepalived服务都没有开机自启运行起来。

检查开机配置是否设置

[root@localhosts ~]# cat /etc/rc.d/rc.local 
#!/bin/bash
/usr/sbin/keepalived -D

注:发现keepalived的有设置开机,但是为什么keepalived服务也没有起来呢?

一般情况下keepalived运行的时候都会做一个检查脚本,脚本通过之后就运行起keepalived的,是否需要杀掉运行的keepalived服务。

检查keepalived服务的检查脚本:

[root@localhosts keepalived]# cat /etc/keepalived/check_nginx.sh 
#! /bin/bash
num=`netstat -an | grep "0.0.0.0:8022"|wc -l`
if [ $num -eq 0 ]; then
    su - mwop -c "/app/nginx/bin/nginx.sh start"
    sleep 3
    num=`netstat -an | grep "0.0.0.0:8022"|wc -l`
    if [ $num -eq 0 ]; then
        killall keepalived
    fi
fi 

注:发现keepalived的检查脚本存在问题,因为nginx服务的启动路径是

sh /app/server/nginx/bin/nginx.sh start

这样的话,虽然开机自启了keepalived服务,但是因为keepalived服务的检查脚本检验不通过导致keepalived服务停止运行,同时nginx服务没有单独的自启脚本,所以就导致了nginx服务和keepalived服务都是无运行的状态。

解决方案: 

因为已经分析到了原因,就是keepalived的检查脚本有问题,所以只要修复keepalived的检查脚本即可,但是如果还想为了更全面的考虑,可以在/etc/rc.d/rc.local脚本中再加入nginx的启动命令,这样就做到了万无一失的效果,下面的两种解决方案都会写一下的,以供各位参考。

解决方案一: 

 修复后的keepalived的检查脚本如下:

[root@localhosts keepalived]# cat /etc/keepalived/check_nginx.sh 
#! /bin/bash
num=`netstat -an | grep "0.0.0.0:8022"|wc -l`
if [ $num -eq 0 ]; then
    su - mwop -c "/app/server/nginx/bin/nginx.sh start"
    sleep 3
    num=`netstat -an | grep "0.0.0.0:8022"|wc -l`
    if [ $num -eq 0 ]; then
        killall keepalived
    fi
fi 

注:这样就可以了,可以重启一下虚拟机验证一下是否可以开机自启起来nginx服务和keepalived服务。

解决方案二:

修复keepalived的检查脚本,同时在/etc/rc.d/rc.local中加入nginx服务的启动命令

[root@localhosts keepalived]# cat /etc/keepalived/check_nginx.sh 
#! /bin/bash
num=`netstat -an | grep "0.0.0.0:8022"|wc -l`
if [ $num -eq 0 ]; then
    su - mwop -c "/app/server/nginx/bin/nginx.sh start"
    sleep 3
    num=`netstat -an | grep "0.0.0.0:8022"|wc -l`
    if [ $num -eq 0 ]; then
        killall keepalived
    fi
fi 

 

[root@localhosts ~]# cat /etc/rc.d/rc.local 
#!/bin/bash
/usr/sbin/keepalived -D
su - mwop -c "/app/server/nginx/bin/nginx.sh start"

注:这样做的意义是给nginx服务的启动增加了两层保障。

  • 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、付费专栏及课程。

余额充值