Un assaggio di Proxmox

/images/Proxmox.thumbnail.png

Proxmox, la storia

Proxmox nasce nel 2008 come sistema completo di virtualizzazione (alternativo a prodotti come VMWare) "a pacchetto". Lo scopo è sempre stato, ed è ancora, quello di fornire un sistema semplice e pratico di preparazione di hardware fisico allo scopo di ospitare macchine virtuali, il tutto gestito attraverso una comoda interfaccia web.

Fino alla versione 3.0, Proxmox ha sofferto di serie problematiche di gioventù. Pur essendo, infatti, già sufficientemente maturo, c'erano alcuni problemi (bug o mancanza di feature) che non lo rendevano estremamente adatto ad ambienti di produzione importanti. Dalla 3.0 in poi, invece, si è assistito al lancio verso l'olimpo in quanto le funzionalità di base erano ormai mature e affidabili e le nuove opzioni erano tutte incentrate sul renderlo sempre più un prodotto enterprise.

Sviluppato e diretto dall'Austriaca Proxmox Server Solutions GmbH, è un progetto in rapido progresso e con interessantissime funzionalità che si aggiungono versione dopo versione.

Il sistema è interamente Open Source, prevede la possibilità di acquistare un abbonamento (a prezzi molto vantaggiosi) per accedere al repository di aggiornamento enterprise, più collaudato e sicuro di quello standard, e tutto il supporto e l'assistenza necessari al sistemista che ne possa avere necessità.

Proxmox, l'architettura e l'installazione

Pur essendosi evoluto in maniera esponenziale negli ultimi anni, Proxmox mantiene la stessa architettura delle origini. A oggi il sistema è strutturato in maniera molto semplice e allo stesso tempo logica. Si basa, infatti, sulla distribuzione Debian standard (wheezy per 3.x, jessie per 4.x, stretch per 5.x) su cui vengono installati i relativi pacchetti provenienti da uno dei repository di Proxmox stesso.

L'installazione può avvenire in due modi:

  • Direttamente dalla ISO di Proxmox stesso, fornita di un comodo, semplice e idiot proof installer grafico, che in pochissimi minuti vi fornirà un sistema completo e configurato.
  • Aggiungendo il repository di Proxmox ad una installazione Debian preesistente (es: installazione su Debian 9.0 Jessie, procedura utilissima nel caso si voglia procedere ad effettuare delle configurazioni non standard o non supportate dalla ISO ufficiale. Con l'installazione del metapacchetto, tutte le dipendenze verranno inserite e, dopo un reboot, si avrà un sistema con le stesse funzionalità di quello installato attraverso la ISO ufficiale.

In entrambi i casi, si discosteranno da Debian standard alcune cose come il kernel (che, normalmente, è in versione più recente e ottimizzata) e pochi altri pacchetti.

Personalmente non ho avuto alcun problema, anche nelle configurazioni più strane, ad installare Proxmox su Debian altamente personalizzata. Ho avuto più noie, invece, ad installare tramite la ISO ufficiale su alcuni hardware parzialmente supportati o obsoleti.

Una delle feature più interessanti di Proxmox è l'attivazione del KSM, ovvero il Kernel Samepage Merging. Capita spesso, infatti, di avere in esecuzione più VM con la stessa versione di sistema operativo, applicativi, ecc. Ebbene, KSM è in grado di fare una scansione di memoria, rilevare queste uguaglianze e deduplicare la memoria. Il risparmio di RAM è consistente e, spesso, può consentire un miglior utilizzo delle risorse della macchina. Di contro, KSM si attiva solo quando la RAM comincia ad avere un utilizzo importante (computazionalmente non è economicissimo) ed è comunque da considerarsi, a mio avviso, qualcosa di "emergenza". Si pensi ad un aggiornamento di una delle macchine virtuali: tutti i software che si aggiornano saranno diversi dagli altri e il KSM non si applicherà ad essi, andando ad aumentare di colpo e drasticamente le risorse richieste rispetto all'equilibrio precedente.

Proxmox, l'utilizzo e le funzionalità

Dopo essersi installato in maniera semplice, sarà semplice anche metterlo in funziona. Al primo avvio ci si troverà di fronte ad una schermata di login con scritto l'indirizzo IP della macchina e l'url di accesso all'interfaccia web. Infatti Proxmox si gestisce quasi integralmente da una comoda interfaccia web, che si è evoluta nel corso della versione 4.x, e consente di fare tutte le operazioni di gestione e buona parte delle operazioni di configurazione e messa in funzione.

/images/Proxmox_interfaccia.thumbnail.png

Sarà dunque necessario accedere alla stessa per iniziare ad esplorare tutto ciò che questo ottimo sistema ci mette a disposizione.

Come detto già in precedenza, Proxmox mette insieme strumenti preesistenti Open Source e crea una comodissima interfaccia di gestione e monitorizzazione. Nello specifico, ci fornisce due strade principali:

  • L'opzione container: era OpenVZ fino alla 4.0, ora invece rimpiazzato da lxc. Il tipo di isolamento fornito da lxc è la base anche di Docker, di cui ho già brevemente parlato, ed è adatta a soluzioni che non richiedono l'installazione di un diverso sistema operativo (alias: lxc permette di usare Linux su Linux)
  • L'opzione virtualizzatore, la cui scelta è ovviamente caduta su KVM, principe dei virtualizzatori su GNU/Linux e con ampio supporto di sistemi operativi Guest e relativi driver virtualizzati Virtio.

OpenVZ era un bel progetto ma, oggi, meno interessante di qualche anno fa. Ne ho fatto largo uso circa 10 anni fa, ma poi l'obsolescenza del kernel in uso e varie altre ragioni mi spinsero verso altri lidi. lxc, invece, l'ho utilizzato con successo fino al 2015 in alcune realtà. Non ho smesso per motivi specifici, semplicemente non mi è più servito e ho optato sempre di più per virtualizzazione completa o, più recentemente, container (Docker) puri.

Tutta la gestione delle VM (o dei container lxc) avviene via web. Sarà dunque possibile creare macchine, lanciarle, agganciare e sganciare dispositivi e lettori virtuali, modificarne le risorse, gestire lo storage, aprire delle console virtuali sia dentro la schermata principali che in un tab separato, ecc.

Proxmox, i cluster

Proxmox supporta in maniera nativa la possibilità di creare dei cluster. Per cluster si intende una serie di server fisici che verranno raggruppati, all'interno dell'interfaccia web, in un "Datacenter" e che possono interagire tra di loro. Si potrà, ad esempio, creare uno storage condiviso (NFS, Gluster, Ceph, ecc.) per migrare a caldo le singole VM da un server fisico all'altro, creare una infrastruttura in Alta Affidabilità (HA) con rilancio automatico delle VM in caso di guasto o down di uno dei nodi fisici.

Si potrà inoltre, da interfaccia, gestire la creazione di uno storage replicato e ridondato Ceph (di cui faccio larghissimo uso in molte delle infrastrutture che gestisco, anche inter-datacenter), controllarne lo stato, aggiungere e rimuovere dischi, ecc.

Un cluster Proxmox andrebbe gestito sempre con numeri di macchine dispari (numero minimo: 3) per assicurare una consistenza ed evitare lo split brain, ovvero che si creino due cluster paralleli e indipendenti che si ignorano.

Proxmox, i backup

Poche soluzioni di virtualizzazione integrate offrono un sistema di backup interno. Proxmox, invece, ha un sistema completo e affidabile già pronto all'uso. Selezionando quali VM salvare, la frequenza, quanti backup tenere e lo storage di riferimento, sarà possibile configurare un sistema automatico di salvataggio a orari prestabiliti e ricevere una e-mail in caso di problemi (oppure, a scelta, sempre).

Il vantaggio di questa soluzione è la totale integrazione con Proxmox stesso. Ripristinare da un backup sarà un gioco da ragazzi, questione di due click (scegliendo se si vuole sovrascrivere la macchina attualmente in produzione o crearne una nuova, parallela). L'unico svantaggio, non da poco, è che tutti i backup sono sempre completi. Sarà dunque necessaria una importante quantità di spazio (e di tempo) per i salvataggi, oppure l'implementazione di sistemi diversi, tra cui l'ottimo Urbackup (di cui non ho ancora parlato).

Proxmox, uno sguardo d'insieme

Utilizziamo Proxmox in produzione da anni, in setup diversificati (da semplici setup un server locale/molte VM a cluster di server ridondati georeplicati su file system condivisi come Gluster o Ceph, in HA), e non siamo mai rimasti delusi. Se ben implementato e configurato, è in grado di fornire ottime prestazioni, una stabilità invidiabile, un giusto utilizzo di risorse e una perfetta gestibilità sia per l'Amministratore con esperienza, sia per l'utente medio che dovrà appunto occuparsi solo delle funzioni base.

Abbiamo oltre 50 nodi fisici proxmox e centinaia di macchine virtuali. Non abbiamo mai avuto un down, un crash o un problema derivato da esso e le funzioni di snapshot, backup integrato, clonazione a caldo di vm (es: per testare un aggiornamento senza toccare la macchina di produzione), ecc. hanno aiutato nella gestione di un parco macchine abbastanza importante come quello che gestiamo quotidianamente.

Usiamo Proxmox, gli storage ridondati e i sistemi di HA per gestire le infrastrutture di alcune tra le più importanti web agency presenti nel nostro Paese e i clienti sono sempre rimasti soddisfatti dei risultati.

Nel complesso, dopo aver provato varie soluzioni diverse in passato e testato varie soluzioni in evoluzioni del presente, Proxmox è ad oggi probabilmente ciò che coniuga meglio la stabilità, la semplicità di utilizzo e di aggiornamento e la versatilità.

Commenti