У меня есть 2 сервера: у 1 ведущего устройства с 1 ведомым устройством и есть сценарий, который выполняет каждую 1 минуту на ведомом устройстве для проверения наличия ведущего устройства.
Это должно всегда работать:
* * * * * /data/BackupServer/StatusCheck.bash >> /data/BackupServer/Output.log 2>&1
Фон: Ведущее устройство ответственно для запущения скриптов в фоновом режиме с помощью crontab.
То, что я хочу:
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
Не делать 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
Если ведущее устройство будет доступно, то сценарии на ведомом устройстве выйдут после теста.
Я предпочел бы иметь тот же сценарий, работающий на обеих машинах для сокращения обслуживания. Принятие /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
Теперь существует только единственный сценарий для поддержания для обоих серверов. Когда новое задание является установкой, только один файл должен быть отредактирован.