Ceph è un sistema di ar­chi­via­zio­ne di­stri­bui­to che si integra per­fet­ta­men­te in Proxmox e offre una soluzione di ar­chi­via­zio­ne ad alta di­spo­ni­bi­li­tà e a prova di guasto. In questa guida scoprirai come in­stal­la­re un cluster Ceph sul tuo server Proxmox.

Primo passaggio: verifica i pre­re­qui­si­ti

Prima di iniziare con l’in­stal­la­zio­ne di Ceph su Proxmox, dovresti as­si­cu­rar­ti che il tuo ambiente soddisfi i requisiti di base. Ceph è un sistema di ar­chi­via­zio­ne che replica i dati su più server. Per fare in modo che questa ri­don­dan­za funzioni in modo af­fi­da­bi­le, hai bisogno di almeno tre nodi Proxmox. Il sistema può così con­ti­nua­re a operare anche se un nodo causa un errore.

As­si­cu­ra­ti inoltre che l’in­stal­la­zio­ne bare metal di Proxmox sia stata com­ple­ta­ta su tutti i server e che Proxmox sia ag­gior­na­to. Ogni nodo dovrebbe disporre di un disco rigido dedicato e non uti­liz­za­to, previsto esclu­si­va­men­te per gli OSD di Ceph. Queste unità co­sti­tui­ran­no in seguito lo spazio di ar­chi­via­zio­ne vero e proprio del tuo cluster. È al­tret­tan­to im­por­tan­te una con­nes­sio­ne di rete veloce e stabile tra i nodi, per mantenere bassa la latenza. Inoltre, ti serve l’accesso root su tutti gli host, poiché l’in­stal­la­zio­ne richiede modifiche di sistema.

Verifica con il seguente comando quale versione di Proxmox è at­tual­men­te in­stal­la­ta sul tuo sistema:

pveversion
bash

Confronta i numeri di versione su tutti i nodi. Se ci sono dif­fe­ren­ze o la tua in­stal­la­zio­ne non è più ag­gior­na­ta, esegui un ag­gior­na­men­to per portare tutti i sistemi allo stesso stato:

apt update && apt full-upgrade -y
reboot
bash

Dopo che tutti i nodi sono stati ag­gior­na­ti e sono rag­giun­gi­bi­li, il tuo ambiente è pronto per l’in­stal­la­zio­ne di Ceph.

N.B.

Anche se non si tratta di un requisito ob­bli­ga­to­rio, per l’uso pro­dut­ti­vo di Ceph su Proxmox dovresti uti­liz­za­re SSD. Ceph trae grande vantaggio da accessi di lettura e scrittura rapidi, poiché ogni set di dati viene replicato più volte e di­stri­bui­to su più nodi.

Server dedicati
Per­for­man­ce e in­no­va­zio­ne
  • Pro­ces­so­ri al­l'a­van­guar­dia di ultima ge­ne­ra­zio­ne
  • Hardware dedicato ad alte pre­sta­zio­ni
  • Data center cer­ti­fi­ca­ti ISO

Secondo passaggio: attiva il re­po­si­to­ry Ceph

Per poter in­stal­la­re Ceph co­mo­da­men­te tramite la gestione pacchetti, devi prima attivare il re­po­si­to­ry ap­pro­pria­to su ciascuno dei tuoi nodi Proxmox. Questo re­po­si­to­ry contiene tutti i pacchetti Ceph necessari, ap­po­si­ta­men­te adattati e testati da Proxmox. A tal fine, accedi come utente root su ogni host ed esegui il seguente comando:

pveceph install
bash

Questo comando configura au­to­ma­ti­ca­men­te il re­po­si­to­ry Ceph ufficiale di Proxmox e installa i com­po­nen­ti di base di Ceph. Affinché anche le nuove sorgenti dei pacchetti diventino attive, aggiorna l’elenco dei pacchetti con:

apt update
bash

Terzo passaggio: ini­zia­liz­za Ceph sul primo nodo

Nel terzo passaggio viene preparato il vero e proprio cluster Ceph sul tuo primo nodo Proxmox. Definisci la rete su cui avviene la co­mu­ni­ca­zio­ne del cluster e configuri così il primo co­sid­det­to monitor. Questo monitor è un com­po­nen­te centrale di Ceph: controlla lo stato del cluster, ne gestisce i membri e ga­ran­ti­sce che tutti i com­po­nen­ti abbiano sempre le stesse in­for­ma­zio­ni.

Avvia l’ini­zia­liz­za­zio­ne sul primo host Proxmox con il seguente comando:

pveceph init --network 10.0.0.0/24
bash

La sottorete 10.0.0.0/24 è solo un esempio. Usa la rete interna tramite cui i tuoi nodi Proxmox sono collegati di­ret­ta­men­te tra loro. Con pveceph init viene creata la con­fi­gu­ra­zio­ne di base di Ceph sul tuo primo nodo. In questo modo Proxmox crea, tra l’altro, il file di con­fi­gu­ra­zio­ne centrale del cluster, il keyring di Ceph ne­ces­sa­rio per l’au­ten­ti­ca­zio­ne all’interno del cluster, nonché le directory di sistema ne­ces­sa­rie per i servizi Ceph.

Una volta com­ple­ta­ta l’ini­zia­liz­za­zio­ne, puoi con­fi­gu­ra­re il primo servizio di monitor:

pveceph createmon
bash

Questo comando avvia il processo monitor e lo registra nel cluster. Da questo momento esiste un nodo Ceph fun­zio­nan­te, ma ancora autonomo. Il monitor inizia a rac­co­glie­re in­for­ma­zio­ni di stato e getta così le basi per la suc­ces­si­va co­mu­ni­ca­zio­ne con altri nodi.

N.B.

In un cluster Ceph, in genere, si uti­liz­za­no almeno tre monitor. Ciò comporta il vantaggio che il cluster può con­ti­nua­re a fun­zio­na­re anche se un monitor si guasta. Solo quando sono presenti più monitor, Ceph può rag­giun­ge­re il co­sid­det­to stato di quorum. Si tratta di una mag­gio­ran­za in grado di prendere decisioni sullo stato del cluster.

Quarto passaggio: aggiungi altri nodi al cluster

Per fare in modo che Ceph offra la tol­le­ran­za ai guasti de­si­de­ra­ta, ora devi ag­giun­ge­re al cluster Ceph gli altri nodi Proxmox. Ogni nodo ag­giun­ti­vo apporta ri­don­dan­za e capacità di ar­chi­via­zio­ne. A tal fine accedi agli altri nodi ed esegui lì, uno dopo l’altro, i seguenti comandi:

pveceph install
pveceph createmon
bash

In questo modo configuri anche sugli altri host i monitor. Non appena tutti i monitor sono attivi, puoi ve­ri­fi­ca­re lo stato del cluster su qualsiasi nodo uti­liz­zan­do il seguente comando:

ceph -s
bash

L’output ti mostra quali monitor e servizi sono at­tual­men­te in ese­cu­zio­ne. Se lì sono elencati più monitor, hai integrato cor­ret­ta­men­te tutti i nodi.

Quinto passaggio: creare gli OSD

Gli OSD (Object Storage Daemon) sono il cuore del tuo cluster Ceph. Ogni disco rigido che utilizzi per Ceph diventa una propria unità OSD. Questi demoni sono re­spon­sa­bi­li di scrivere i dati sulle unità, re­pli­car­li e renderli nuo­va­men­te di­spo­ni­bi­li quando vengono richiesti da un altro nodo o da una macchina virtuale. Più OSD possiede il tuo cluster, maggiore saranno sia la capacità di ar­chi­via­zio­ne sia le pre­sta­zio­ni. Prima di iniziare la con­fi­gu­ra­zio­ne, dovresti ve­ri­fi­ca­re quali unità sono di­spo­ni­bi­li sul tuo nodo. Puoi farlo con il seguente comando:

lsblk
bash

L’output ti mostra tutti i dischi rigidi e le par­ti­zio­ni ri­co­no­sciu­ti dal sistema. As­si­cu­ra­ti di usare per Ceph solo unità non uti­liz­za­te. Accedi solo alle unità che non con­ten­go­no il sistema operativo e non sono montate. Una volta in­di­vi­dua­ta un’unità adatta, nel nostro caso /dev/sdb, puoi ini­zia­liz­zar­la come OSD:

pveceph createosd /dev/sdb
bash

In questo modo l’unità viene for­mat­ta­ta au­to­ma­ti­ca­men­te e Ceph configura la struttura ne­ces­sa­ria. Suc­ces­si­va­men­te il demone OSD viene avviato e integrato nel cluster. Tutti i dati presenti sull’unità se­le­zio­na­ta verranno eliminati. As­si­cu­ra­ti quindi che il disco sia davvero destinato esclu­si­va­men­te a Ceph.

Ripeti questa procedura su tutti i nodi e per tutte le unità che desideri integrare nel tuo spazio di ar­chi­via­zio­ne Ceph su Proxmox. A seconda delle di­men­sio­ni del cluster e dell’hardware, po­treb­be­ro volerci alcuni minuti prima che tutti gli OSD vengano integrati com­ple­ta­men­te.

Verifica quindi che gli OSD appena con­fi­gu­ra­ti siano stati rilevati cor­ret­ta­men­te e siano attivi. A tal fine, utilizza il seguente comando:

ceph osd tree
bash

Grazie alla chiara struttura ad albero, puoi vedere fa­cil­men­te come i tuoi di­spo­si­ti­vi di ar­chi­via­zio­ne sono di­stri­bui­ti nel cluster e se fun­zio­na­no senza errori.

Sesto passaggio: attiva Ceph Manager e la dashboard

Per poter mo­ni­to­ra­re e gestire co­mo­da­men­te il tuo cluster Ceph su Proxmox, installa ora Ceph Manager (in breve, MGR). Questo servizio raccoglie dati sulle pre­sta­zio­ni, monitora tutti i com­po­nen­ti attivi e mette a di­spo­si­zio­ne funzioni ag­giun­ti­ve tramite vari moduli. Tra queste funzioni c’è anche la dashboard web integrata. Installa il servizio Manager sul tuo nodo Proxmox con il seguente comando da terminale:

pveceph createmgr
bash

Una volta che il manager è attivo, puoi attivare il modulo dashboard. Viene fornito au­to­ma­ti­ca­men­te dal servizio MGR e deve solo essere abilitato:

ceph mgr module enable dashboard
bash

La dashboard offre un’in­ter­fac­cia intuitiva con cui puoi vi­sua­liz­za­re lo stato del tuo cluster, mo­ni­to­ra­re l’utilizzo degli OSD e dei monitor, nonché in­di­vi­dua­re di­ret­ta­men­te gli avvisi. Accedivi tramite il tuo browser e la porta standard 8443:

https://<PROXMOX_IP>:8443

So­sti­tui­sci PROXMOX_IP con l’indirizzo IP del nodo Proxmox su cui è stato in­stal­la­to Ceph Manager.

Settimo passaggio: crea e testa i pool Ceph

Dopo che il tuo cluster Ceph è stato con­fi­gu­ra­to cor­ret­ta­men­te e tutti gli OSD sono attivi, puoi creare l’area di ar­chi­via­zio­ne vera e propria in cui in seguito verranno salvati i tuoi dati. Ceph organizza i dati in pool. Un pool è un’unità logica in cui Ceph memorizza i tuoi file, le immagini disco o i volumi dei container. Ogni pool è composto da numerosi Placement Group, che di­stri­bui­sco­no i dati sui singoli OSD e ga­ran­ti­sco­no una di­stri­bu­zio­ne uniforme del carico. Con i pool sta­bi­li­sci quindi come e dove Ceph salva i tuoi dati. In base alle tue esigenze puoi, ad esempio, creare un pool per le macchine virtuali e un altro per backup o immagini dei container.

Per creare un nuovo pool, esegui il seguente comando su uno dei tuoi nodi Proxmox:

pveceph pool create cephpool --size 3 --min_size 2 --pg_num 128
bash

Nel nostro esempio viene creato un pool con il nome cephpool. I parametri indicano come Ceph deve gestire i tuoi dati:

  • --size 3 significa che ogni file viene replicato tre volte. Questo ga­ran­ti­sce tol­le­ran­za ai guasti: se un OSD si guasta, sono comunque di­spo­ni­bi­li due copie.
  • --min_size 2 sta­bi­li­sce che devono essere attive almeno due copie affinché il pool sia con­si­de­ra­to fun­zio­nan­te. In questo modo si evita che Ceph lavori con dati in­com­ple­ti.
  • --pg_num 128 definisce il numero di Placement Group, cioè i con­te­ni­to­ri logici dei dati in cui Ceph suddivide in­ter­na­men­te i tuoi dati. Più OSD hai, più questo valore può essere alto, per di­stri­bui­re i dati in modo uniforme.
N.B.

Il numero di Placement Group che definisci durante la creazione di un pool Ceph non può più essere ridotto in un secondo momento. Puoi au­men­tar­lo se il cluster cresce, ma una riduzione non è prevista tec­ni­ca­men­te, perché può com­por­ta­re una perdita di dati. Per questo, pianifica fin dall’inizio un numero di PG suf­fi­cien­te. Come regola pratica: 100 PG per OSD nel pool sono un buon valore di partenza per ambienti piccoli o medi.

Dopo aver creato il pool, puoi ve­ri­fi­ca­re che tutto funzioni cor­ret­ta­men­te.

ceph -s
bash

Nell’output vedi lo stato attuale del tuo cluster Ceph. Se compare l’in­di­ca­zio­ne HEALTH_OK, significa che il pool è stato con­fi­gu­ra­to cor­ret­ta­men­te e che il tuo cluster Ceph su Proxmox funziona in modo stabile.

Consiglio

Un cluster Ceph ga­ran­ti­sce ri­don­dan­za, ma non so­sti­tui­sce i backup. Per un vero backup dei dati in ambienti Proxmox si consiglia un server di backup Proxmox. In questo modo vengono con­sen­ti­ti backup de­du­pli­ca­ti e cifrati delle tue VM e dei container, anche se si trovano su spazi di ar­chi­via­zio­ne Ceph.

Ottavo passaggio: integra lo spazio di ar­chi­via­zio­ne Ceph su Proxmox

Dopo aver con­fi­gu­ra­to il tuo cluster Ceph e creato il primo pool, come ultimo passaggio devi in­te­grar­lo in Proxmox, in modo che le tue macchine virtuali e i container possano uti­liz­za­re lo spazio di ar­chi­via­zio­ne. A questo scopo Proxmox usa il pro­to­col­lo RBD. L’in­te­gra­zio­ne è più semplice tramite la relativa in­ter­fac­cia grafica. Apri quindi l’in­ter­fac­cia web e nel menu vai a “Da­ta­cen­ter > Storage > Add > RBD (Ceph)”.

Nella seguente finestra di dialogo inserisci i dati di con­nes­sio­ne necessari al tuo cluster Ceph su Proxmox.

  • In ID inserisci un nome univoco per la nuova de­sti­na­zio­ne di ar­chi­via­zio­ne.
  • Nella sezione Monitor inserisci gli indirizzi IP dei tuoi Ceph-MON. Si tratta degli indirizzi dei nodi su cui sono in ese­cu­zio­ne i servizi di monitor. Separa più indirizzi con virgole, ad esempio 10.0.0.11,10.0.0.12,10.0.0.13.
  • Nel campo Pool indica il nome del pool Ceph creato in pre­ce­den­za, ad esempio cephpool.
  • Come nome utente puoi in genere usare admin.
  • Il keyring viene compilato au­to­ma­ti­ca­men­te, perché Proxmox legge dalla tua con­fi­gu­ra­zio­ne Ceph la chiave di au­ten­ti­ca­zio­ne ne­ces­sa­ria.
N.B.

Se pre­fe­ri­sci lavorare da riga di comando, puoi eseguire la stessa procedura anche con un unico comando:

pvesm add rbd ceph-storage --monhost <mon1,mon2,mon3> --pool cephpool --content images
bash

So­sti­tui­sci <mon1,mon2,mon3> con gli indirizzi IP dei tuoi nodi monitor.

Una volta aggiunto lo spazio di ar­chi­via­zio­ne, questo compare nell’in­ter­fac­cia di Proxmox. Ora puoi se­le­zio­nar­lo di­ret­ta­men­te come de­sti­na­zio­ne per le macchine virtuali. Da questo momento Proxmox usa Ceph come spazio di ar­chi­via­zio­ne. Ciò significa che tutte le VM che crei su questo spazio di ar­chi­via­zio­ne be­ne­fi­cia­no au­to­ma­ti­ca­men­te della ri­don­dan­za e della tol­le­ran­za ai guasti del cluster Ceph.

Consiglio

Se in seguito desideri gestire un cluster Ku­ber­ne­tes su Proxmox, l’in­te­gra­zio­ne di Ceph su Proxmox risulta par­ti­co­lar­men­te van­tag­gio­sa. Ceph può infatti essere uti­liz­za­to in modo tra­spa­ren­te come spazio di ar­chi­via­zio­ne per­si­sten­te per Ku­ber­ne­tes. In questo modo, i tuoi container be­ne­fi­cia­no della stessa ri­don­dan­za e alta di­spo­ni­bi­li­tà delle tue macchine virtuali.

Vai al menu prin­ci­pa­le