Misurare Tempo di Deploymet

23 views
Skip to first unread message

raffael...@gmail.com

unread,
Oct 6, 2014, 1:14:22 PM10/6/14
to openne...@googlegroups.com
Salve a tutti,
è da poco che utilizzo opennebula ed è anche da poco tempo che mi sono avvicinato al cloud computing in generale (così dovrei essere apposto per eventuali cretinate :P).

Mi sono creato una piccola infrastruttura di test ed ero curioso di monitorare quanto tempo viene impiegato per deployare una vm.
L'unica informazione che sono riuscito a trovare è stata quella di andare a guardare i log ed i vari cambiamenti di stato (da PENDING a RUNNING).

E' questo l'unico modo che ho per monitorare i tempi di deploy?

Cercando un po in giro ho trovato vari studi dove mostrano grafici dei tempi di deploy, ma da nessuna parte viene detto come sono stati presi.

Grazie.

Alberto Zuin - Liste

unread,
Oct 7, 2014, 2:04:33 AM10/7/14
to openne...@googlegroups.com
Ciao Raffaele,
al momento, che io sappia, non esiste alcun metodo per misurare i tempi
di deployment delle VM interno ad OpenNebula.
Quello che puoi fare, senza andare a leggere i file di log, è istanziare
la VM tramite script/api invece che tramite sunstone e misurare
autonomamente il tempo impiegato. Quindi:

- faccio partire il timer
- curl con api per istanziare la VM
- while api che controlla lo stato != OK|ERROR
- fermo il timer e salvo il valore

Detto questo, il tempo di deployment è poco indicativo perchè non è una
cosa che interessa direttamente OpenNebula, ma ci sono almeno altri due
fattori esterni che vanno ad influenzare questi valori da tenere in
considerazione:
- lo scheduler viene eseguito ogni X secondi e ad ogni esecuzione
controlla se ci sono operazioni in coda. Se setti in oned.conf una
frequenza bassa (es. 5 minuti) sarebbe impossibile avere valori
coerenti; al contrario, se fai girare lo scheduler troppo frequentemente
(ogni secondo) dubito che il server riesca a starti dietro.
- i dischi: sono persistenti o vanno creati "al volo"? Ovvio che una VM
con disco persistente viene istanziata immediatamente, una con un disco
non persistente da 100 GB su NFS con dischi SATA a 5.4 e server
collegati ad uno switch 10/100 impiega qualcosa di più :-)

Ciao,
Alberto
--
AZ Network Specialist
via Mare, 36A
36030 Lugo di Vicenza (VI)
ITALY
P.I. IT04310790284
http://www.azns.it
Tel +39.3286268626
Fax +39.0492106654

duf...@gmail.com

unread,
Oct 7, 2014, 2:57:03 PM10/7/14
to openne...@googlegroups.com
Ciao Alberto,
grazie per i tuoi consigli.
Si indubbiamente già avevo messo in conto il fatto di dover considerare degli altri aspetti per avere un valore significativo e i due fattori che mi hai indicato sono effettivamente importanti e da tenere in conto.
Però, nonostante tutto, giusto a scopo di studio (tieni conto che sto facendo delle prove con un laptop ed un host su VirtualBox :p), credi che calcolare i tempi con il metodo che mi hai consigliato porta ad un risultato tanto distante (più preciso?) da quello che posso avere semplicemente andando a guardare i log?

Inoltre, dove posso trovare maggiori informazioni su come istanziare tramite script/api?
Grazie 1000
Raffaele

Giovanni Toraldo

unread,
Oct 7, 2014, 3:41:24 PM10/7/14
to openne...@googlegroups.com
Ciao,

2014-10-07 20:57 GMT+02:00 <duf...@gmail.com>:
> Si indubbiamente già avevo messo in conto il fatto di dover considerare degli altri aspetti per avere un valore significativo e i due fattori che mi hai indicato sono effettivamente importanti e da tenere in conto.

Tieni anche presente che quando OpenNebula riportato uno stato RUNNING
ciò non significa che la VM ha finito il boot o che eventuali servizi
al loro interno siano attivi, ma semplicemente che la richiesta di
avvio VM è stata correttamente inviata all'hypervisor.

> Inoltre, dove posso trovare maggiori informazioni su come istanziare tramite script/api?

http://docs.opennebula.org/4.8/integration/system_interfaces/index.html

Forse per il tuo caso d'uso la cosa più semplice è uno script bash (o
un qualsiasi altro linguaggio di scripting che conosci) che
interagisce con i tool a linea di comando.

--
Giovanni Toraldo
http://gionn.net

Raffaele Verde

unread,
Nov 2, 2014, 12:45:00 PM11/2/14
to openne...@googlegroups.com
Salve ragazzi! 
Grazie alle vostre dritte e leggendo un po di documentazione sono riuscito a scrivere una piccola applicazione java che manda in deploy una vm dopo aver creato l'immagine ed il template della vm.

Tieni anche presente che quando OpenNebula riportato uno stato RUNNING
ciò non significa che la VM ha finito il boot o che eventuali servizi
al loro interno siano attivi, ma semplicemente che la richiesta di
avvio VM è stata correttamente inviata all'hypervisor.

Infatti è proprio dove mi sono fermato. 
Alla fine il metodo più rapido che ho trovato per sapere quando la vm ha terminato il boot è stato quello di aggiungere un "ping" alla fine del file rc.local. Dalla mia applicazione java lancio tcpdump in ascolto sulla scheda di rete fino a quando non arriva il ping.

Ora, il ping io l'ho aggiunto a manina al file rc.local dopo aver avviato la vm e loggatomi tramite ssh.
Quello che vorrei fare invece è dire alla vm di eseguire il ping senza operazioni manuali.
Se non ho capito male un metodo per poterlo fare è sfruttare la contestualizzazione ma davvero non sono riuscito a capire come fare ad eseguire il ping all'avvio.

Ho usato l'immagine di CentOs presente nel market che dovrebbe essere già pronta per la contestualizzazione.
Leggendo la guida: http://docs.opennebula.org/4.8/user/virtual_machine_setup/cong.html mi parla degli attributi: FILE, INIT_SCRIPTS, FILE_DS. Ma non riesco a capire come fare a fargli caricare un mio script ed ad eseguirlo alla fine del boot. Ad esempio init_scripts dice che posso scegliere l'ordine con cui eseguire i miei script ma: dove li devo salvare per farli caricare??

Consigli?
Grazie


Reply all
Reply to author
Forward
0 new messages