Рейтинг:3

Как остановить службу A, если служба B дает сбой или останавливается

флаг cn

Использование системы-d: У меня есть 2 службы (служба A и служба B). Службе B необходимо, чтобы служба A всегда работала.Если служба A когда-либо дает сбой или останавливается, служба B также должна быть немедленно остановлена ​​до тех пор, пока служба A не будет восстановлена ​​(в этот момент служба B должна запуститься автоматически). Есть ли директива, которую можно поместить в файлы модулей system.d, чтобы установить этот тип отношений?

Примеры использования:

#1 Nginx и mariaDB

Nginx всегда нужно, чтобы Мария была запущена. Я не хочу, чтобы клиенты сталкивались с веб-сервером, у которого нет серверной части БД. Если Мария выйдет из строя, я хочу, чтобы nginx немедленно отключился. Если сервис будет восстановлен обратно в maria, я хочу, чтобы nginx вернулся к жизни без необходимости вручную перезапускать процесс nginx. Поэтому, если есть спорадические и временные перебои с maria, nginx не обслуживает плохие запросы, а просто позволяет другим узлам в кластере обрабатывать веб-запрос.

#2 Openvpn и поисковый робот

Служба веб-краулера зависит от открытого VPN. Было бы плохо, если бы webcrawler работал без запуска vpn. Если клиентская служба openvpn остановлена, я хочу, чтобы веб-краулер также автоматически останавливался. Если openvpn восстановлен, я хочу, чтобы веб-краулер снова начал работать без необходимости запуска вручную.

флаг in
Что касается первого примера, будет ли 503 лучше, чем 500 с точки зрения клиента? 503 будет плохим сообщением от браузера о том, что веб-сайт не существует. Приложение может захватить 500, чтобы показать «неудачный кит» или что-то в этом роде, чтобы люди знали, что сайт существует, но у него есть небольшая проблема ...
bac0n avatar
флаг cn
Связано: [Разница между PartOf и BindsTo] (https://pychao.com/2021/02/24/difference-between-partof-and-bindsto-in-a-systemd-unit/)
флаг in
В дополнение к статье, опубликованной @bac0n, вы можете захотеть изменить файл(ы) `.service` для приложений, чтобы настроить `Restart=on-failure`. Это обеспечит автоматический перезапуск служб в случае серьезной ошибки.
bac0n avatar
флаг cn
на № 2 я предлагаю использовать интеграцию собственного скрипта openvpn.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.