PROXMOX VE Proxmox VE come soluzione per la gestione di macchine virtuali. 01 marzo 2010.
VIRTUALIZZAZIONE Tramite la virtualizzazione è possibile eseguire contemporaneamente più istanze di sistemi operativi “guest” in un’unica macchina fisica “host”. I sistemi operativi “guest” colloquiano con le risorse messe a disposizione dalla macchina fisica “host” attraverso un componente software di livello intermedio generalmente denominata “hypervisor” o “virtual machine monitor”.
Perché virtualizzare ? PER CONSOLIDARE / RIDURRE IL NUMERO DI SERVER FISICI Tramite la virtualizzazione si possono “eseguire” più macchine virtuali nella stessa macchina fisica riducendo il numero dei server (considerando che spesso le risorse CPU/RAM/HD non vengono pienamente sfruttate dai server “fisici”).
Perché virtualizzare ? PER RIDURRE IL TCO (Total Cost of Ownership) Il consolidamento ad un numero inferiore di server permette una notevole riduzione dei costi legati all’energia utilizzata per alimentare i server e per mantenere la temperatura ambientale adatta alle sale server. Inoltre si riducono i costi di acquisto e i canoni di manutenzione dei server fisici.
Perché virtualizzare ? PER GESTIRE IN MODO PIU' SEMPLICE LE PROCEDURE DI “DISASTER RECOVERY”. L’intero sistema operativo “guest” può essere facilmente salvato e ripristinato riducendo notevolmente i tempi di indisponibilità in caso di guasto.
Perché virtualizzare ? PER POTER ESEGUIRE APPLICAZIONI “LEGACY” Alcune organizzazioni utilizzano applicazioni sviluppate per sistemi operativi che girano su hardware ormai obsoleto, non supportato o addirittura introvabile. Attraverso la virtualizzazione è possibile continuare ad utilizzare quelle applicazioni che diversamente dovrebbero essere migrate ad una architettura più attuale affrontando i costi relativi al porting e al debug.
Perché virtualizzare ? ALTA DISPONIBILITA' Se è presente una infrastruttura di server fisici con delle caratteristiche hardware tra loro compatibili e questi server condividono una area dati (storage) sulla quale risiedono le macchine virtuali, sarà possibile spostare l’esecuzione di una macchina virtuale su un altro host in caso di “failure” o per manutenzione. Alcuni sistemi di virtualizzazione prevedono lo spostamento automatico delle macchine virtuali tra i vari host in funzione al carico.
LE DIVERSE TIPOLOGIE DI VIRTUALIZZAZIONE ● EMULATION ● FULL VIRTUALIZATION ● PARAVIRTUALIZATION ● OPERATING SYSTEM LEVEL VIRTUALIZATION Vediamo quali sono le differenze....
EMULAZIONE Con l’emulazione l'hypervisor simula l’intero hardware set che permette al sistema operativo guest di essere eseguito senza alcune modifiche. Il software di virtualizzazione si incarica di presentare al sistema operativo guest un’architettura hardware completa a lui nota, indipendentemente dall’architettura hardware presente sulla macchina host. L’emulatore simula un’architettura hardware diversa da quella fisica
FULL VIRTUALIZATION La Full Virtualization detta anche Native Virtualization è molto simile alla Emulation. Come nell’emulazione, i sistemi operativi guest girano senza alcuna modifica in macchine virtuali ospitate sul sistema host. La differenza rispetto all’emulazione sta nel fatto che i sistemi operativi guest devono essere compatibili con l’architettura hardware della macchina fisica. In questo modo molte istruzioni possono essere eseguite direttamente sull’hardware senza bisogno di un software di traduzione garantendo prestazioni superiori rispetto all’emulazione. La Full Virtualization presenta al sistema operativo guest la stessa architettura hardware presente sull'host fisico
PARAVIRTUALIZATION L'hypervisor presenta alle macchine virtuali una versione modificata dell’hardware sottostante, mantenendone tuttavia la medesima architettura. Il sistema operativo in esecuzione sulle macchine virtuali è invece modificato per evitare alcune particolari chiamate di sistema. La Paravirtualization è simile alla full virtualization, ma è necessario modificare il sistema operativo guest per ottimizzare l’esecuzione sull’ambiente virtualizzato
Operating System level Virtualization Non si utilizza un Hypervisor, ma la virtualizzazione è creata utilizzando copie del sistema operativo installato sull'host. I sistemi guest creati saranno a tutti gli effetti istanze del sistema operativo host con un proprio file system, configurazione di rete e applicazioni. Le istanze guest utilizzano lo stesso kernel della macchina host. Questo è tuttavia il principale svantaggio di questa tecnica, che la rende inutilizzabile da coloro che vogliono eseguire sistemi operativi diversi sullo stesso host.
ALCUNI ESEMPI DI SISTEMI DI “VIRTUALIZZAZIONE” ● Emulazione: Microsoft Virtual PC, QEMU ● Full Virtualization: Vmware (in base alla versione), Virtual Box, Win4Lin Pro e Xen, KVM ● Paravirtualization: Vmware (in base alla versione), Xen e User-mode Linux ● Operating System level Virtualization (contextualization / containers): Virtuozzo (OpenVZ), Linux VServers questa sera parleremo nello specifico di KVM e OpenVZ !!
ALCUNI NUMERI (dati non aggiornati !!) VMWare – righe di codice XEN – righe di codice KVM – righe di codice
PROXMOX DEMO – come si presenta l'interfaccia Web !
OpenVZ ● OpenVZ è una tecnologia di virtualizzazione basata sul kernel Linux; ● OpenVZ è una versione nata da Parallels Virtuozzo Container, un prodotto software proprietario fornito da Parallels Inc; OpenVZ è sotto licenza GNU GPL versione 2 ed il suo progetto è sostenuto e sponsorizzato da Parallels; ● OpenVZ consente a un server fisico di eseguire più istanze isolate di un sistema operativo, note come contenitori;
OpenVZ ● OpenVZ può essere visto come una sorta di CHROOT, ma a differenza del processo CHROOT che gira in user space, il processo OpenVZ gira in kernel space (maggiore sicurezza) ● Ogni contenitore è una entità separata, e si comporta come un server fisico: – può essere riavviato indipendentemente dal padre – ha un proprio utente root – può avere uno o più indirizzi IP (propri) – memoria, cicli processore, files, applicazioni, librerie di sistema e file di configurazione... – NON può avere un proprio kernel.... perchè è un contenitore eseguito dal kernel della macchina padre
OpenVZ e le schede di rete VENET ● è il dispositivo predefinito per un contenitore (CT) openvz ● viene visto come un point-to-point (PPP) tra il CT e il sistema hostPPP ● il dispositivo VENET può contenere N indirizzi IP ● i pacchetti provenienti dal sistema host con indirizzi che non corrispondono a quelli del CT vengono “droppati / ignorati”
OpenVZ e le schede di rete VETH ● e' un dispositivo “ethernet-like”... dal contenitore viene visto in modo trasparente come si trattasse di una normale scheda di rete eth ● in realtà, vista dal punto di vista della macchina padre, si tratta di un bridge
Differenze tra VENET e VETH ? Tratto da:
PROXMOX - OpenVZ DEMO ● creazione di un CT (container) ● le schede di rete di OpenVZ ● alcuni comandi da.... riga di comando ;-) ● montare dischi di rete accessibili dal CT vz.org/index.php?t=msg&goto=15244& _mounts vz.org/index.php?t=msg&goto=15244& _mounts
KVM - Kernel-based Virtual Machine ● KVM (Kernel-based Virtual Machine) è una soluzione per la virtualizzazione (di tipo full virtualization) per Linux (a partire dal kernel o come patch a partire dalla versione ) basata su piattaforma x86. ● Per poter essere utilizzato KVM richiede che la piattaforma hw supporti una particolare estensione per la virtualizzazione. ● Nello specifico, Intel-VT per i processori Intel e AMD-V per i processori AMD.
KVM - Kernel-based Virtual Machine ● La soluzione KVM è composta da un modulo per il kernel (kvm.ko) che gestisce l'infrastruttura, da un modulo specifico in base alla tipologia di processore utilizzato (kvm-intel.ko o kvm- amd.ko) e da una versione modificata di QEMU. ● Tramite KVM è possibile virtualizzare macchine Linux e Windows; ad ogni macchina virtuale viene assegnato un proprio "set di harware virtuale" privato: scheda di rete, hard disk, scheda grafica...
KVM - Kernel-based Virtual Machine ● All'indirizzo kvm.org/page/Guest_Support_Status sono disponibili i sistemi operativi guest supportati da KVM. kvm.org/page/Guest_Support_Status ● All'indirizzo kvm.org/page/Management_Tools sono disponibili una serie di soluzioni che consentono di gestire KVMhttp:// kvm.org/page/Management_Tools Questa sera parleremo di PROXMOX !
Quando usare OpenVZ e quando usare KVM ? Dipende !
Quando usare OpenVZ e quando usare KVM ? es. Ho bisogno di un server su cui far girare LAMP (Linux, Apache, MySQL, Php) senza aver bisogno di nessuna interfaccia grafica.... utilizzo OpenVZ es. Ho bisogno di un server su cui far girare un servizio FTP... utilizzo OpenVZ es. Ho bisogno di un sistema operativo completo di interfaccia grafica o di un ambiente con uno specifico kernel o di un sistema operativo per cui non esiste un template (OpenVZ)... utilizzo KVM
OpenVZ PRO ● Creazione di una nuova macchina virtuale in un lampo ! ● E possibile ridimensionare lo spazio disco senza dover apportare modiche alla macchina virtuale (basta arrestarla, riassegnare lo spazio e riavviare la macchina virtuale !) ● Posso installare sistemi operativi diversi da quello della macchina host (es. posso installare una RedHat come macchina virtuale su di una Debian su cui è stato installato OpenVZ) ● Spazio su disco occupato inferiore rispetto ad un macchina full virtualized CONTRO ● NON posso utilizzare un kernel diverso da quello della macchina host ● NON è supportato dal nuovo kernel il quale supporta KSM (Kernel Samepage Merging) ● NON posso virtualizzare macchine Windows
OpenVZ: alcuni comandi utili per la shell ● vzlist -a (visualizza l'elenco e lo stato dei CT) ● vzctl start ID (avvia il contenitore) ● vzctl enter ID (entra nel contesto del contenitore) ● vzctl stop ID (arresta il contenitore) ● vzctl set ID --hostname PIPPO --save (modifica l'hostname della macchina ID, al volo !) ● vzctl set ID --ipadd IP --save (aggiunge un indirizzo IP al contenitore, al volo !) ● vzctl set ID --ipdel IP --save (rimuove un indirizzo IP dal contenitore, al volo !)
KSM - Kernel Samepage Merging ● KSM è una tecnologia introdotta a partire dal kernel ● Kernel SamePage Merging (KSM) consente alle pagine di memoria identiche di essere unite dal kernel in una singola pagina condivisa fra uno o più processi. Questa caratteristica viene usata da KVM per consentire a più macchine virtuali ospiti simili di avere una impronta in memoria ridotta. ● Funziona così ● “One case that might come to mind is webhosting where you might want to maximize scalability. Redhat claims that tests with KSM were able to achieve 600 vms on a host with 48 cores and 256 GB RAM” … tratto da questo sito ksm-kernel-samepage-merging-kvm ksm-kernel-samepage-merging-kvm
Perchè utilizzare PVE (Proxmox Virtual Environment) come sistema di virtualizzazione ? ● Perchè è open source ● Perchè consente di gestire due diversi sistemi di virtualizzazione (OpenVZ e KVM) tramite un'unica intuitiva interfaccia Web ● Perchè è un progetto “vivo” che in poco tempo è notevolmente migliorato.... e migliorerà ancora !
PROXMOX – Installazione ● Tramite il CD di installazione (Bare-metal ISO Installer) l'intero sistema di virtualizzazione è operativo nel giro di pochi minuti ● L'installazione tramite CD “azzera” completamente qualsiasi partizione presente sul PC su cui viene installato Proxmox ● Al termine dell'installazione otterremo un server con le seguenti caratteristiche: * Sistema operativo completo (Debian Lenny 64bit) * Hard disk partizionato con LVM2 * Proxmox VE Kernel con supporto OpenVZ e KVM * Tools per il Backup e Restore delle macchine virtuali * Interfaccia Web per la manutenzione del sistema
PROXMOX – quali sono le virtualizzazioni supportate ? ● Container Virtualization (OpenVZ) ● Full Virtualization (KVM) ● Paravirtualization (KVM), KVM supporta la paravirtualizzazione di alcune periferiche per consentire un incremento delle prestazioni di I/O (VirtIO)
Proxmox - Paravirtualized Network Drivers for Windows Tratto da “In order to improve network performance, special paravirtualized network drivers can be installed in Windows guests. The KVM project released drivers for Windows 2000, Windows XP and Vista. The Windows XP drivers are known to work also on Windows 2003 Server (also the Vista drivers can be used for Windows 2008). For production systems (windows), the stable e1000 emulations is recommended (but you need the latest drivers from Intel, the built in e1000 drivers are not working).”
Proxmox dentro proxmox dentro proxmox dentro proxmox E' possibile installare proxmox dentro un altro proxmox ma con alcune limitazioni per i processori INTEL: ● pur abilitando il parametro “-enable-nesting” per le macchine guest di tipo KVM non viene abilitato il supporto “vmx” ● questo significa che (solo per processori INTEL) NON posso creare nuove macchine KVM in un server proxmox contenuto in un'altro server proxmox !
Proxmox e OpenVZ ● Tramite Proxmox è possibile creare una macchina virtuale OpenVZ in pochi secondi partendo da un template ● Tramite questo link è possibile accedere ad un elenco di template per OpenVZ
PROXMOX – Installazione da CD bare-metal DEMO ! ● Installazione da CD ● Configurazione dei dischi e delle partizioni ● Configurazione delle schede di rete della macchina padre
PROXMOX – DOVE SALVARE LE IMMAGINI DEI DISCHI DELLE MACCHINE VIRTUALI ? DRBD - VANTAGGI: ● semplice da realizzare ed economica ● soluzione prestante ● richiede solo i 2 server proxmox in cluster ● e' possibile migrare “live” le macchine virtuali KVM SVANTAGGI: ● spazio disco limitato in base al numero di hd che fisicamente possono essere installati sui 2 server ● dubbi personali :-| primary-secondary?p=19048#post19048http://forum.proxmox.com/threads/3371-DRBD- primary-secondary?p=19048#post19048
PROXMOX – DOVE SALVARE LE IMMAGINI DEI DISCHI DELLE MACCHINE VIRTUALI ? ISCSI – OpenfilerOpenfiler VANTAGGI: ● scalabile ● e' possibile riutilizzare del “vecchio” HW ● soluzione “economica” (sfruttando vecchio HW) SVANTAGGI: ● meno prestante rispetto alla soluzione DRDB implementata direttamente sui 2 server proxmox
PROXMOX – DOVE SALVARE LE IMMAGINI DEI DISCHI DELLE MACCHINE VIRTUALI ? SOLUZIONI ALTERNATIVE ● SAN ● ATAoE ● ●
PROXMOX – DOVE SALVARE LE IMMAGINI DEI DISCHI DELLE MACCHINE VIRTUALI ? Tratto dal forum di proxmox: Perfect-storage?highlight=perfecthttp://forum.proxmox.com/threads/3192- Perfect-storage?highlight=perfect ● For ISO store, I suggest a NFS share. ● For vzdump backups, I suggest a NFS share. ● For KVM images, I suggest using a big iSCSI LUN and LVM on it ● For KVM images, a NFS share is the easiest way (but no online backup via snapshots here) e.g. by using openfiler on your storage box you can configure everything you need. E vorrei aggiungere anche: Storing-Virtual-Disks-Containers-not-on-the-root-drive-HowTO- Guide?highlight=snapshot+roothttp://forum.proxmox.com/threads/3456- Storing-Virtual-Disks-Containers-not-on-the-root-drive-HowTO- Guide?highlight=snapshot+root
PROXMOX – Migrazione macchine virtuali DEMO ! ● Migrazione macchine OpenVZ ● Migrazione macchine KVM
Proxmox – backup macchine virtuali ● i backup possono essere eseguiti a “caldo” ● i backup delle macchine virtuali (OpenVZ e KVM) vengono gestiti tramite il programma vzdump ● migrare a “caldo” implica l'uso degli snapshot di LVM ● in sostanza, ad ogni avvio di un backup: – viene attivato lo snapshot del volume logico di LVM – viene eseguito il backup – viene disattivato lo snapshot e viene eseguito il commit
Proxmox e le schede di rete
Cosè shorewall ? ● Shorewall NON è un firewall ● Shorewall è un tool per la configurazione delle regole di firewalling implementate tramite Netfilter
Shorewall e Proxmox Alcune note di installazione: apt-get update apt-get install shorewall-perl modificare il parametro “IP_FORWARDING” in /etc/shorewall/shorewall.conf impostando il valore a “On” modificare il parametro “FASTACCEPT” in /etc/shorewall/shorewall.conf impostando il valore a “Yes” modificare il parametro “BRIDGING” in /etc/shorewall/shorewall.conf impostando il valore a “No” dopo aver opportunamente configurato e testato i vari file nella cartella /etc/shorewall è possibile impostare l'avvio automatico di shorewall modificando il parametro “startup” a “1” nel file /etc/default/shorewall
Shorewall e Proxmox Alcuni comandi utili: shorewall check verifica la correttezza dei file di configurazione shorewall try /etc/shorewall 10 avvia shorewall per 10 secondi shorewall clear rimuove tutte le regole impostate da shorewall
Shorewall e Proxmox DEMO ● breve tour dei file di configurazione !
DOMANDE ?
“Webbografia” ! ● ● ● ● ● ● ● ● kvm.ars kvm.ars ● ●