
Negli articoli precedenti, abbiamo iniziato a discutere cosa sia Proxmox VE e come funziona. Oggi parleremo di come utilizzare la funzione di clusterizzazione e dei vantaggi che offre.
Cos'è un cluster e a cosa serve? Un cluster (dall'inglese cluster) è un gruppo di server collegati tramite canali di comunicazione ad alta velocità, che lavorano e si presentano all'utente come un'unica entità. Esistono diversi scenari principali per l'utilizzo di un cluster:
- Garantire l'alta disponibilità (High-availability).
- Bilanciamento del carico (Bilanciamento del carico).
- Aumentare le prestazioni (High Performance).
- Esecuzione di calcoli distribuiti (Distributed computing).
Ogni scenario presenta requisiti specifici per i componenti del cluster. Ad esempio, per un cluster che esegue calcoli distribuiti, il requisito principale è l'alta velocità di esecuzione delle operazioni in virgola mobile e la bassa latenza della rete. Tali cluster sono spesso utilizzati per scopi di ricerca scientifica.
Dal momento che abbiamo toccato il tema dei calcoli distribuiti, è importante sottolineare che esiste anche il concetto di sistema grid (dall'inglese grid — griglia, rete). Nonostante la somiglianza generale, non bisogna confondere il sistema grid con un cluster. Una griglia non è un cluster nel senso tradizionale. A differenza di un cluster, i nodi all'interno di una griglia sono solitamente eterogenei e presentano una bassa disponibilità. Questo approccio semplifica la risoluzione di problemi di calcolo distribuito, ma non consente di creare un'unità coesa dai nodi.
Un esempio emblematico di sistema grid è la popolare piattaforma di calcolo (Berkeley Open Infrastructure for Network Computing). Questa piattaforma è stata originariamente creata per il progetto (Search for Extra-Terrestrial Intelligence at Home), che si occupa della ricerca di intelligenza extraterrestre attraverso l'analisi dei segnali radio.
Come funzionaUn'enorme quantità di dati ricevuti dai radiotelescopi viene suddivisa in numerosi piccoli pezzi e inviati ai nodi del sistema grid (nel progetto SETI@home, i computer dei volontari ricoprono il ruolo di tali nodi). I dati vengono elaborati sui nodi e, al termine dell'elaborazione, vengono inviati al server centrale del progetto SETI. In questo modo, il progetto affronta una complessa sfida globale, senza avere a disposizione le necessarie capacità di calcolo.
Ora che abbiamo una chiara comprensione di cosa sia un cluster, vediamo come crearlo e utilizzarlo. Utilizzeremo un sistema di virtualizzazione open-source. .
È particolarmente importante, prima di iniziare a creare un cluster, avere chiara consapevolezza delle limitazioni e dei requisiti di sistema di Proxmox, ovvero:
- il numero massimo di nodi nel cluster è di 32;
- tutti i nodi devono avere la stessa versione di Proxmox (ci sono eccezioni, ma non sono consigliate per production);
- se in futuro si prevede di utilizzare la funzionalità di High Availability, nel cluster devono esserci almeno 3 nodi;
- per l'interazione tra i nodi devono essere aperte le porte UDP/5404, UDP/5405 per corosync e TCP/22 per SSH;
- la latenza in rete tra i nodi non deve superare 2 ms.
Creazione del cluster
Importante! La configurazione qui sotto è quella di un test. Non dimenticate di fare riferimento a Proxmox VE.
Per avviare un cluster di test, abbiamo utilizzato tre server con hypervisor Proxmox installato, tutti con la stessa configurazione (2 nuclei, 2 GB di RAM).
Se desiderate sapere come installare Proxmox, vi consigliamo di leggere il nostro articolo precedente — .
Inizialmente, dopo l'installazione del sistema operativo, il server singolo funziona in modalità Standalone.

Creiamo un cluster premendo il pulsante Crea Cluster nella sezione corrispondente.

Diamo un nome al futuro cluster e selezioniamo la connessione di rete attiva.

Facciamo clic sul pulsante Crea. Il server genererà una chiave a 2048 bit e la registrerà insieme ai parametri del nuovo cluster nei file di configurazione.

La scritta TASK OK indica il successo dell'operazione. Ora, guardando le informazioni generali sul sistema, si può notare che il server è passato in modalità cluster. Finora il cluster consiste di una sola nodo, il che significa che non ha ancora le funzionalità per cui è necessario un cluster.

Collegamento al cluster
Prima di connettersi al cluster creato, dobbiamo ottenere le informazioni necessarie per effettuare la connessione. A tal fine, entreremo nella sezione Cluster e facciamo clic sul pulsante Informazioni di Collegamento.

Nella finestra che si apre, ci interessa il contenuto del campo con lo stesso nome. Questo dovremo copiarlo.

Qui sono codificati tutti i parametri di connessione necessari: l'indirizzo del server per la connessione e l'impronta digitale. Passiamo al server da includere nel cluster. Clicchiamo sul pulsante Entra nel Cluster e nella finestra che si apre incolliamo il contenuto copiato.

Campi Indirizzo Peer e Fingerprint saranno riempiti automaticamente. Inseriamo la password root per il nodo numero 1, scegliamo la connessione di rete e clicchiamo sul pulsante Entra.

Durante il processo di connessione al cluster, la pagina web GUI potrebbe smettere di aggiornarsi. È normale, basta ricaricare la pagina. Aggiungiamo un altro nodo nello stesso modo e alla fine otteniamo un cluster completo di 3 nodi funzionanti.

Ora possiamo controllare tutti i nodi del cluster da un'unica interfaccia grafica.

Organizzazione dell'High Availability
Proxmox supporta ‘out of the box’ la funzionalità di organizzazione HA sia per le macchine virtuali che per i contenitori LXC. L'utility ha-manager rileva e gestisce errori e guasti, effettuando il failover da un nodo guasto a uno funzionante. Affinché il meccanismo funzioni correttamente, è necessario che le macchine virtuali e i contenitori condividano uno storage comune.
Dopo l'attivazione della funzionalità High Availability, il software ha-manager inizierà a monitorare continuamente lo stato della macchina virtuale o del container e interagirà in modo asincrono con gli altri nodi del cluster.
Colleghiamo lo storage condiviso
Per esempio, abbiamo distribuito un piccolo storage NFS all'indirizzo 192.168.88.18. Affinché tutti i nodi del cluster possano utilizzarlo, è necessario seguire le seguenti operazioni.
Selezioniamo nel menu dell'interfaccia web Datacenter — Storage — Aggiungi — NFS.

Compilare i campi ID e Server. Dal menu a discesa Esportazione selezioniamo la directory desiderata tra quelle disponibili e nella lista Contenuti — i tipi di dati necessari. Dopo aver premuto il pulsante Add lo storage sarà collegato a tutti i nodi del cluster.

Durante la creazione di macchine virtuali e container su uno qualsiasi dei nodi, indichiamo il nostro storage come storage.
Configuriamo HA
Per esempio, creiamo un container con Ubuntu 18.04 e configuriamo per esso la High Availability. Dopo aver creato e avviato il container, accediamo alla sezione Datacenter — HA — Aggiungi. Nel campo aperto, indichiamo l'ID della macchina virtuale/container e il numero massimo di tentativi di riavvio e spostamento tra i nodi.
Se questo numero viene superato, l'hypervisor contrassegnerà la VM come guasta e la porterà in stato di Errore, dopo di che smetterà di eseguire qualsiasi azione su di essa.

Dopo aver premuto il pulsante Add utilità ha-manager informerà tutti i nodi del cluster che ora la VM con l'ID specificato è controllata e, in caso di guasto, deve essere riavviata su un altro nodo.

Generiamo un guasto
Per vedere come funziona il meccanismo di failover, spegneremo il node1 per mancanza di energia. Osserviamo da un altro nodo cosa succede al cluster. Vediamo che il sistema ha registrato il guasto.

Il funzionamento del meccanismo HA non implica la continuità del lavoro della VM. Non appena il nodo "è andato giù", il lavoro della VM si ferma temporaneamente fino al riavvio automatico su un altro nodo.
E qui inizia la "magia": il cluster ha automaticamente riassegnato un nodo per eseguire la nostra VM e, entro 120 secondi, il lavoro è stato ripristinato automaticamente.

Spegniamo il node2 per mancanza di energia. Vediamo se il cluster reggerà e se la VM torna automaticamente in stato operativo.

Purtroppo, come vediamo, abbiamo riscontrato un problema: sull'unico nodo rimasto attivo non c'è più quorum, il che disattiva automaticamente la funzione HA. Diamo il comando di forza per stabilire il quorum nella console.
pvecm si aspettava 1 
Dopo 2 minuti il meccanismo HA ha funzionato correttamente e, non trovando node2, ha avviato la nostra VM su node3.

Non appena abbiamo riacceso node1 e node2, il funzionamento del cluster è stato completamente ripristinato. Si noti che la VM non migra autonomamente su node1, ma può essere trasferita manualmente.
Tiriamo le somme
Vi abbiamo informato su come funziona il meccanismo di clustering in Proxmox e vi abbiamo mostrato come configurare l'HA per macchine virtuali e contenitori. Un uso corretto del clustering e dell'HA aumenta significativamente l'affidabilità dell'infrastruttura e garantisce il ripristino dopo i guasti.
Prima di creare un cluster, è necessario pianificare fin da subito quali obiettivi avrà e quanto dovrà essere scalato in futuro. Inoltre, è importante verificare che l'infrastruttura di rete sia pronta a lavorare con latenze minime, affinché il cluster futuro funzioni senza problemi.
Fateci sapere — utilizzate le funzionalità di clustering in Proxmox? Vi aspettiamo nei commenti.
Articoli precedenti sul hypervisor Proxmox VE:
Fonte: habr.com
