目 录CONTENT

文章目录

Pve上使用keepalive脚本保活虚拟机

aprilz
2023-03-14 / 0 评论 / 0 点赞 / 1,536 阅读 / 447 字

前言

本人使用软路由部署了一些东西,内透外网访问,结果虚拟机有时候抽风出现死机之类的情况!!!
为了防止服务卡死之类情况出现,故用脚本cron定时检测虚拟机状态,如果虚拟机不活跃则进行重启

正文

1. 第一步在home下创建keepAlive.sh脚本


#!/bin/bash

function print() {
    echo "$(date +"%Y/%m/%d %H:%M:%S")" "$1"
}

function main() {
    if ping -c 1 "$3" >/dev/null; then
        print "$2在线"
    else
        print "发现$2又卡死了,重启"

        # 判断是虚拟机还是lxc容器
        if qm status "$1" >/dev/null 2>&1; then
            rm -f "/var/lock/qemu-server/lock-${1}.conf"
            qm stop "$1" >/dev/null 2>&1
            sleep 1s
            qm start "$1" >/dev/null 2>&1
        else
            rm -f "/var/lock/lxc/pve-config-${1}.lock"
            pct stop "$1" >/dev/null 2>&1
            pct start "$1" >/dev/null 2>&1
        fi

        print "重启$2成功"
    fi
}

main "$1" "$2" "$3"

示例:

bash keepalive.sh {pve虚拟机ID} {虚拟机名称 随便写只做记录用} {虚拟机使用的IP}

关闭虚拟机100 ,比如我这是centos

 bash keepalive.sh 100 centos7.6 192.168.1.20

发现可以重启centos虚拟机

第二步 添加crontab

crontab -e

并添加以下内容

  */10 * * * *  bash /home/keepalive.sh  100 centos7.6 192.168.1.20 >> /home/logs/keepalive/centos7.6.log  2>&1 &
  0 1 1 * *   echo > /home/logs/keepalive/centos7.6.log

每10分钟检测一次centos活跃性,可根据自己的需求进行选择cron表达式,
下面这个定时任务每月1号1点清空log日志

tips: 在线cron表达式查询

0

评论区