KoaVM
Pagine della guida

Guida · Per gli amministratori

Alta affidabilità

Se un nodo si spegne di colpo (guasto, kernel bloccato, alimentazione), le sue VPS restano ferme finché il nodo non torna. Con l'alta affidabilità le VPS protette ripartono su un altro nodo, il nodo di riserva, dall'ultima copia dei loro dischi, con lo stesso IP. Si perdono al massimo i dati scritti dopo l'ultima copia.

Quali VPS sono protette

  • Dal piano: in Clienti e piani, opzione Alta affidabilità del piano. Vale per tutte le VPS del piano, anche quelle già create.
  • Sulla VPS: nella pagina della VPS, riquadro Alta affidabilità › Impostazioni: come il piano, sì o no. La scelta sulla VPS vince su quella del piano.

Si proteggono solo le VPS sui nodi KoaVM con ZFS, sul pool predefinito del nodo. Le VPS dei fornitori (Hetzner Cloud, Contabo…) no: le gestisce il fornitore.

L'elenco delle VPS mostra uno scudo accanto alle VPS protette: verde se la copia è pronta, arancione se è in preparazione o in ritardo. Il cliente vede nella sua VPS se è protetta e quanti minuti di dati può perdere al massimo, niente altro.

Il nodo di riserva

Lo sceglie il pannello, in quest'ordine:

  1. un nodo dove l'IP della VPS può seguirla: lo stesso blocco di IP collegato ai due nodi (per esempio una vRack, in Rete e IP), oppure un IP del fornitore che il pannello sposta con l'API (per esempio gli IP failover di OVHcloud). Valgono anche l'IPv6 e gli IP aggiuntivi;
  2. un nodo raggiungibile, non in manutenzione, con ZFS;
  3. con posto: RAM, vCPU e disco con l'overbooking del nodo, contando anche le altre VPS protette dello stesso nodo che ripartirebbero lì insieme, e lo spazio di tutte le copie che il nodo tiene;
  4. nella stessa città, se c'è; poi lo stesso blocco prima dello spostamento dell'IP (che aggiunge 1–3 minuti), poi il più libero.

Se nessun nodo va bene la VPS non è protetta e il riquadro dice perché (di solito: il blocco dell'IP non è collegato a nessun altro nodo). Una VPS non riparte mai con un IP diverso: non sarebbe raggiungibile finché il cliente non cambia i suoi DNS, quindi non sarebbe davvero protetta.

Il nodo di riserva si cambia dalle Impostazioni del riquadro (l'elenco dice perché gli altri nodi non vanno bene). Cambiando nodo la copia riparte da capo.

La copia continua

Ogni N minuti (di serie 10, in Alta affidabilità › Impostazioni) il pannello fa uno snapshot ZFS di tutti i dischi della VPS nello stesso istante e manda al nodo di riserva solo i blocchi cambiati dall'ultima copia, passando da sé come la replica dei backup. La prima copia è completa.

  • Sul nodo di riserva la copia sta in <pool>/koavm-ha/vps-<id>-g<N>, fuori da Incus: non c'è nessuna istanza ferma che qualcuno possa accendere per sbaglio. Si tengono le ultime 2 copie.
  • Sul nodo della VPS resta solo lo snapshot dell'ultima copia (@koavm-ha-…): occupa lo spazio dei blocchi cambiati da allora.
  • La copia è come uno spegnimento improvviso: i dati sono quelli scritti su disco in quell'istante (i database moderni ripartono senza problemi, come dopo un'interruzione di corrente).
  • Al massimo 2 copie insieme in tutto il pannello. Mentre sulla VPS c'è un lavoro che cambia i dischi (reinstallazione, ripristino, dischi, spostamento) la copia aspetta; con gli altri lavori (accensione, rete…) continua. Un ripristino di snapshot o di backup fa ripartire la copia da capo; dopo l'aggiunta o la rimozione di un disco la copia si rifà subito.
  • Se l'ultima copia è più vecchia di 3 intervalli arriva un avviso (gruppo VPS), con lo spazio occupato dagli snapshot sul nodo della VPS. Se le copie non riescono da 24 ore, o se quello spazio supera un quarto dei dischi della VPS (almeno 5 GB), il pannello toglie lo snapshot dell'ultima copia dal nodo della VPS: la copia sul nodo di riserva resta valida e la copia dopo è completa.
  • Se la VPS non si può più proteggere (per esempio passa su un pool non predefinito), se il nodo di riserva viene tolto o non va più bene, o se non risponde da più di 6 ore, la copia sul nodo di riserva non vale più: il pannello la toglie e ne sceglie un altro.

Il riquadro della VPS mostra nodo di riserva, ultima copia, quanto si può perdere e lo spazio della copia; Copia adesso la fa subito.

Quando un nodo è spento davvero

Il pannello controlla i nodi ogni 15 secondi. Decide che un nodo è spento solo se tutte queste cose sono vere:

  1. il pannello non raggiunge l'API di Incus del nodo da almeno N minuti (di serie 3), contati da quando il pannello è acceso;
  2. il pannello non raggiunge nemmeno la porta SSH del nodo: se risponde, il server è acceso (Incus può essersi fermato con le VM ancora accese) e non si fa niente;
  3. il pannello raggiunge gli altri nodi: se non ne vede nessuno, o se non risponde più della metà dei nodi, il problema è il pannello o la sua rete e non si fa niente;
  4. almeno un altro nodo, interrogato via SSH, conferma che non lo raggiunge più: porte 8443 e SSH, ping e, se ci sono le reti private, le stesse prove attraverso il tunnel WireGuard e il suo ultimo handshake. Se anche un solo nodo lo vede ancora, non si fa niente.

Un nodo in manutenzione non fa mai ripartire niente da solo.

Il controllo incrociato

Un altro nodo che «non lo vede» conta come conferma solo se prima lo vedeva. Ogni 20 minuti, mentre i nodi rispondono, il pannello fa una prova di base: ogni nodo prova a raggiungere i nodi con VPS protette e il pannello si segna con quali metodi ci riesce. Quando un nodo non risponde, la risposta di un altro nodo vale solo se nella prova di base lo vedeva e adesso prova di nuovo tutti quei metodi senza riuscirci. Così un firewall fra i nodi, una porta chiusa o un comando mancante sul nodo (timeout, ping, wg) non sembrano un nodo spento. Senza una prova di base valida (meno di 24 ore) il nodo resta non confermato e niente riparte da solo.

Nella pagina Alta affidabilità ogni nodo con VPS protette dice chi lo vede e con cosa. Se non lo vede nessuno, apri fra i nodi la porta 8443 (TCP) e il ping, oppure collega i nodi con le reti private (il tunnel passa i firewall). I nodi preparati dal pannello aprono già la 8443 agli altri nodi del pannello che c'erano in quel momento (con ufw o firewalld); per i nodi aggiunti dopo apri la porta a mano sui nodi di prima.

Automatico o con la tua conferma

In Alta affidabilità › Impostazioni:

  • Avvisa e aspetta la conferma (di serie): arriva l'avviso «Nodo spento» e le VPS ripartono quando premi Fai ripartire nella pagina Alta affidabilità. È il modo di serie perché il pannello non può spegnere un server da solo (niente IPMI): se il nodo fosse solo staccato dalla rete e tornasse, per qualche secondo potrebbero girare due copie della stessa VPS. Controlla dal pannello del fornitore che il server sia spento (o spegnilo tu), poi conferma.
  • Automatico: le VPS ripartono da sole appena il nodo risulta spento. Passaci dopo aver provato la HA con Passa al nodo di riserva e aver controllato che gli IP seguono le VPS. Una VPS con l'ultima copia più vecchia di 3 intervalli rispetto al guasto non riparte da sola: aspetta la tua conferma (si perderebbero più dati del previsto).

Se il pannello non è sicuro (nodo non confermato, un altro nodo lo vede ancora, pannello isolato) puoi far ripartire lo stesso le VPS spuntando Ho controllato: il nodo è spento. Finite le ripartenze, Fai ripartire si può ripetere per le VPS rimaste sul nodo spento (per esempio quando si è liberato posto o dopo un errore).

La ripartenza

Le VPS ripartono in ordine di priorità (alta, normale, bassa: si sceglie nelle impostazioni della VPS) finché c'è posto sul loro nodo di riserva (RAM con l'overbooking e RAM usata davvero; in emergenza le vCPU non bloccano). Quelle che non ci stanno restano ferme e ricevi un avviso.

Per ogni VPS il pannello: ferma la copia in corso, crea sul nodo di riserva l'istanza con la configurazione salvata all'ultima copia (stesso instance-id di cloud-init, quindi niente primo avvio rifatto; le VPS più vecchie che non ce l'hanno usano il nome, che resta lo stesso), mette i dischi della copia al posto dei suoi (istantaneo), solo allora sposta l'IP del fornitore se serve, aggiorna database, firewall e reti private, la accende se era accesa e, se gateway o MAC sono cambiati, sistema la rete dentro la VPS con l'agente (come lo spostamento tra nodi). I dischi aggiuntivi sono quelli dell'ultima copia: un disco aggiunto dopo resta nella copia vecchia (il lavoro lo dice). Se qualcosa va storto prima del passaggio, i dischi tornano nella copia, l'istanza nuova si cancella e l'IP torna dov'era (se il fornitore non risponde, lo rimette il pannello quando il nodo torna). Se scegli Email al cliente, il cliente riceve un'email con quanti minuti di dati possono mancare.

Poi la VPS si riprotegge da sola su un altro nodo; se non ce n'è un altro, quando il nodo spento torna.

Il recinto: le VPS non si riaccendono da sole

Le VPS protette hanno boot.autostart=false sul nodo: un nodo che si riaccende non le riaccende da solo (Incus di solito riaccende le VM che erano accese). Le riaccende il pannello, se erano accese quando il nodo si è spento e non sono ripartite altrove. Dopo un riavvio normale del nodo le VPS protette ripartono quindi con qualche decina di secondi di ritardo, e solo se il pannello è acceso.

Quando un nodo spento torna, il pannello per prima cosa sistema le copie vecchie delle VPS ripartite altrove, appena il nodo risponde: le spegne tutte insieme, poi toglie le schede di rete (e maschera quella del profilo di Incus), le rinomina (vps-12-old-…, anche i dischi aggiuntivi) e le tiene 7 giorni, poi le cancella. Dentro ci sono i dati scritti dopo l'ultima copia: per recuperarli collega il disco a una VPS di servizio sul nodo. Le trovi in Alta affidabilità › Copie vecchie (con Cancella ora). Se la VPS si riprotegge verso quel nodo, la copia vecchia fa da base: sul nodo si copia in locale e dalla rete passano solo le differenze.

Passa al nodo di riserva

Dalla pagina della VPS, Passa al nodo di riserva sposta la VPS sul suo nodo di riserva senza perdere dati: copia a VPS accesa, spegnimento, ultima copia (secondi), accensione sul nodo di riserva. Poi la protezione si gira: il nodo di prima diventa la riserva, partendo dai dischi che ha già. Serve per le manutenzioni di un nodo e per provare l'alta affidabilità prima di passare al modo automatico. Una VPS con degli snapshot non passa (gli snapshot non stanno nella copia): usa lo spostamento tra nodi, che li porta con sé, oppure cancellali prima.

Soccorso, file dai backup e dischi cresciuti

  • Modalità di soccorso: le copie continuano anche mentre la VPS è nel sistema di soccorso (si copia il disco della VPS, mai quello di soccorso). Se il nodo si spegne, la VPS riparte sul nodo di riserva normale, con il suo sistema (accesa se lo era il sistema di soccorso o la VPS prima del soccorso): il soccorso si chiude e il cliente può riaprirlo. Il disco di soccorso resta sul nodo di prima e lo cancella il pannello quando il nodo torna.
  • File dai backup: la copia del backup collegata alla VPS non va nella copia di alta affidabilità. Con una ripartenza la sessione dei file si chiude (si riapre in un clic); la copia del backup sul nodo di prima la cancella il pannello quando il nodo torna. Nessuna uscita automatica e nessun avviso della modalità di soccorso o dei file dai backup dopo la ripartenza.
  • Passa al nodo di riserva non parte finché la VPS è in soccorso o ha una sessione dei file aperta: il disco di soccorso e la copia del backup sono sul nodo di adesso. Esci dal soccorso o chiudi la sessione, poi ripeti.
  • Disco principale cresciuto a VPS accesa (cambio di piano): la VPS riparte con la dimensione del pannello; se l'ultima copia era più piccola il disco cresce sul nodo di riserva (la partizione la allarga il sistema all'avvio, o il cliente) e il lavoro lo dice. I limiti di CPU e disco valgono sul nodo nuovo pochi secondi dopo la ripartenza.

Prima di riavviare un nodo

Per una manutenzione programmata metti il nodo in manutenzione (niente ripartenze automatiche) oppure passa prima le sue VPS ai nodi di riserva. Un riavvio che dura più dei minuti di attesa con il modo automatico farebbe ripartire le VPS altrove (con la perdita degli ultimi minuti).

Cosa non protegge

  • i dati scritti dopo l'ultima copia (al massimo l'intervallo di copia più la durata della copia);
  • gli errori dentro la VPS (file cancellati, sistema rotto, virus): per quelli servono snapshot e backup;
  • due guasti insieme: il nodo e il suo nodo di riserva, o più della metà dei nodi;
  • le VPS dei fornitori, quelle su un pool diverso dal predefinito, i nodi senza ZFS;
  • gli snapshot della VPS: dopo una ripartenza restano solo sulla copia vecchia;
  • le schede di rete aggiunte a mano fuori dal pannello e le ISO collegate (non ci sono sul nodo di riserva);
  • le VPS con la rete configurata a mano (o Windows) se sul nodo di riserva cambia il gateway: non si proteggono.

API

PUT /api/v1/vps/{id}/ha con protect ("" come il piano, "on", "off"), reserve_id (0 = lo sceglie il pannello) e priority (0 bassa, 1 normale, 2 alta): per vendere l'alta affidabilità come opzione dalla fatturazione. GET /api/v1/vps/{id} restituisce lo stato in ha.