Často dochádza k spontánnym výpadkom služieb. Používateľ sa musí zaoberať ich manuálnym obnovením. Ak sa to stane na domácom počítači, nie je to problém ako taký. Ba čo viac - je to dobré, pretože je tu reálna možnosť zistiť stav služby, identifikovať chyby a odstrániť ich. Situácia je však úplne iná, ak ide o servery a služby VPS, ktoré musia neustále pracovať, aby zabezpečili prístup k webovej lokalite alebo aplikácii. V tomto článku sa pozrieme na to, ako nakonfigurovať automatický reštart linuxových služieb niekoľkými spôsobmi: pomocou monitorovacieho skriptu spúšťaného pravidelne prostredníctvom cronu a v systemd.
Predvolené nastavenie je také, že systemd v prípade pádu služby s ňou nič neurobí. Používateľ však môže vždy nakonfigurovať nastavenia tak, aby sa v prípade pádu alebo zastavenia služby služba automaticky reštartovala. Na tento účel sa používa smernica Restart, ktorú je potrebné pridať do sekcie Service (Služba). Ďalej sa pozrime na príklad konfigurácie automatického reštartu služby Apache:
$ sudo systemctl edit apache2
[Service]
Restart=on-failure
RestartSec=5s
Tu RestartSec určuje, ako dlho sa má čakať pred reštartovaním služby. Po dokončení uložte zmeny a spustite príkaz daemon-reload na opätovné načítanie konfigurácie:
$ sudo systemctl daemon-reload
Ďalej skontrolujte, či všetko funguje správne, pozrite sa na stav procesu, ukončite proces signálom kill:
$ sudo systemctl status apache2
$ kill -KILL 32091
Opäť skontrolujte stav, proces by mal byť spustený. Ak chcete nastaviť, aby sa inicializácia spúšťala zakaždým, použite špeciálnu direktívu Restart: always. Pri jej používaní by ste však mali byť veľmi opatrní, pretože vám neumožní ukončiť proces, aj keď je to nevyhnutné. Ak proces neustále padá, takže sa reštartuje, môžete do časti Service (Služba) pridať obmedzenie počtu reštartov:
$ sudo systemctl edit apache2
[Service]
StartLimitIntervalSec=500
StartLimitBurst=5
Restart=on-failure
RestartSec=5s
Tu StartLimitBurst
a StartLimitIntervalSec
udávajú, že je dôležité službu reštartovať päťkrát, a ak všetkých týchto päťkrát spadne, nechať ju na pokoji a nedotýkať sa jej. Druhá smernica obmedzuje reštarty služby na 500 sekúnd.
Toto je pravdepodobne najspoľahlivejšia a najbezpečnejšia metóda, ktorá funguje vo všetkých verziách Linuxu. V Apache je jednoduché vytvoriť automatický reštart pomocou skriptu. Na tento účel je potrebné zadať príkaz:
$ sudo vi /usr/local/bin/apache-monitor.sh
#!/bin/bash
ps -A | grep apache2 || systemctl start apache2
Uložiť súbor a uistite sa, že je spustiteľný:
chmod ugo+x /usr/local/bin/apache-monitor.sh
Nezabudnite pridať položku cron na pravidelné spúšťanie skriptu:
$ sudo crontab -e
*/5 * * * * /usr/local/bin/apache-monitor.sh
To je všetko. Áno, nastavenie automatického reštartu služby nie je také jednoduché, ako sa môže na prvý pohľad zdať. Je to však dôležitá schopnosť, preto by ste jej mali venovať pozornosť - rozhodne sa oplatí.