Проверьте состояние сервера 1, если это не доступно, затем запускает скрипты?

У меня есть 2 сервера: у 1 ведущего устройства с 1 ведомым устройством и есть сценарий, который выполняет каждую 1 минуту на ведомом устройстве для проверения наличия ведущего устройства.

Это должно всегда работать:

* * * * * /data/BackupServer/StatusCheck.bash  >> /data/BackupServer/Output.log 2>&1

Фон: Ведущее устройство ответственно для запущения скриптов в фоновом режиме с помощью crontab.

То, что я хочу:

  1. Если ведущее устройство не доступно затем, ведомое устройство должно добавить те обязанности перед своим crontab для принятия ведущего устройства.
  2. Если ведущее устройство доступно снова, ведомое устройство должно rm эти crontab конфигурации и передают его обязанности освоить снова, если это имеет кого-либо.

То, что я имею:

#!/bin/bash
check=$(curl -s -w "%{http_code}\n" -L "master" -o /dev/null)
if [[ $check == 200 || $check == 403 ]]
then
    # Service is online
    echo "Service is online, slave is handing over the tasks to master if any"
    exit 0
else
    # Service is offline or not working correctly
    echo "Service is offline or not working correctly, slave is taking over master now"
    exit 1
fi

То, в чем я нуждаюсь:

Когда сервер не доступен, ведомое устройство должно запустить вручную некоторые сценарии, которые работают в crontab ведущего устройства. Но, здесь не включаю их к crontab, вместо этого прося, чтобы сценарий работал, только если сервер не доступен.

Кто-то может предложить меня путь, как я могу сделать этот процесс, автоматизированный в ударе. Я не прошу, чтобы кто-то написал полный код для меня, поскольку не знакомо с понятиями, нуждаются в некоторой помощи.

НАПРИМЕР, я могу сделать что-то как ниже?

       #!/bin/bash
check=$(curl -s -w "%{http_code}\n" -L "master" -o /dev/null)
if [[ $check == 200 || $check == 403 ]]
then
    # Service is online
    echo "Service is online, slave is handing over the tasks to master if any"
    exit 0
else
    # Service is offline or not working correctly
    echo "Service is offline or not working correctly, slave is taking over master now"
    /manoj/scripts/location.plx > /manoj/logs/location/sync.log 2>&1
    /manoj/scripts/report.py > /manoj/logs/dashboard/dashboard.log 2>&1
    /etc/profile; /manoj/scripts/Space.py > /manoj/logs/dashboard/Consumption.log 2>&1
    exit 1
fi
0
задан 28 November 2019 в 14:09

2 ответа

Не делать crontab управление.

Запустите скрипты и в ведущем устройстве и в ведомом устройстве. На ведомом устройстве запустите каждый сценарий с:

check=$(curl -s -w "%{http_code}\n" -L "master" -o /dev/null)
if [[ $check == 200 || $check == 403 ]]
then
#   master not available; do stuff
else
#   master is available, do nothing
    exit 0
fi

Если ведущее устройство будет доступно, то сценарии на ведомом устройстве выйдут после теста.

1
ответ дан 21 December 2019 в 23:47

Я предпочел бы иметь тот же сценарий, работающий на обеих машинах для сокращения обслуживания. Принятие /etc/hosts файл на ведущем устройстве содержал имя "ведущее устройство", обе машины могли иметь тот же сценарий как это:

#!/bin/bash

function DoJobs () {
    /manoj/scripts/location.plx > /manoj/logs/location/sync.log 2>&1
    /manoj/scripts/report.py > /manoj/logs/dashboard/dashboard.log 2>&1
    /etc/profile; /manoj/scripts/Space.py > /manoj/logs/dashboard/Consumption.log 2>&1
}

# If master server run jobs and exit
if grep -q "Master" /etc/hosts ; then
    DoJobs
    exit 0
fi

# Not the master server so do jobs if it is down
check=$(curl -s -w "%{http_code}\n" -L "master" -o /dev/null)
if [[ $check == 200 || $check == 403 ]]
then
    # Service is online
    echo "Service is online, slave is handing over the tasks to master if any"
    exit 0
else
    # Service is offline or not working correctly
    echo "Service is offline or not working correctly, slave is taking over master now"
   DoJobs
   exit 1
fi

Теперь существует только единственный сценарий для поддержания для обоих серверов. Когда новое задание является установкой, только один файл должен быть отредактирован.

0
ответ дан 21 December 2019 в 23:47

Другие вопросы по тегам:

Похожие вопросы: