Installazione del fuss-server su Proxmox

In questa pagina si dettagliano tutti i passi da far per installare il Fuss Server su Proxmox, che sono indipendenti dal modo con cui è installato quest’ultimo, che lo si sia fatto con l’installer, o che lo si sia fatto installando prima Debian e passando poi a Proxmox.

Indicazioni generali sul collegamento all’interfaccia web

Tutte le volte che si deve fare una operazione dall’interfaccia di gestione via web di Proxmox ci si dovrà collegare all’indirizzo:

https://IP.DEL.MIO.SERVER:8006

e si otterrà una finestra di accesso come la seguente:

../_images/P-001.png

deve essere selezionato come “Realm” dal menu “Linux PAM standard authentication” e ci si potrà collegare usando le credenziali dell’utente root, inserendo root nel campo “Username” e la relativa password nel campo “Password”.

Una volta autenticati apparirà la seguente finestra di avviso per l’assenza di sottoscrizione, a cui si può dare OK senza nessun problema.

../_images/P-002.png

Configurazioni aggiuntive preliminari

Sono configurazioni da effettuare e controllare dopo l’installazione.

Sincronizzazione di data e ora

Su Proxmox 4.4 la sincronizzazione del tempo viene eseguita da systemd-timesyncd, la cui configurazione è mantenuta in /etc/systemd/timesyncd.conf, che di default è vuoto per cui vengono utilizzati i server NTP del pool Debian.

Se la macchina ha accesso ad Internet non è necessario nessun intervento ulteriore, altrimenti occorrerà modificare il file per indicare a quale server NTP rivolgersi (ad esempio ad un server NTP sulla rete interna, che potrebbe essere fornito ad esempio dal router).

In tal caso occorrerà inserire nel file suddetto un contenuto del tipo:

[Time]
Servers=IP.DEL.SERVER.NTP

Alternativamente si può installare direttamente il servizio NTP sulla macchina con:

apt-get install ntp

Di nuovo per una sincronizzazione corretta occorre impostare l’accesso ad un server NTP di riferimento, per farlo si deve:

  • aprire il file di configurazione di ntp (/etc/ntp.conf) ad esempio con vim /etc/ntp.conf

  • commentare le voci server esistenti e aggiungere l’indirizzo IP del server che si può raggiungere per sincronizzare data e ora

Un esempio del contenuto che si può modificare è il seguente:

server 0.debian.pool.ntp.org iburst
server 1.debian.pool.ntp.org iburst
server 2.debian.pool.ntp.org iburst
server 3.debian.pool.ntp.org iburst

Se la sincronizzazione di default con systemd-timesyncd non sta funzionando si deve intervenire manualmente. Per verificare che l’orologio sia sincronizzato (e verificare al contempo che il server NTP indicato sia raggiungibile) si possono eseguire i seguenti comandi:

service ntp stop
ntpdate tempo.ien.it
# sincronizza orologio al clock dell'hw
hwclock --systohc
service ntp start
date

Creazione dei bridge per le interfacce

Nell’installazione di Proxmox (o in quella di Debian) viene configurata soltanto la prima interfaccia di rete. Il Fuss Server ne usa almeno una seconda per la rete locale (supporremo sia eth1) ed eventualmente una terza per il captive portal (supporremo sia eth2). L’installazione le lascia non configurate e assumeremo questo come punto di partenza.

Per poterle utilizzare dalle macchine virtuali occorre configurare un corrispondente bridge (sarà rispettivamente vmbr1 e vmbr2. Per farlo ci si colleghi all’interfaccia web, e si acceda alla sezione di configurazione della rete con le seguenti azioni:

  • Cliccare sul Nodo (es.“server102”) nel primo pannello

  • Cliccare su “Network” nel secondo pannello

A questo punti si prema sul pulsante “Create” e dal menu si selezioni “Linux Bridge”, verrà proposta una finestra di configurazione in cui il solo campo che occorre impostare è “Bridge ports” in cui inserire il nome della relativa interfaccia (ad esempio per vmbr1 si metterà eth1 per la rete interna, per vmbr2 si metterà eth2 per il captive portal).

Nel caso della configurazione dell’interfaccia del captive portal non è opportuno configurare un indirizzo, ma si è rivelata necessaria una ulteriore configurazione specifica dell’interfaccia ethernet ad esso dedicata, per evitare rallentamenti in upload che si manifestano con alcune interfacce. Per questo motivo occorre disabilitare nell’interfaccia di rete le funzionalità di «generic segmentation offload» e «TCP segmentation offload». Questo si fa manualmente con il comando:

ethtool -K eth2 gso off gro off tso off

continuando a supporre che l’interfaccia dedicata al Captive Portal sia la eth2; si noti che la configurazione si applica all’interfaccia, non al bridge. Per rendere permanente la configurazione il comando può essere impostato aggiungendo sotto /etc/network/if-up.d/ uno script cp-iface che lo esegua, con un contenuto del tipo:

#!/bin/sh

# disable GRO, GSO and TSO from captive portal interface,
# to avoid upload slowdown

ETHTOOL=/sbin/ethtool

test -x $ETHTOOL || exit 0

[ "$IFACE" != "eth2" ] || exit 0

$ETHTOOL -K eth2 gso off gro off tso off

Per la configurazione dell’interfaccia della rete interna se si vuole raggiungere la macchina Proxmox dalla stessa occorrerà dare un indirizzo IP anche al bridge, avendo cura di inserirlo al di fuori del range che poi si utilizzerà per il DHCP del Fuss Server (ed ovviamente diverso da quello che assegneremo al Fuss Server stesso). In tal caso i campi da riempire sono:

  • IP address : mettere l’indirizzo desiderato

  • Subnet mask : mettere la subnet mask che si userà sulla rete interna

  • Gateway : deve essere lasciato vuoto

  • Bridge ports : mettere eth1

Un esempio è riportato in figura, la configurazione si finalizza premendo “Create”.

../_images/N-05.png

Per applicare la nuova configurazione della rete la macchina deve essere riavviata (si può farlo direttamente usando il pulsante “Restart” dell’interfaccia web).

Caricare sul server le immagini ISO per l’installazione delle macchine virtuali

Il caricamento può essere fatto attraverso un download diretto sul server (ad esempio con wget) o con la copia diretta del file nella directory /var/lib/vz/template/iso. I file in questa directory devono essere immagini ISO di CD/DVD di installazione.

Nel caso del Fuss Server si deve usare la più aggiornata che si scarica dal seguente indirizzo:

http://iso2.fuss.bz.it/fuss8/server/

(ad esempio “fuss-server-jessie-amd64-201705221525.iso”)

Qualora si abbia l’immagine sul proprio PC la si potrà caricare direttamente dall’interfaccia web, sullo storage “local”. Per farlo si eseguano i seguenti passi:

  • dal menù di sinistra, cliccare su “local (server)”

  • dal menù laterale selezionare “Content”

  • dal menù centrale, cliccare su “Upload”

si otterrà la seguente schermata:

../_images/P-007.png

a questo punto cliccare “Select file” e scegliere la ISO scaricata (si può anche caricare direttamente da un device esterno) ed una volta selezionata si otterrà:

../_images/P-008.png

a questo punto si potrà cliccare su “Upload”, a caricamento terminato, si visualizzerà la ISO caricata come in figura:

../_images/P-009.png

Creazione della macchina virtuale per il Fuss Server

Procedura di creazione della macchina virtuale

La creazione si attiva cliccando sul tasto “Create VM” di colore azzurro posto in alto a sinistra, cosa che farà comparire una finestra come quella in figura:

../_images/P-010.png

che prevede l’esecuzione di una serie di impostazioni di valori divise in sezioni, seguendo una successione di schermate navigabili avanti ed indietro con i pulsanti “Next” e “Back”, ed identificate da una etichetta in alto.

  1. Sezione: “General”, inserire soltanto

  • VM ID: (si può accettare il default, 100)

  • Name: un nome identificativo (ad esempio fuss-server-01; si consiglia l’uso dello stesso nome del fuss-server)

../_images/P-011.png
  1. Sezione: “OS”

  • selezionare “Linux 4.X/3.X/2.6 Kernel”

../_images/P-012.png
  1. Sezione: “CD/DVD”

  • espandere tendina “ISO image:”

  • Selezionare la ISO precedentemente caricata (ad esempio: “fuss-server-jessie-amd64-201705221525.iso”)

../_images/P-013.png
  1. Sezione: “Hard Disk”

  • Bus/Device = VirtIO

  • Storage = local-lvm

  • Disk size (GB)= dimensione del disco in GB, vedi istruzioni al punto 4.2

  • Format = Raw disk image (raw) (NON MODIFICABILE)

  • Cache = Default (No cache)

../_images/P-014.png
  1. Sezione: “CPU”

  • Socket: pari al numero di processori della macchina, vedi istruzioni al punto 4.2

  • Cores: 1

../_images/P-015.png
  1. Sezione: “Memory”

  • Memory (MB) : RAM della macchina, scegliere in base alle indicazioni del punto 4.2

  • Togliere il “flag” alla funzione “Ballooning”

../_images/P-016.png
  1. Sezione: “Network”

  • Bridge = vmbr0

  • Model = VirtIO (paravirtualized)

../_images/P-017.png

Dimensionamento per RAM, CPU e disco

Per il dimensionamento della memoria gli sviluppatori di Proxmox suggeriscono di lasciare almeno 1G della RAM totale della macchina per il sistema, si può allocare il rimanente per le macchine virtuali, per il fuss-server le esigenze effettive possono variare a seconda del numero di utenti che lo useranno.

La scelta della quantità di RAM dipende anche dall’eventuale uso della macchina fisica per ospitare altre macchine virtuali. Una buona scelta di partenza è impiegare dalla metà ai tre quarti del totale, lasciandosi un polmone di risorse per aumentare la RAM in un secondo tempo (basterà modificare il valore dall’interfaccia web e riavviare la macchina).

Per il dimensionamento della CPU si verifichi il numero di processori della macchina e si lo si indichi come numero di cores (l’uso di socket e cores è indifferente per le prestazioni, conta il totale prodotto dei due valori, la possibilità di variarli è a favore di chi ha licenze software per numero di socket, che non ci interessa).

Suggerimento

Per scoprire il numero di processori della macchina si può usare il comando top, premere 1 per visualizzare le statistiche separate per CPU e contare le righe relative presenti.

Per il dimensionamento del disco, occorre scegliere una dimensione totale assegnata alle macchine virtuali compatibile con la dimensione massima disponibile sul pool di spazio disco del volume logico data. La situazione corrente si ottiene con il comando lvs; ad esempio:

# lvs
  LV            VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data          pve  twi-aotz-- 514,06g             11,48  5,66
  local         pve  -wi-ao---- 200,00g
  root          pve  -wi-ao----  20,00g
  swap          pve  -wi-ao----   4,00g
  vm-101-disk-1 pve  Vwi-aotz-- 100,00g data        59,04

In questo esempio la dimensione assegnata al pool (logical volume data) è di 514,06 G, ed alla macchina virtuale 101 sono stati assegnati 100G. Lo spazio è aumentabile a piacere (dall’interfaccia), ma per evitare alla radice la possibilità di esaurire lo spazio su data non si superi mai una assegnazione pari al 95% della dimensione del pool (volume logico data).

Avvertimento

le percentuali Data% e Meta% fanno riferimento all’uso effettivo, sicuramente inferiore a quello massimo teorico (nel caso 100/514 ~ 20%). L’uso del pool consente il cosidetto overcommit, cioè allocare più spazio disco di quanto effettivamente disponibile, una situazione da evitare assolutamente. Infatti allocando per le macchine virtuali più spazio disco di quello disponibile, se poi questo viene esaurito, si ottiene una disastrosa perdita di dati.

Pertanto quando si crea il fuss-server, posto che non si preveda di creare nessun’altra macchina virtuale in seguito, sarà sufficiente usare un valore inferiore ai 95% della dimensione (nel caso precedente 514,06g) disponibili su data. Si ricordi che ridurre lo spazio disco allocato in eccesso all’inizio ad una macchina è sempre più complicato che non estenderlo quando risulti essere poco. Se nel volume group è ancora disponibile spazio disco (lo sarà se lo si è lasciato in fase di installazione tenendosi un “polmone” come consigliato) è comunque possibile allargare data con il comando:

lvextend -L +XXg /dev/pve/data

e poi eventualmente utilizzare lo spazio in più ottenuto.

Avviare la macchina virtuale

Una volta create la macchina virtuale, comparirà nel panello a destra, per avviarla, ed avere al contempo l’accesso alla console, si possono seguire i seguenti passi:

  1. Selezionare la VM, ad esempio “100(fuss-server-01)”

../_images/P-020.png
  1. Selezionare in alto a destra il tasto “>__Console”

../_images/P-021.png
  1. Scegliere “Start”

../_images/P-022.png

Installazione del Fuss Server

La gran parte delle opzioni di installazione del fuss-server sono già preimpostate nell’immagine ISO, la sola scelta significativa da fare in fase di installazione è il partizionamento del disco (virtuale) assegnato allo stesso.

../_images/SelezioneDisco.png

Nella scelta predefinita dopo aver selezionato il disco viene proposto direttamente il suo partizionamento. La scelta più sicura, per evitare problemi di riempimento della radice, è usare filesystem separati per /home, /var, /tmp. Questo però con il partizionamento diretto rende meno flessibile la eventuale riallocazione dello spazio disco.

../_images/SelezionePartizioni.png

Si tenga presente infatti che anche avendo disponibile spazio disco nel virtualizzatore per poter allargare il disco della macchina virtuale, l’allargamento avverrebbe sul “fondo” pertanto sarebbe facile ridimensionare soltanto l’ultima partizione (nel caso la /home, che pur essendo quella più probabile, non è detto sia davvero quella che ha bisogno dello spazio disco aggiuntivo).

Per questo si suggerisce, per avere maggiore flessibilità, al costo di una leggera perdita di prestazioni in I/O, di installare usando LVM. Questo però significa che una volta eseguita la scelta precedente, occorrerà “tornare indietro” riselezionando “partizionamento guidato”:

../_images/ScegliPartizGuidato.png

e poi selezionando “guidato, usa l’intero disco e imposta LVM”:

../_images/SceltaGuidato.png

ed a questo punto di dovrà ripetere la scelta del disco e dell’uso dei filesystem separati, e confermare la configurazione di LVM:

../_images/ConfermaScelta.png

ed infine confermare prima le modifiche del disco:

../_images/SceltaConLVM.png

e poi la formattazione finale:

../_images/SceltaFinale.png

A questo dopo un eventuale allargamento del disco della macchina virtuale sarà sufficiente allargare la partizione finale (che sarà /dev/vda5, logica) che ospita il volume fisico di LVM, estendere quest’ultimo con pvresize, ed estendere poi il filesystem che si preferisce con resize2fs (se si è usato il default di ext4).

Precauzioni post installazione di Proxmox.

Proxmox fornisce anche un suo sistema di gestione dei firewall per l’host per le macchine virtuali, ma il fuss-server ha già la sua gestione del firewall interna, pertanto il firewall di Proxmox non deve essere abilitato, perché andrebbe ad interferire.

Per proteggere il sistema della macchina fisica è sufficiente installare un semplice script di firewall che limiti gli accessi dalla rete interna alle porte 22 e 8006. In ogni caso questa non deve essere visibile direttamente da internet (l’indirizzo IP pubblico va reinoltrato, se necessario, sul fuss-server), per cui la necessità di un firewall è meno impellente.

Per le macchine che hanno controller RAID hardware si suggerisce di installare alcuni tool esterni rispetto a Debian (si verifichino i problemi di licenza) per monitorare lo stato degli stessi. Un sito che contiene vari di questi programmi, in particolare per i controller meno recenti e meno supportati, è http://hwraid.le-vert.net/. Occorrerà comunque (i programmi citati comunicano via email) definire chi riceverà le relative notifiche.

Si suggerisce inoltre di installare alcuni pacchetti ausiliari di controllo ed utilità come:

apt-get tiger etckeeper debsums molly-guard atop iotop iftop