Virtlab:Komponenty/CRON

Z VirtlabWiki

< Virtlab:Komponenty(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Verze z 04:35, 6. 11. 2007
Gry72 (Diskuse | příspěvky)

← Předchozí porovnání
Aktuální verze
Gry72 (Diskuse | příspěvky)
(Detailní informace pro vývojáře)
Řádka 1: Řádka 1:
-[[Virtlab:Aktivační server|Aktivační server]] (AS) byl nahrazen činností daemona [http://www.linuxmanpages.com/man8/atd.8.php atd], který je standardní součástí BSD/Linuxu. Tento daemon zajišťuje jednorázové spuštění úloh v zadanou dobu. Protože s názvem '''atd''' se v češtině špatně pracuje (vypadá to jako atakdále, nedá se to dobře skloňovat), bude dále ''z čistě jazykových důvodů'' referován jako '''cron''' (účelem podobný démon i když s jinou filosofií).+Komponenta CRON realizuje v každé lokalitě aktivaci úloh vyžádaných uživateli dané lokality. Je realizována pomocí démona atd. Rezervační server každé lokality prostřednictvím atd naplánuje spuštění aktivačního a deaktivačního skriptu na začátku, resp. konci příslušného timeslotu.
-Jediný, kdo s AS komunikoval, byl [[Virtlab:Rezervační server|Rezervační server]] (RS), proto po odstranění AS se vše odehrává v RS.+
-Jsou prováděny pouze následující dvě operace:+Na začátku timeslotu se dějí tyto akce:
 +* Vygenerování konfigurace pro spojovací prvky Distribuovaného virtuálního spojovacího pole pro spojení distribuované virtuální topologie
 +* Upload těchto konfigurací prostřednictvím Konfiguračních serverů příslušných lokalit
 +* Smazání konfigurací v úloze použitých laboratorních prvků (komunikace s Mazacími servery dotčených lokalit)
-=== Zařazení rezervace do cron fronty ===+Na konci timeslotu se dějí tyto akce:
-Soubor činností, které mají být vykonány v souvislosti s rezervací, je zapsán v externím programu (typicky [[Activator-script]]). Do fronty jsou zařazeny voláním funkce '''enqueue_cron''', která je v současné době definována i použita ve zdrojovém textu '''virtlab/DISTR/src/rsv-server/src/commit_table.c'''. Její deklarace:+* Vygenerování konfigurace pro spojovací prvky Distribuovaného virtuálního spojovacího pole pro rozpojení distribuované virtuální topologie
 +* Upload těchto konfigurací prostřednictvím Konfiguračních serverů příslušných lokalit
- enqueue_cron(char *xid, char *resid, struct datetime from, char *format, ...)+== Detailní informace pro vývojáře ==
-;xid : označení transakce, je předáváno pouze pro potřeby ladicích výpisů+* [[Virtlab:CRON]]
-;resid : řetězec označující rezervaci. Může být následně využit při odstranění rezervace z cron fronty. Doporučuje se do něj vkládat resid.+
-;from : čas, kdy má být úloha spuštěna. Jde o strukturu popsanou v "datetime.h" sestávající s <tt>int</tt> hodnot year, month, day, hour, min+
-;format : příkaz, který má být spuštěn formátovaný pro vsprintf.+
-;... : argumenty příkazu+
- +
-Funkce je volána uvnitř '''drop_first_commit_into_db''', což je místo, kde se úspěšná rezervace zaznamenává do databáze.+
- +
-Příklad 1:+
- from.year=2007; from.month=11; from.day=4; from.hour=12; from.min=3;+
- enqueue_cron("ostrava.128.1194212742", "46@ostrava", from, "/opt/virtlab/activate.sh %s", tptr->resid.id);+
- enqueue_cron("ostrava.128.1194212742", "46@ostrava", from, "/opt/virtlab/deactivate.sh %s", tptr->resid.id);+
- +
-=== Odstranění rezervace z cron fronty ===+
-Pokud byla rezervace zrušena, projeví se to ve funkci '''remove_reservation_from_db''', která je ve zdrojovém textu '''virtlab/DISTR/src/rsv-server/src/dbutils.c''' a ve které se proto volá nová funkce '''unqueue_cron(char *xid, char *cronresid)'''.+
-;xid : označení transakce, je předáváno pouze pro potřeby ladicích výpisů+
-;cronresid : řetězec označující rezervaci, viz parametr '''resid''' funkce enqueue_cron.+
- +
-Příklad 2:+
- unqueue_cron("ostrava.128.1194212749", "46@ostrava");+
- +
-* Zdůrazněme, že funkce odstraní ''všechny'' úlohy, které byly cronu zadány s použitím cronresid (jako například v Příkladu 1).+
-* Odstranění úlohy je náročná operace, která by neměla probíhat příliš často, neboť je interně realizována vyhledáváním cronresid grepováním mnoha malých souborů.+
- +
-=== Troubleshooting ===+
-Kromě faktu, že obě funkce *queue_cron jsou velmi VLLOG výřečné, lze kontrolovat stav fronty pomocí příkazů '''at'''.+
- +
-==== Vyhledání všech úkolů se známým resid ====+
- atq | cut -f1 | while read A ; do if at -c $A | grep -q \"RES-RESID-\" ; then echo $A ; fi ; done+
- +
-=== Nutná opatření při implementaci aktivačních/deaktivačních skriptů ===+
- +
-* testovat, zda aktivační/deaktivační skript skončil v rozumném čase +
-* testovat výsledek skriptu+
[[Kategorie:Komponenty virtlabu]] [[Kategorie:Komponenty virtlabu]]
[[Kategorie:Server]] [[Kategorie:Server]]
-[[Kategorie:Rezervační server]]+[[Kategorie:CRON]]
-[[Kategorie:Aktivační server]]+

Aktuální verze

Komponenta CRON realizuje v každé lokalitě aktivaci úloh vyžádaných uživateli dané lokality. Je realizována pomocí démona atd. Rezervační server každé lokality prostřednictvím atd naplánuje spuštění aktivačního a deaktivačního skriptu na začátku, resp. konci příslušného timeslotu.

Na začátku timeslotu se dějí tyto akce:

  • Vygenerování konfigurace pro spojovací prvky Distribuovaného virtuálního spojovacího pole pro spojení distribuované virtuální topologie
  • Upload těchto konfigurací prostřednictvím Konfiguračních serverů příslušných lokalit
  • Smazání konfigurací v úloze použitých laboratorních prvků (komunikace s Mazacími servery dotčených lokalit)

Na konci timeslotu se dějí tyto akce:

  • Vygenerování konfigurace pro spojovací prvky Distribuovaného virtuálního spojovacího pole pro rozpojení distribuované virtuální topologie
  • Upload těchto konfigurací prostřednictvím Konfiguračních serverů příslušných lokalit

Detailní informace pro vývojáře

Osobní nástroje