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:
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.
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 convim /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”.
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:
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à:
a questo punto si potrà cliccare su “Upload”, a caricamento terminato, si visualizzerà la ISO caricata come in figura:
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:
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.
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)
Sezione: “OS”
selezionare “Linux 4.X/3.X/2.6 Kernel”
Sezione: “CD/DVD”
espandere tendina “ISO image:”
Selezionare la ISO precedentemente caricata (ad esempio: “fuss-server-jessie-amd64-201705221525.iso”)
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)
Sezione: “CPU”
Socket: pari al numero di processori della macchina, vedi istruzioni al punto 4.2
Cores: 1
Sezione: “Memory”
Memory (MB) : RAM della macchina, scegliere in base alle indicazioni del punto 4.2
Togliere il “flag” alla funzione “Ballooning”
Sezione: “Network”
Bridge = vmbr0
Model = VirtIO (paravirtualized)
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:
Selezionare la VM, ad esempio “100(fuss-server-01)”
Selezionare in alto a destra il tasto “>__Console”
Scegliere “Start”
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.
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.
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”:
e poi selezionando “guidato, usa l’intero disco e imposta LVM”:
ed a questo punto di dovrà ripetere la scelta del disco e dell’uso dei filesystem separati, e confermare la configurazione di LVM:
ed infine confermare prima le modifiche del disco:
e poi la formattazione finale:
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