Differenze tra le versioni di "Sistemi informatici"
(Abbozzata descrizione dell'infrastruttura) |
|||
Riga 24: | Riga 24: | ||
= Server locale - cassiopea = | = Server locale - cassiopea = | ||
− | Sul server locale di officina è installato il gestore di macchine virtuali e container [https://www.proxmox.com/en/ Proxmox]. | + | Sul server locale di officina è installato il gestore di macchine virtuali e container [https://www.proxmox.com/en/ Proxmox], su cui sono installate le seguenti macchine (VM e container). |
− | + | ||
− | Dovrà essere operata una migrazione da VM a LXC per ridurre i consumi di risorse. | + | '''<code>vpntest</code>''' |
+ | |||
+ | LXC. Ambiente di test per la VPN | ||
+ | |||
+ | '''<code>backupper</code>''' | ||
+ | |||
+ | LXC. Fa i backup. | ||
+ | |||
+ | Un crontab esegue periodicamente lo script <code>argilla</code> (vedere [https://git.golem.linux.it/ git] se sei autorizzato), il quale: | ||
+ | * si collega in ssh agli host specificati | ||
+ | * spegne temporaneamente i container dei servizi associati | ||
+ | * esegue un backup dei volumi via rete, scaricandoli in una directory dedicata | ||
+ | * riavvia i container | ||
+ | |||
+ | Note importanti: | ||
+ | * Durante il backup, il servizio interessato dal backup non è raggiungibile. | ||
+ | * Per limitare disservizi, i backup vengono eseguiti durante le ore notturne. | ||
+ | * Lo spazio disco sul VPS è una risorsa limitata. Per evitare di sprecarla con i `tar.gz` temporanei dei backup, il backup viene eseguito direttamente "al volo" su <code>backupper</code> tramite un tunnel ssh, anche se questa procedura aumenta il tempo di downtime. | ||
+ | * I backup vengono eseguiti con frequenza settimanale. | ||
+ | * I backup risiedono fisicamente in officina. | ||
+ | |||
+ | Il backup di tutti i volumi relativi ai container di un servizio: | ||
+ | * hanno per nome <code>$SERVIZIO-$DATETIME.tar.gz</code> | ||
+ | * hanno la struttura directory <code>/srv/$SERVIZIO</code> | ||
+ | |||
+ | Per ripristinare un backup, è sufficiente prendere il suo tar.gz, e scompattarlo nella root. | ||
+ | |||
+ | cd / | ||
+ | tar xf /backups/path/$SERVIZIO-$DATETIME.tar.gz</code> | ||
+ | |||
+ | Possibili miglioramenti: usare un playbook ansible. | ||
+ | |||
+ | '''<code>vupiuesse</code>''' | ||
+ | |||
+ | VM. Replica le condizioni di lavoro del VPS, e costituisce principalmente il suo ambiente di test. | ||
+ | Dovrà essere operata una migrazione da VM a LXC per ridurre i consumi di risorse, in particolare la RAM. | ||
+ | |||
+ | Su <code>vupiuesse</code> risiedono anche altri servizi con requisiti speciali. | ||
+ | * <code>gestionaledb</code>: libro soci, vedere anche [https://git.golem.linux.it/golem/gestionale]. Requisito speciale: i dati personali dei soci non devono risiedere in cloud. | ||
+ | * <code>pubblici</code>: archivio storico con fotografie e filmati. Requisito speciale: occupa molto spazio disco (decine di GiB), ma può tollerare eventuali downtime dell'officina. | ||
+ | |||
+ | '''<code>pezzalcloud</code>''' | ||
+ | |||
+ | LXC. Storage aggiuntivo per l'archivio del cloud. | ||
+ | |||
+ | '''<code>servirtualozzo</code>''' | ||
+ | |||
+ | LXC. Backup di <code>serverozzo</code>. | ||
+ | |||
+ | Contiene un backup del disco del precedente server d'officina, da cui fare cherry pick delle configurazioni quando necessario. | ||
== Docker su LXC Proxmox == | == Docker su LXC Proxmox == |
Versione delle 12:42, 15 nov 2022
In questa pagina è riassunta la documentazione relativa agli strumenti informatici del GOLEM (server, gestione delle macchine virtuali, router, ...). Deve fungere da collante fra le varie pagine di documentazione già esistenti, così da avere una visione d'insieme della struttura, ma anche da punto di partenza per le bozze di documentazione.
Questa pagina è strettamente legata a Servizi, che riassume in maniera più user friendly i servizi disponibili ai soci e ospitati dalla seguente infrastruttura.
VPS - atena
Documentare i punti mancanti marcati da TODO
Il VPS ospita buona parte dei Servizi del GOLEM accessibili al pubblico (sito web, repository git, ...). L'approccio scelto è quello a microservizi, in cui ogni servizio è suddiviso in uno o più container (basati su docker). (TODO)
Fanno eccezione:
- La gestione del DNS tramite bind (TODO);
- La VPN del GOLEM basata su openVPN;
- Il tunnel IPv6;
- Il proxy HTTP basato su
apache
(TODO); - Il sistema di backup? (TODO).
Server locale - cassiopea
Sul server locale di officina è installato il gestore di macchine virtuali e container Proxmox, su cui sono installate le seguenti macchine (VM e container).
vpntest
LXC. Ambiente di test per la VPN
backupper
LXC. Fa i backup.
Un crontab esegue periodicamente lo script argilla
(vedere git se sei autorizzato), il quale:
- si collega in ssh agli host specificati
- spegne temporaneamente i container dei servizi associati
- esegue un backup dei volumi via rete, scaricandoli in una directory dedicata
- riavvia i container
Note importanti:
- Durante il backup, il servizio interessato dal backup non è raggiungibile.
- Per limitare disservizi, i backup vengono eseguiti durante le ore notturne.
- Lo spazio disco sul VPS è una risorsa limitata. Per evitare di sprecarla con i `tar.gz` temporanei dei backup, il backup viene eseguito direttamente "al volo" su
backupper
tramite un tunnel ssh, anche se questa procedura aumenta il tempo di downtime. - I backup vengono eseguiti con frequenza settimanale.
- I backup risiedono fisicamente in officina.
Il backup di tutti i volumi relativi ai container di un servizio:
- hanno per nome
$SERVIZIO-$DATETIME.tar.gz
- hanno la struttura directory
/srv/$SERVIZIO
Per ripristinare un backup, è sufficiente prendere il suo tar.gz, e scompattarlo nella root.
cd / tar xf /backups/path/$SERVIZIO-$DATETIME.tar.gz
Possibili miglioramenti: usare un playbook ansible.
vupiuesse
VM. Replica le condizioni di lavoro del VPS, e costituisce principalmente il suo ambiente di test. Dovrà essere operata una migrazione da VM a LXC per ridurre i consumi di risorse, in particolare la RAM.
Su vupiuesse
risiedono anche altri servizi con requisiti speciali.
gestionaledb
: libro soci, vedere anche [1]. Requisito speciale: i dati personali dei soci non devono risiedere in cloud.pubblici
: archivio storico con fotografie e filmati. Requisito speciale: occupa molto spazio disco (decine di GiB), ma può tollerare eventuali downtime dell'officina.
pezzalcloud
LXC. Storage aggiuntivo per l'archivio del cloud.
servirtualozzo
LXC. Backup di serverozzo
.
Contiene un backup del disco del precedente server d'officina, da cui fare cherry pick delle configurazioni quando necessario.
Docker su LXC Proxmox
Creazione e configurazione del container
- Aprire il tool di creazione di un LXC;
- Lasciare selezionati i flag "unprivileged container" e "nesting";
- Selezionare l'immagine LXC preferita (es. turnkey-core);
- Mountpoints:
- Lasciare il rootfs di default;
- Aggiungere un nuovo mountpoint
/var/lib/docker/
da esculdere dai backup di Proxmox. Servirà per i file di sistema di docker (immagini, log, etc). Questi vengono ricreati automaticamente, quindi non ha senso che sia backuppato. Dimensione ~ decine di GB; - Aggiungere un nuovo mountpoint
/srv/docker
da includere nei backup. Dimensione ~ decine di GB. Memorizzerà i file "utente" utilizzati nei container.
- Al termine della creazione del container, entrare sulle opzioni e abilitare keyctl nelle features.
Installazione di docker
Informazioni riprese dalla guida ufficiale
- Aggiornare il sistema
# apt update && apt upgrade
- Installare le dipendenze
# apt install ca-certificates curl gnupg lsb-release
- Aggiungere il repository docker
# mkdir -p /etc/apt/keyrings # curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg # echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
- Installare docker
# apt update # apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Buone prassi
Come sul VPS, è sempre bene esplicitare la posizione dei volumi su cui deve essere fatto il backup. Posizionare i volumi in /srv/docker/nome-container/
.