40
UNIVERSITÀ DI PISA Facoltà di Scienze MM.FF.NN. Laurea Magistale in Sicurezza Informatica: Infrastrutture e Applicazioni Complementi di Programmazione Distribuita - Prof. M. Gatti A.A. 2011/2012 vSphere Inventory Browser for VMware ESX/vCenter 4.x Salvatore Saeli

vSphere Inventory Browser for VMware ESX/vCenter 4.x

Embed Size (px)

Citation preview

UNIVERSITÀ DI PISA Facoltà di Scienze MM.FF.NN.

Laurea Magistale in Sicurezza Informatica: Infrastrutture e Applicazioni

Complementi di Programmazione Distribuita - Prof. M. Gatti A.A. 2011/2012

vSphere Inventory Browser for VMware ESX/vCenter 4.x

Salvatore Saeli

Scopo del progetto

Produrre un’Inventory Browser in grado di interfacciarsi con un server ESX/vCenter 4.x sfruttando strumenti e tecniche di ottimizzazione server-side e client-side

¤ Approfondimento dell’infrastruttura di virtualizzazione di VMware

¤ Uso della vSphere Web Services SDK ¤ Uso e approfondimento di Microsoft Visual C# ¤  Installazione di due server ESX e di un server vCenter

vSphere Inventory Browser - Salvatore Saeli

1

Introduzione 2

vSphere Inventory Browser - Salvatore Saeli

Problematiche affrontate

vSphere Inventory Browser - Salvatore Saeli

3

¨  Ottimizzazione del numero di oggetti da creare all’interno del server a ogni sessione

¨  Riduzione del traffico d’informazioni tra il client e il server per contenere l’uso della banda

¨  Gestione dei problemi di coerenza e sincronizzazione dei dati da mantenere sul client

Soluzioni adottate

vSphere Inventory Browser - Salvatore Saeli

4

¨  Server-side ¤  oggetti ViewManager e View

rendono performante l’uso del PropertyCollector ¤  meccanismo di notifica WaitForUpdate

uso efficiente delle risorse di rete, rimane bloccato in attesa di aggiornamenti

¨  Client-side ¤  albero n-ario implementato con tabelle hash

mantiene l’intera struttura in memoria con accesso in tempo costante ai nodi ai vari livelli dell’albero

¤  tecnichedi multi-threading (C#) esecuzione in parallelo delle operazione eseguite in background sincronizzazione dei dati sugli oggetti del server

¤  tecnica di riflessione (C#) accesso alle proprietà degli oggetti di tipo ManagedEntity dall’Inventory UI Tree

Il ViewManager e le View 5

vSphere Inventory Browser - Salvatore Saeli

Il PropertyCollector

vSphere Inventory Browser - Salvatore Saeli

6

È una service interface che supporta le seguenti tipologie di task da un’applicazione client: ¨  navigare all’interno dell’inventory e ottenere

informazioni su specifici managed object dall’inventory

¨  reperire dati sullo stato del server, nel caso di un’applicazione client sincronizzata con lo stato degli oggetti del server

Performance del PropertyCollector

vSphere Inventory Browser - Salvatore Saeli

7

I fattori che ne possono andare ad intaccarne le performance sono: ¨  il numero di oggetti ¨  il numero di proprietà da trattare su ogni oggetto ¨  la frequenza di cambiamenti degli oggetti e delle

proprietà nel server ¨  la profondità di attraversamento

¤  il numero di proprietà da attraversare

Migliorare le prestazioni di raccolta del PropertyCollector

vSphere Inventory Browser - Salvatore Saeli

8

Utilizzandolo in congiunzione con gli oggetti ViewManager e View permette di minimizzare ¨  l’overhead sul PropertyCollector ¨  l’ammontare di traffico di rete per un’applicazione

client Il ViewManager permette al client di accedere al contenuto dei managed object sul server creando delle View (s.i. di managed entity)

¤ ContainerView, InventoryView, ListView

PropertyFilterSpec usato con una ContainerView

vSphere Inventory Browser - Salvatore Saeli

9

Interazione con il PC tramite il supporto delle View

PropFilterSpec più semplici per definire i filtri

Comunicazione Client-Server molto più efficiente

InventoryView

vSphere Inventory Browser - Salvatore Saeli

10

The InventoryView managed object provides a means of browsing the inventory and tracking changes to open

folders. This managed object is particularly useful for UI clients that display a tree-based navigation panel of the

inventory. (VMware vSphere API Ref)

InventoryView

vSphere Inventory Browser - Salvatore Saeli

11

¨  fornisce le operazioni per aprire e chiudere le folder in un inventory

¨  la sua proprietà view contiene un array dei MORef agli oggetti che compongono l’inventory

¨  quando viene creato il server inizializza la lista degli oggetti della View con la root folder

¨  per aggiungere dei child object occorre eseguire l’operazione OpenInventoryViewFolder passandogli il MORef della managed object entity

InventoryView – host ESX

vSphere Inventory Browser - Salvatore Saeli

12

Nel caso di un host ESX, per ottenere tutti gli oggetti server all’interno della View le operazioni sono : 1.  Aprire la root folder

2.  Aprire le folder del Datacenter

InventoryView – server vCenter

vSphere Inventory Browser - Salvatore Saeli

13

Nel caso di un server vCenter, per ogni Datacenter occorre iterare l’operazione 2. Risultato: con al più 1+(4*N) chiamate, con N uguale al numero dei Datacenter, è possibile ottenere tutti gli oggetti dell’inventory all’interno dell’InventoryView

Albero N-ario e Tabelle Hash 14

vSphere Inventory Browser - Salvatore Saeli

Struttura albero n-ario

vSphere Inventory Browser - Salvatore Saeli

15

Analizzando la gerarchia dell’inventory si evince che ci sono dei livelli prestabiliti

Permette di inserire i nodi in ordine in base al loro livello di appartenenza

È possibile gestire l’inventory di un server vCenter allo stesso modo d’invenotory di un host ESX standalone

Struttura nodo dell’albero n-ario

vSphere Inventory Browser - Salvatore Saeli

16

¨  Key: ¤ MORef.Value, valore univoco per ogni oggetto del server

¨  Value: ¤ MORef, si ottengono le proprietà Value e Type ¤ ManagedEntity Object, rappresenta una classe per ogni

tipo di oggetto nell’inventory ¤  Rif. ai Child, permettono di attraversare l’albero in

profondità

Tabelle Hash ad indirizzamento diretto

vSphere Inventory Browser - Salvatore Saeli

17

Generalizzazione del concetto di array ordinario.

L’indirizzamento diretto di un array ordinario permette di esaminare una posizione arbitraria in tempo constante

Funziona bene quando l’universo U delle chiavi è ragionevolmente piccolo e si tratta di valori univoci

I dati satellite vengono memorizzati in un oggetto esterno

N-ary HashTree Node

vSphere Inventory Browser - Salvatore Saeli

18

* più oggetti uguali in un host ESX ** più oggetti uguali in un server vCenter

Key : MORef.Value Value: puntatore ad un array dinamico con locazioni MORef ; ManagedEtity Object; Puntatori ai nodi child (nessuno nel caso di nodi foglia)

N-ary HashTree

vSphere Inventory Browser - Salvatore Saeli

19

Albero n-ario ottenuto tramite l’implementazione dei nodi con delle tabelle di hash

La struttura a puntatori permette di attraversare in profondità l’albero

N-ary HashTree – inserimento nodi

1.  Si ottiene la chiave del nodo parent dal ManagedEntity Object 2.  In base alla tipologia del nodo da aggiungere, si accede al nodo

di livello superiore tramite la chiave ottenuta 3.  si aggiunge il riferimento nel nodo parent

20

vSphere Inventory Browser - Salvatore Saeli

Attraversamento di un albero

vSphere Inventory Browser - Salvatore Saeli

21

¨  Per attraversamento o visita di un albero s’intende l’ispezione dei nodi dell’albero in modo che tutti i nodi vengano ispezionati una ed una sola volta

¨  Definisce un ordinamento totale tra i nodi dell’albero in base alla loro posizione ¤ ogni nodo ha un predecessore e un successore

all’interno di un attraversamento

Attraversamento Preorder 22

vSphere Inventory Browser - Salvatore Saeli

Visita preorder di un BST Adattamento per l’N-ary Tree

Multi-Threading e Sincronizzazione 23

vSphere Inventory Browser - Salvatore Saeli

Tecniche usate per il Multi-Threading

vSphere Inventory Browser - Salvatore Saeli

24

¨  Delegati Sincroni ¤  discovery delle Managed Entity ¤  chiamate Thread-Safe ai Windows Form Controls

¨  BackgroundWorker ¤  operazione di Login ¤  caricamento dell’inventory ¤  event listener

¨  Delegati Asincroni ¤  notifica di tipo Enter

Descriviamo i casi più interessanti

Discovery delle Managed Entity

vSphere Inventory Browser - Salvatore Saeli

25

Per caricare tutti gli oggetti server all’interno dell’InventoryView viene eseguita l’apertura delle folder di un Datacenter su quattro thread separati

Nel caso di un server vCenter viene l’operazione viene ripetuta per ogni Datacenter

Classe BackgroundWorker

vSphere Inventory Browser - Salvatore Saeli

26

¨  Rende semplice l’uso dei thread in un Window Fom ¨  Per eseguire un’operazione onerosa in background

si crea un BrackgroundWorker ¨  Si resta in attesa degli eventi che segnalano

l’avanzamento e il completamento dell’operazione

Caricamento dell’Inventory

vSphere Inventory Browser - Salvatore Saeli

27

¨  Consiste di più sotto-fasi che sono eseguite all’interno di un BackgroundWorker: 1.  Discovery delle ManagedEntity 2.  Raccolta delle proprietà delle ManagedEntity 3.  Creazione dell’Inventory per tipologia delle

ManagedEntity 4.  Costruzione dell’N-ary HashTree 5.  Costruzione dell’Inventory UI Tree

¨  L’avanzamento e il completamento delle operazioni sono segnalati aggiornando una ProcessBar

Event Listener

vSphere Inventory Browser - Salvatore Saeli

28

¨  La sincronizzazione con il server è mantenuta usando il meccanismo di notifica WaitForUpdate, eseguito all’interno di un BackGroundWorker.

¨  3 Thread, uno per ogni tipologia di notifica ¤  Enter, un managed object è visibile a un filtro per la prima volta ¤  Leave, un managed object non fa più parte dell’insieme degli oggetti

del filtro ¤  Modify, una proprietà di un managed object cambia il suo valore

¨  Avanzamento dell’operazione segnalato tramite ¤  Aggiunta di elementi a una ListBox (tipo di notifica, managed object al

quale è applicata) ¤  Modifica della struttura dell’Inventory UI Tree ¤  Aggiornamento di un DataGridView che mantiene l’elenco delle

proprietà e dei corrispettivi valori

Delegati Asincroni

vSphere Inventory Browser - Salvatore Saeli

29

¨  Permettono di eseguire un metodo in modo asincrono

¨  Attraverso un delegato è possibile chiamare un metodo e ritornare immediatamente all’esecuzione del codice successivo ¤  Il metodo esegue in un thread separato

Notifica di tipo Enter

vSphere Inventory Browser - Salvatore Saeli

30

¨  All’inserimento di un nuovo nodo all’Inventory UI Tree (ed eventualmente dei sui nodi figli), occorre creare il nodo e aggiungerlo al suo nodo parent

¨  Può accadere che la notifica d’inserimento non sia data in ordine di livello di profondità quindi non viene trovato il parent

¨  Viene impiegato un delegato asincrono 1.  fa uno o più tentativi di ricerca fin quando non trova il

rispettivo nodo parent del nodo entrante 2.  aggiunge il nodo entrante tra i nodi figli del nodo parent

Event Listener: Thread e Delegati

vSphere Inventory Browser - Salvatore Saeli

31

Riflessione

vSphere Inventory Browser - Salvatore Saeli

32

¨  Fornisce oggetti di tipo Type che incapsulan l’assembly, i moduli e i tipi

¨  È possibile usare la riflessione per ottenere il tipo da un oggetto esistente, per poi richiamarne i metodi o per accedere ai campi e alle proprietà dell’oggetto

¨  Si ottiene un’unica procedura che permetta di asaminare tutte le proprietà accessibili, in lettura o in scrittura, di un oggetto ManagedEntity

TreeNode e la proprietà Tag

vSphere Inventory Browser - Salvatore Saeli

33

¨  Inventory UI Tree implementato con un controllo TreeView

¨  La proprietà Tag dell’oggetto TreeNode permette di ottenere o settare l’oggetto che contiene i dati sul nodo dell’albero

¨  Viene caricato nella proprietà Tag di ogni TreeNode un’istanza del rispettivo oggetto ManagedEntity

Screen dell’Applicazione 34

vSphere Inventory Browser - Salvatore Saeli

Form di Login 35

vSphere Inventory Browser - Salvatore Saeli

Form di caricamento dell’Inventory 36

vSphere Inventory Browser - Salvatore Saeli

Form InventoryBrowser 37

vSphere Inventory Browser - Salvatore Saeli

Dettaglio delle VirtualMachine appartenti all’host

Form More Info 38

vSphere Inventory Browser - Salvatore Saeli

Fine 39

vSphere Inventory Browser - Salvatore Saeli