Maksājuma metodes Abuse

Kā iestatīt SuperVisor

18.04.2022, 23:02

Procesoru pārvaldībai Linux ir tādas inicializācijas sistēmas kā systemd. Ja jums ir nepieciešams vienkāršāks risinājums - programma, kas var pārvaldīt jūsu lietojumprogrammas procesus vai nu sistēmā, vai Docker konteinerā. Šāda programma ir - tā ir supervisor. Tas ir funkcionāli vienkāršs atvērtā koda procesu pārvaldnieks, kas rakstīts Python valodā un ko var izmantot, lai palaistu tik daudz procesu kopiju, cik nepieciešams, un uzraudzītu to stāvokli. Tālāk mēs parādīsim, kā instalēt un konfigurēt Supervisor, kā piemēru izmantojot Ubuntu 20.04.

Supervisor instalēšana

Visvienkāršākais veids, kā iegūt programmu, ir instalēt to no oficiālajām repozitorijām. Lai to izdarītu, ir jāpalaiž komanda:

$ sudo apt install supervisor

Kā iestatīt SuperVisor

Ja vēlaties, lai programma darbotos visu laiku, jums tā jāpievieno savam automātiskajam palīgrīkotājam un jāpalaiž. Izpildīt:

$ sudo systemctl enable supervisor --now

Kā iestatīt SuperVisor

Tālāk varat apskatīt statusu, izmantojot komandu:

$ sudo systemctl status supervisor

Kā iestatīt SuperVisor

Konfigurēšanas process: Konfigurēšanas process

Konfigurācijas fails atrodas adresē /etc/supervisor/supervisord.conf. Šeit atrodas arī pamatiestatījumi. Lai konfigurētu notiekošos procesus, labāk ir izmantot direktoriju /etc/supervisor/conf.d/. Galveno konfigurācijas failu var atstāt pēc noklusējuma. Aplūkosim, kā izveidot programmu konfigurācijas failus. Viena procesa sadaļas sintakse izskatās šādi:

mainīgā lieluma nosaukums vērtība

Katram procesam ir jāievada šādi mainīgie, lai tas varētu automātiski sākties un atjaunoties pēc avārijas:

  • direktorija - darba direktorija;
  • komanda - procesa palaišanas komanda;
  • user -lietotājs, kura vārdā tiks palaists process;
  • autostart - vai process ir automātiski jāsāk;
  • autorestart- vai process irjārestartē;

Tomēr ir pieejami vēl daudzi citi iestatījumi, šeit ir daži no tiem, kas tiks aplūkoti šajā rakstā:

  • prioritāte - startējamā procesa prioritāte;
  • vide - vides mainīgie, kas tiks nodoti procesam;
  • stdout_logfile - kur novirzīt procesa stdout izvades failu;
  • stderr_logfile - kur novirzīt procesa stderr izejas datus;
  • process_name- procesa nosaukums, ar iespēju aizstāt kopijas numuru;
  • numprocs - startējamā procesa kopiju skaits;
  • startretries - programmas palaišanas mēģinājumu skaits;
  • redirect_stderr - novirzīt procesa kļūdu izvadi uz pārziņa izvadi;
  • redirect_stdout - novirza procesa izvades izvadi uz pārziņa izvadi.

Labākai izpratnei un piemēram izpildīsim PHP skriptu, kas vienkārši karājas fonā:

$ sudo vi /home/sergiy/program/process.php

<?php
echo "Started...";
while(true){
  sleep(5);
}

Procesam var izveidot atsevišķu pārrauga konfigurācijas failu. Konfigurāciju var ievietot tieši galvenā konfigurācijas faila beigās, bet labāk to nedarīt. Katrai programmai labāk ir izveidot atsevišķu konfigurācijas failu /etc/supervisor/conf.d/ ar nosaukumu *.conf. Piemēram, šai programmai šis fails izskatīsies šādi:

$ sudo vi /etc/supervisor/conf.d/process.conf

[program:process]


directory=/home/sergiy/program/


command=/usr/bin/php process.php


user=sergiy


autostart=true


autorestart=true

Pēc tam supervisor ir jārestartē, to var izdarīt ar systemctl:

$ sudo systemctl restart supervisor

vai ar supervisorctl utilītu:

$ sudo supervisorctl reload

Kā iestatīt SuperVisor

Konfigurēto procesu statusu var arī apskatīt, izmantojot komandu:

Kā iestatīt SuperVisor

Ja process ir statusā RUNNING, tas nozīmē, ka viss ir kārtībā un tas ir veiksmīgi iedarbināts. Taču šajā gadījumā process darbojas vienā instancē, un diezgan bieži ir nepieciešams palaist vairākas viena procesa kopijas. Šim nolūkam varam izmantot parametrus process_name un numprocs. Pirmais parametrs ļauj mainīt procesa nosaukumu, lai tajā būtu ietverts kopijas numurs, bet otrais parametrs ļauj norādīt, cik kopijas ir jāpalaiž.

Mainīgais process_name parasti satur python virknes formatēšanas modeli, kas satur programmas nosaukumu un procesa numuru: %(program_name)s_%(process_num)02d. Šeit mainīgā nosaukums ir iekavās, aiz kura norādīts tā tips. Piemēram, lai palaistu vienu un to pašu programmu četros pavedienos, konfigurācijas failā jāiestata šāds veids:

$ sudo vi /etc/supervisor/conf.d/process.conf

[program:process]


directory=/home/sergiy/program/


command=/usr/bin/php process.php


user=sergiy


autostart=true


autorestart=true


process_name=%(program_name)s_%(process_num)02d


numprocs=4

Tagad mums atkal jāpārlādē supervisorctl, un darbosies 4 procesi:

$ sudo supervisorctl status

Kā iestatīt SuperVisor

Vienlaikus visus programmas izvadītos datus var saglabāt žurnāla failā. Šim nolūkam tiek izmantoti parametri stdout_logfile un stderr_logfile. Piemēram, programmas izpildes žurnāla failu var izvadīt tieši mapē, kurā atrodas programma.

$ sudo vi /etc/supervisor/conf.d/process.conf

[program:process]


directory=/home/sergiy/program/


command=/usr/bin/php process.php


user=sergiy


autostart=true


autorestart=true


process_name=%(program_name)s_%(process_num)02d


numprocs=4


stdout_logfile=/home/sergiy/program/process.log


stderr_logfile=/home/sergiy/program/process.log.error

Pēc pakalpojuma restartēšanas žurnāli parādīsies mapē ar programmu:

Kā iestatīt SuperVisor

Līdzīgi, ja vēlaties novirzīt procesu izvades datus uz standarta pārrauga izvades failiem, izmantojiet parametrus redirect_stderr un redirect_stdout. Ja jūsu programmai ir nepieciešami kādi vides mainīgie, tos varat ievadīt, izmantojot vides parametru. Mainīgie jāraksta ar komatiem. Piemēram:

$ environment=DISPLAY=":1",HOME="/root"

Pēc katrām konfigurācijas izmaiņām jāatceras restartēt supervisor, lai piemērotu izmaiņas. Procesu kontrolei var izmantot supervisorctl utilītu. Kā jau esat sapratuši, lai redzētu procesu sarakstu, ir jāizpilda:

$ sudo supervisorctl status

Tad, zinot procesa nosaukumu, varat to restartēt, piemēram, process:process_00:

$ sudo supervisorctl restart process:process_00

Kā iestatīt SuperVisor

apturēt:

$ sudo supervisorctl stop process:process_00

vai sākt:

$ sudo supervisorctl start process:process_00

Varat arī izveidot savienojumu ar procesu un, izmantojot komandu fg, apskatīt, ko tas izvada uz stdout/stderr:

$ sudo supervisorctl fg process:process_00

Mēs aplūkojām, kā tiek konfigurēts uzraugs un kā izmantot procesu pārvaldības programmatūru.