Maksājuma metodes Abuse

Kā veikt automātisku Linux pakalpojuma restartēšanu

26.02.2021, 20:42

Bieži vien pakalpojums tiek sniegts spontāni. Lietotājam ir jānodarbojas ar to manuālu atjaunošanu. Ja tas notiek mājas datorā, problēmas nav. Vēl vairāk - tas ir labi, jo ir reāla iespēja noteikt pakalpojuma stāvokli, identificēt kļūdas un tās novērst. Taču situācija ir pavisam citāda, ja runa ir par serveriem un VPS pakalpojumiem, kuriem jāstrādā nepārtraukti, lai nodrošinātu piekļuvi tīmekļa vietnei vai lietojumprogrammai. Šajā rakstā aplūkosim, kā konfigurēt Linux pakalpojumu automātisku restartēšanu vairākos veidos: ar monitoringa skriptu, kas tiek periodiski palaists, izmantojot cron un systemd.

Automātiska restartēšana sistēmā systemd

Noklusējuma iestatījums ir tāds, ka systemd neko nedarīs ar pakalpojumu, ja tas sabojājas. Taču lietotājs vienmēr var konfigurēt iestatījumus tā, lai pakalpojuma avārijas vai apstāšanās gadījumā pakalpojums tiktu automātiski restartēts. Šim nolūkam tiek izmantota direktīva Restart, kas jāpievieno sadaļai Service (Pakalpojums). Tālāk aplūkosim piemēru, kā konfigurēt Apache pakalpojuma automātisku restartēšanu:

$ sudo systemctl edit apache2

[Service]

Restart=on-failure

RestartSec=5s

настройка автоматического перезапуска сервиса Apache:

Šeit RestartSec norāda, cik ilgi jāgaida pirms pakalpojuma restartēšanas. Kad esat pabeidzis, saglabājiet izmaiņas un palaidiet komandu daemon-reload, lai pārlasītu konfigurāciju:

$ sudo systemctl daemon-reload

Tālāk, lai pārbaudītu, vai viss darbojas pareizi, apskatiet procesa stāvokli, pārtrauciet procesu ar signālu kill:

 $ sudo systemctl status apache2

$ kill -KILL 32091

Процесс сигналом kill

Vēlreiz pārbaudiet stāvokli, procesam vajadzētu darboties. Lai iestatītu, ka inicializācija jāveic katru reizi, izmantojiet īpašu direktīvu Restart: always. Taču, to lietojot, jābūt ļoti uzmanīgiem, jo tā neļaus pārtraukt procesu, pat ja tas ir nepieciešams. Ja process nepārtraukti sabrūk, tāpēc tas tiek palaists no jauna, sadaļā Service (Pakalpojums) varat pievienot restartēšanas skaita ierobežojumu:

$ sudo systemctl edit apache2

[Service]

StartLimitIntervalSec=500

StartLimitBurst=5

Restart=on-failure

RestartSec=5s

Лимит на количество перезапусков в секцию Service

Šeit StartLimitBurst un StartLimitIntervalSec norāda, cik svarīgi ir pakalpojumu restartēt piecas reizes, un, ja tas sabrūk visas šīs piecas reizes, atstāt to mierā un nepieskarties tam. Otrā direktīva ierobežo pakalpojuma restartēšanu līdz 500 sekundēm.

Automātiska restartēšana ar skriptu

Šī, iespējams, ir visdrošākā un drošākā metode, kas darbojas visās Linux versijās. Apache sistēmā ir viegli izveidot automātisku restartēšanu, izmantojot skriptu. Lai to izdarītu, ir jāievada komanda:

$  sudo vi /usr/local/bin/apache-monitor.sh

#!/bin/bash

ps -A | grep apache2 || systemctl start apache2

Saglabājiet failu un pārliecinieties, ka tas ir izpildāms:

chmod ugo+x /usr/local/bin/apache-monitor.sh

Neaizmirstiet pievienot cron ierakstu, lai skriptu periodiski palaistu:

$ sudo crontab -e

*/5 * * * * /usr/local/bin/apache-monitor.sh

Tas ir viss. Jā, pakalpojuma automātiskas restartēšanas iestatīšana nav tik vienkārša, kā tas var šķist pirmajā brīdī. Taču tā ir svarīga spēja, tāpēc tai vajadzētu pievērst uzmanību - tas noteikti ir tā vērts.