[vmchecker-dev] Reproiectarea comunicatiei storer-tester

Vlad Dogaru ddvlad at rosedu.org
Fri Jun 8 14:41:34 EEST 2012


2012/6/7 Valentin Gosu <valentin.gosu at gmail.com>:
> Salut,
>
> In discutiile mele cu Razvan am determinat ca modul de comunicatie intre
> storer si tester este defectuos, in principal modul cum este folosit SSH-ul.
>
> In prezent, atat pe storer cat si pe tester trebuie sa existe conturi pentru
> fiecare materie, cu chei publice generate. La trimiterea unei teme de catre
> student (la SO de exemplu), aceasta se salveaza in repo, in home-ul userului
> SO, iar bundle-ul este trimis prin SSH catre contul SO de pe tester. Acesta
> este primit de queue-manager, ce ruleaza in contextul contului SO, iar dupa
> corectare se il copiaza inapoi prin SCP, in repo-ul de pe contul SO.

E defectuos numai în situația în care maparea dintre userii de pe
storer și tester nu e 1-to-1.

Anul ăsta, pentru că avem o mașină nouă (care e o rachetă, îmi permit
să adaug), fiecare curs are propriul user pe ambele mașini.
Administratorii cursurilor în cauză pot (re)porni serviciul de
testare, după cum pot edita și detalii despre assignments.  Nu văd
ceva greșit în asta.

Ce era greșit era abordarea de anul trecut în care, forțați de
împrejurări (no hardware), 2-3 cursuri împărțeau aceeași coadă și
aveam probleme cu cheile SSH împrăștiate peste tot.  so at elf putea
ajunge pe so at sanctuary, apoi pe so2 at elf.  Problema era "rezolvată" cu
ACL-uri pe home-uri, which sucked, dar a fost rezolvată de-a binele
prin alocarea unei mașini mai țepene, care poate rula mai mult de
jumate de mașină virtuală simultan.

> Pe langa faptul ca cheile publice pun probleme la adaugarea unei noi
> materii, dorim sa reducem accesul statiei tester la fisierele de pe storer.
>
> In acest sens, propunem urmatoarele modificari:
> 1. Pe storer in contextul user-ului vmchecker sa ruleze un daemon care se
> ocupa de comunicatia cu tester-ul. Acesta trimite bundle-ul catre storer si
> este notificat cand se termina testarea, moment in care copiaza arhiva
> local.
> 2. Pe tester sa existe un singur user, in contextul caruia ruleaza masinile
> virtuale. Pe aceasta masina ruleaza un singur queue-manager care detecteaza
> existenta unui bundle nou (folosind inotify), testeaza, si notifica daemonul
> de pe storer. In acest fel, tester-ul nu are deloc acces pe storer.

Asta nu e chiar atât de diferit față de ce avem acum.  Corectează-mă
dacă greșesc, dar diferența este în faptul că nu se mai SCP-iază
rezultatele pe storer, ci storerul e notificat și și le ia singur,
right?

E o problemă cu a rula o singură coadă: vmchecker.cs.pub.ro are 8
core-uri, e o idee *bună* să avem o coadă per curs, ca să nu se
reflecte un deadline la SO2 în RTT-ul temelor de la SD, de exemplu.

> Pe langa acestea, am implementat cate un executor pentru LXC si pentru KVM,
> iar acum refactorizez scripturile pentru a le face sa implementeze o
> interfata comuna.

GG!

Vlad


More information about the vmchecker-dev mailing list