Как создать сценарии запуска / выключения для 2 или более серверов, которые должны работать в определенном порядке? - PullRequest
0 голосов
/ 02 апреля 2019

Я установил приложение, работающее на 2 серверах:

  • Сервер 1 содержит основной модуль администрирования
  • Сервер 2 содержит дополнительные модули, которые необходимо запустить после запуска и запуска модуля администратора

и создали системные файлы для автоматического запуска после перезагрузки.

Итак, сервер 1 имеет что-то вроде:

admin.service

[Unit]
Description=Start Admin

[Service]
Type=simple
ExecStart=/home/usr/startup/startAdmin.sh
ExecStop=/home/usr/startup/stopAdmin.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

и сервер 2 имеет что-то вроде:

other.service

[Unit]
Description=Start Others

[Service]
Type=simple
ExecStart=/home/usr/startup/startOther.sh
ExecStop=/home/usr/startup/stopOther.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Что можно реализовать, чтобы обеспечить запуск other.service (на сервере 2), только если запущен admin.service?

1 Ответ

1 голос
/ 02 апреля 2019

В other.service вы можете добавить ExecStartPre (man systemd.service). Синтаксис такой же, как у ExecStart.

или other.service может зависеть от службы проверки check.service

В обоих случаях команда будет похожа на:

while ( ! nc -w2 -z <ADMINIP> <ADMINPORT> >/dev/null 2>&1 ) ; do sleep 2 ; done
...