Я использую минимальную установку CentOS8 (8.1.1911) для запуска веб-сервера.
Некоторые услуги, /etc/systemd/system/multi-user.target.wants/
такие как
httpd.service
mariadb.service
named.service
squid.service
sshd.service
postfix.service
есть только After=network.target
и нет network-online.target
.
Это проблема, потому что при загрузке системы эти службы запускаются до готовности сети и не могут привязаться ни к одному из прослушиваемых портов. К счастью, пара таких служб sshd
продолжает повторять попытки привязаться, и как только сеть подключается, им это удается. Вы можете видеть /var/log/messages
неудачные попытки привязаться перед тем, как в конечном итоге это удается. Однако не все службы будут повторять попытки и после первой неудачи остаются мертвыми.
Я знаю, что одно из решений — добавить пользовательские параметры для Wants
/ After
для каждой службы, используя systemctl
, т. е. запустить
systemctl edit httpd
и добавить
[Unit]
Wants=network-online.target
After=network-online.target
Это работает, теперь службы будут ждать, пока сеть будет подключена, и успешно подключатся и запустятся при перезагрузке.
Теперь мой вопрос.
Я не хочу вручную редактировать каждую службу для добавления, network-online.target
так как это создает головную боль обслуживания и вероятность забыть этот шаг для новых служб, установленных в будущем. Я хочу способ установить политику или внести изменения в масштабах всей системы, чтобы любая служба с / Wants
for After
вела network.target
себя так, как будто она ждет network-online.target
.
- Возникнет ли проблема, так как
NetworkManager
также ждетnetwork.target
? Можно лиNetworkManager
изменить, чтобы ждать чего-то другого? - Какие еще службы могут выйти из строя, если все
network.target
будут ждатьnetwork-online.target
? - Есть ли еще креативные решения?