Come creare macchine virtuali per esperimenti e servizi sperimentali in CONFINE
CONFINE è un progetto di ricerca che ha l’obiettivo di costruire un’infrastruttura all’interno di varie community network europee per metterla a disposizione dei ricercatori, che possono così studiare reti reali, con utenti veri, anziché limitarsi ad esperimenti in laboratorio o simulati.
Questa guida spiega come creare Sliver, ovvero macchine virtuali, per effettuare esperimenti o fornire servizi sperimentali, all'interno dell'infrastruttura CommunityLab di CONFINE.
Vedere anche ConfineHowTo
Indice
Concetti di base
Per poter utilizzare CommunityLab sono necessarie alcune conoscenze sulla terminologia e l'architettura.
Per nodi o research device si intendono computer (tipicamente Intel NUC) sparsi all'interno della community network.
I research device possono ospitare zero o piu' macchine virtuali o sliver. Queste sono basate sui linux container (LXC).
Una slice è una collezione di sliver ospitate su più research device che tipicamente fanno parte dello stesso esperimento o servizio.
Ogni sliver è basata su un template, ovvero la distribuzione Linux (tipicamente OpenWrt o Debian) che viene installata al momento della creazione della sliver.
Le sliver hanno tipicamente tre tipi principali di indirizzi:
indirizzi privati, appartenenti alla subnet 192.168.157.0/24, validi solo all'interno del research device (in un bridge virtuale interno). Di solito possono essere ignorati. L'interfaccia corrispondente ha di default il nome priv all'interno della sliver
indirizzi di management, appartenenti alla subnet fdf5:5351:1dfd::/48, raggiungibili tramite la VPN di management tinc (vedere sotto). L'interfaccia corrispondente ha di default il nome mgmt0 all'interno della sliver
indirizzi community-public, assegnati dal server DHCP locale e raggiungibili all'interno della community network (ad esempio 10.176.0.118/24). Spesso questi indirizzi sono chiamati pubblici all'interno di CommunityLab, anche se si tratta indirizzi IP privati RFC1918. L'interfaccia corrispondente ha di default il nome pub0 all'interno della sliver
Per maggiori informazioni vedere Node architecture
Creazione di una slice
Ecco i passi necessari per la creazione di una slice all'interno di CommunityLab.
fare il log-in su https://panel.community-lab.net . In caso non si disponga di un account bisogna registrarsi
- cliccare sul proprio nome in alto a destra per accedere al proprio profilo
verificare che si disponga dei permessi di "Slice admin (researcher)" per il gruppo ninux.org. In caso contrario scrivere a <clauz AT NONMISPAMMARE ninux DOT org> per farsi abilitare
aggiungere una o più chiavi SSH nella sezione authentication tokens
- salvare
cliccare su "SLICES->SLICES" in alto
cliccare su "add slice"
- scegliere un nome per la slice
- scegliere il gruppo "ninux.org"
- opzionalmente, scegliere in "resource requests" lo spazio su disco da allocare per ogni sliver (il default e' circa 200MiB, il massimo 1000MiB)
- scegliere il template (ad esempio "Debian Squeeze (debian)")
- lasciare il "set state" su "START"
- salvare la slice
in basso sulla pagina cliccare su "add slivers"
- scegliere su quali nodi creare le sliver: per rendere più semplice la selezione, usare la colonna a destra cliccando su "By set state PRODUCTION" e "By group ninux.org"
- cliccare su "Create slivers"
nella schermata successiva selezionare le opzioni "public4" (indispensabile per i servizi) e "management" (di default già selezionata)
- cliccare su "Yes, create slivers"
nella pagina relativa alla slice cambiare il set state da "REGISTER" a "START"
- la creazione delle sliver sui nodi selezionati richiede tempi dell'ordine della decina di minuti
Accedere alle sliver
per vedere la lista delle sliver cliccare su "SLICES->SLIVERS" in alto
- per vedere solamente le sliver associate alla propria slice cliccare sulla colonna di destra sul nome della slice
- le sliver che si trovano nello stato "STARTED" sono quelle effettivamente utilizzabili
cliccando sullo stato ("STARTED") si accede ad una pagina che mostra varie informazioni sulla sliver, tra cui gli indirizzi community-public e di management
- se ci si trova all'interno della community network allora si puo' accedere direttamente in SSH alla sliver usando l'indirizzo "public4" della sliver e utente root, altrimenti bisogna utilizzare l'indrizzo di management attraverso la VPN (vedere sotto)
VPN di management (tinc)
La VPN di management è unica per tutti i nodi e le sliver ed è basata sul software VPN tinc.
Per accedere alla VPN:
andare in alto su "TINC->HOSTS"
cliccare su "Add Host" a destra
- scegliere un nome per la macchina da aggiungere alla vpn di management
- scegliere come isola "ninux.org"
- lasciare il resto vuoto e cliccare su "save and continue editing"
clicare su "Help" in alto a destra (consiglio: aprire in un nuovo tab)
- seguire le istruzioni dettagliate riportate sulla pagina
dopo aver generato le chiavi tinc con il comando tincd -n communitylab -K aprire di nuovo la pagina di modifica dell'host tinc (o passare al tab precedente) e copiare e incollare all'interno del campo "public key" la chiave pubblica generata
- salvare
- avviare tinc seguendo le istruzioni che si trovano in fondo alla pagina "Help" (aperta in precedenza)
provare a pingare il server: ping6 fdf5:5351:1dfd::2
Limitazioni attuali
- il massimo spazio disco allocabile per è al momento 1GiB
- i dati scritti su disco vengono persi al riavvio della sliver (o del research device)
- le periferiche USB (dischi, pennette) non sono visti dalle sliver (a meno di non agire sulla configurazione delle sliver a livello di research device)
REST API
Community-Lab espone un'API che può essere utilizzata per ottenere informazioni sullo stato delle sliver e dei nodi, per creare e distruggere sliver, etc.
Documentazione: http://wiki.confine-project.eu/arch:rest-api Esempi: http://redmine.confine-project.eu/projects/confine-utils/repository
TODO
- guida alla creazione template personalizzati
- uso di "experiment data"
- FAQ
- tips and tricks