NFS Server · 7 min read · Jan 30, 2026

Server NFS ad Alta Disponibilità Utilizzando DRBD e Heartbeat su Debian 5.0 (Lenny)

Server NFS ad Alta Disponibilità Utilizzando DRBD e Heartbeat su Debian 5.0 (Lenny)

Questo HowTo spiega come ho configurato un server NFS ad alta disponibilità utilizzando Debian 5 (Lenny) e drbd8 con heartbeat.

Ho fatto questa configurazione qualche giorno fa. Solo per divertimento. Quindi ho pensato che fosse una buona idea documentarlo.

Autore - Vishal Sharma
Creato - 9 marzo 2010
Versione - 1.0

Dichiarazione di non responsabilità - Questo HowTo è fornito così com’è e non viene fornita alcuna garanzia di alcun tipo. Usalo a tuo rischio. Questi passaggi hanno funzionato per me. Quindi probabilmente, dovrebbero funzionare anche per te. In caso di problemi, sentiti libero di lasciare i tuoi commenti qui sotto. Cercherò di affrontarli il prima possibile.

Ecco un riepilogo di cosa devi fare:

Passo 1. Fai la preparazione del tuo sistema. Questo comporta la configurazione dell’hardware e del software di base. (Questo non è coperto come parte di questo HowTo.)

Passo 2. Configura gli indirizzi IP necessari.

Passo 3. Installa i pacchetti necessari.

Passo 4. Modifica i file di configurazione pertinenti.

Passo 5. Avvia il tuo sistema.

Passo 6. Testalo per assicurarti che funzioni effettivamente.

PASSO 1. Preparazione del tuo Sistema

Sto utilizzando 3 sistemi Debian per questo. Tutti sono un’installazione standard predefinita. Tuttavia, ho apportato una modifica per avviare il mio sistema in modalità testo. Poiché non ho un hardware così potente sulla mia macchina, preferisco giocare con la riga di comando.

Ogni sistema ha una rete integrata. Di solito nei sistemi di produzione, questo potrebbe non essere il caso. Ma poiché il mio è solo un’installazione di prova, non mi sono preoccupato di aggiungere componenti che offrirebbero prestazioni migliori.

Se non vuoi dedicare un box, puoi sempre utilizzare Sun VirtualBox per questo e avere la tua configurazione. È molto più facile in questo modo, poiché ti offre il vantaggio di prendere istantanee del sistema prima di apportare modifiche significative alla configurazione.

La mia configurazione di prova qui è basata su 2 server e un client. Nel mio scenario, questo sistema client è solo un normale client NFS che monta condivisioni dal server NFS. La mia configurazione qui è Attiva/Passiva e NON Attiva/Attiva. Quindi, in qualsiasi momento, se il tuo sistema attivo fallisce, il sistema passivo prenderà il controllo.

Su server01 e server02, ho 2 partizioni, ovvero

/dev/hdb1 - 500GB - che sarà montato come /data.

/dev/hdc1 - 500MB - questo memorizzerà i metadati di drbd. Ha bisogno di un minimo di 128MB.

Assicurati di non montare nessuna di queste partizioni. Questo sarà gestito da drbd. Assicurati di creare solo le partizioni e lasciarle così come sono. Nessun formato, nessun montaggio per ora.

PASSO 2. Configura gli indirizzi IP necessari

Ecco come ho nominato i miei sistemi:

server01 - 192.168.1.2/24 (eth0)

server02 - 192.168.1.3/24 (eth0)

client01 - 192.168.1.4/24 (eth0)

Assicurati di avere le voci sopra nel tuo file /etc/hosts in modo che la risoluzione dei nomi non sia un problema. Questa è probabilmente la migliore opzione e non vorresti entrare nel fastidio di configurare un server DNS per questo.

192.168.1.5/24 sarebbe il mio indirizzo IP virtuale fluttuante. Questo è l’indirizzo che sarà visto dal mondo esterno e fluttuerà da sistema a sistema man mano che il loro stato cambia.

Il mio gateway predefinito è 192.168.1.1/24, che è il mio router. Avrei bisogno di accesso a Internet per installare i pacchetti.

Passo 3. Installa i pacchetti necessari

La cosa più importante affinché il cluster HA funzioni bene è - L’ORA. L’ora sui sistemi dovrebbe essere la stessa. Per assicurarti di ciò, assicurati di avere i pacchetti ntp installati.

server01# apt-get install ntp ntpdate

Esegui quanto sopra su server01 e server02.

Sui server, cioè server01 e server02, avrai bisogno dei seguenti pacchetti installati per avviarti e funzionare.

drbd8, file di intestazione del kernel, installazione del server nfs e heartbeat. Quindi ecco cosa ho fatto.

server01# apt-get update
server01# apt-get install linux-headers-`uname -r` drbd8-utils drbd8-source heartbeat nfs-kernel-server

(Quanto sopra dovrebbe richiedere un po’ di tempo per completare.)

Dopo che l’installazione è completata, crea il modulo del kernel drbd utilizzando il seguente comando:

server01# m-a a-i drbd8-source

Questo eseguirà una compilazione e creerà il modulo del kernel drbd.

server01# modprobe drbd
server01# lsmod | grep drbd

(Dovrebbe mostrarti qualcosa, se non ti dà nulla, allora c’è qualche problema da risolvere.)

Disabilita l’avvio di nfs all’avvio. Questo è fatto perché l’avvio e lo spegnimento di nfs sono gestiti da drbd e non vogliamo che il sistema interferisca.

server01# update-rc.d -f nfs-kernel-server remove
server01# update-rc.d -f nfs-common remove

Esegui gli stessi passaggi anche su server02.

Passo 4. Crea / Modifica i file di configurazione pertinenti

Questi sono i file che devi modificare su server01 e server02.

Per gestire le esportazioni NFS - /etc/exports - (su server01 e server02):

/data/export 192.168.1.0/255.255.255.0(rw)

Per la configurazione di drbd - /etc/drbd.conf (su server01 e server02):

global {
usage-count yes;
}
common {
  syncer { rate 10M; }
}

resource r0 {
  protocol C;
  handlers {
    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
  }

  startup {
    degr-wfc-timeout 120;    # 2 minuti.
  }

  disk {
    on-io-error   detach;
  }

  net {
  }

  syncer {
    rate 10M;
    al-extents 257;
  }

on server01 {
    device /dev/drbd0;
    disk /dev/hdb1;
    address 192.168.1.2:7788;
    meta-disk /dev/hdc1[0];
  }

on server02 {
    device /dev/drbd0;
    disk /dev/hdb1;
    address 192.168.1.3:7788;
    meta-disk /dev/hdc1[0];
  }
}

Per heartbeat - /etc/ha.d/ha.cf - (su server01 e server02):

logfacility local0
keepalive 1
deadtime 10
bcast eth1
auto_failback on
node server01 server02

Imposta l’autenticazione heartbeat - /etc/heartbeat/authkeys - (su server01 e server02):

auth 3
3 md5 your_password

Invece di usare md5, puoi anche usare sha1. Non dimenticare di rendere questo file leggibile/scrivibile solo per root.

chmod 600 /etc/heartbeat/authkeys 

(Su server01 e server02.)

Per rendere la risorsa ha disponibile - /etc/ha.d/haresources - (su server01 e server02):

server01 IPaddr::192.168.1.100
server01 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server

(NOTA: per server02, nel file haresources, devi aver notato che ho usato lo stesso nome host, cioè server01. Questo è per assicurarti che quando server01 è disponibile online, server02 restituirà il controllo a esso e diventerà secondario. Si prega di apportare la modifica del nome host sopra a server02, se si desidera che rimanga come primario.)

Dopo aver fatto tutto quanto sopra, dai questi comandi per inizializzare il disco meta di drbd (su server01 e server02):

server01# drbdadm create-md r0 

( r0 questo è il nome della risorsa.)

server01# drbdadm up all

Fai un

cat /proc/drbd 

su server01 e server02 e vedrai che sia server01 che server02 sono in Modalità Secondaria e sono inconsistenti. È abbastanza ovvio, perché non abbiamo ancora configurato il sistema nfs e non abbiamo definito quale sistema sarà il server primario. Nel mio caso è server01. Quindi darò i seguenti comandi su server01:

server01# drbdsetup /dev/drbd0 primary -o
server01# mkfs.ext3 /dev/drbd0
server01# mkdir /data
server01# mount -t ext3 /dev/drbd0 /data

Per impostazione predefinita, il server nfs memorizza il suo stato di montaggio e i blocchi sotto /var/lib/nfs e vogliamo che questo venga mantenuto in caso di failover. Quindi fai questo su server01:

server01# mv /var/lib/nfs/ /data/
server01# ln -s /data/nfs/ /var/lib/nfs
server01# mkdir /data/export
server01# umount /data
server01# cat /proc/drbd  

<— Guardalo attentamente e noterai che server01 è ora il sistema primario.

Esegui questi comandi su server02, per prepararlo a prendere il controllo in caso di guasto.

mkdir /data
rm -fr /var/lib/nfs
ln -s /data/nfs /var/lib/nfs

Hmm… questo è praticamente tutto. Hai finito dal punto di vista della configurazione. Ora vai avanti e accendi i tuoi sistemi.

Passo 5. Avviare il tuo sistema

Avvia i servizi necessari su server01 e server02:

/etc/init.d/drbd start
/etc/init.d/heartbeat start

Dopo che quanto sopra è stato completato con successo, noterai che server01 avrà un IP aggiuntivo - 192.168.1.100 e /data è montato. Puoi anche controllare il file /proc/drbd per lo stato in tempo reale.

Su server02 non dovresti vedere 192.168.1.100 e /data.

tail -f /var/log/messages

e guarda il divertimento.

Passo 6. Testarlo per assicurarti che funzioni effettivamente

Il modo migliore per testarlo è farlo nel modo reale e difficile. Semplicemente spegni server01 e guarda come server02 prende il controllo. Guarda i log di takeover su server02. :)

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.