Systemd: сервис Автоматического запуска после mongodb

ubuntu16.04.1, systemd

Приложение зависит от mongodb. Приложение и mongodb оба запускаются на начальной загрузке как сервисы. app.service следующая строка containts:

After=network.target mongod.service

К сожалению, сбои приложения (с соединением с ошибкой базы данных), я предполагаю, потому что mongodb требуется некоторое время, чтобы запуститься и быть готов к соединениям (если я запускаю приложение позже, все в порядке).

Это похоже Type=notify[Service] раздел mongod.service) решит проблему, если mongodb отправит соответствующее уведомление systemd. Но я не нашел документации об этом.

Вопрос, как автоматически запустить приложение, после того, как mongodb будет готов к входящим соединениям.

1
задан 17 August 2016 в 03:33

2 ответа

Я предполагаю, что ответ на этот вопрос уже в serverfault. Короче говоря: возможно, необходимо использовать Requires вместо After. Requires средства, что Ваш сервис требует, чтобы другой работал правильно, не, который является, должны "просто быть запущены после".

https://serverfault.com/questions/812584/in-systemd-whats-the-difference-between-after-and-requires

0
ответ дан 7 December 2019 в 13:42

Для дальнейшего использования я нашел это решение работать: https://gist.github.com/jwilm/5842956#gistcomment-2706797

Тот путь mongodb блоки до базы данных достижим, прежде чем systemd запустит следующий сервис.

Если у Вас есть сервисы, которые зависят от mongodb, конфигурация является немного более трудной, потому что значение по умолчанию mongodb сервисные возвраты перед базой данных онлайн. Это может заставить быстрые приложения пытаться не удаться соединиться с базой данных. Для предотвращения этого добавьте следующее к /etc/mongod.conf:

processManagement:
    fork: true

Затем, создайте /etc/systemd/system/mongod.service.d/mongod.conf (который расширяет существующее /lib/systemd/system/mongod.service) со следующим содержанием:

[Service]
Type=oneshot
RemainAfterExit=yes

Это вызывает sudo systemctl start mongod чтобы запустить сервер в разветвленном процессе и возвратиться только ПОСЛЕ, база данных возросла и готова к соединениям. Таким образом, зависимые сервисы только вызываются после того, как дб жив.

2
ответ дан 7 December 2019 в 13:42

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

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