NFS Server · 3 min read · Nov 18, 2025

Impostare un server NFS ad alta disponibilità - Pagina 4

8 Installa e configura heartbeat

heartbeat è l’istanza di controllo di tutta questa configurazione. Sarà installato su server1 e server2, e monitora l’altro server. Ad esempio, se server1 si arresta, heartbeat su server2 lo rileva e fa prendere il controllo a server2. heartbeat avvia e ferma anche il server NFS su entrambi server1 e server2. Fornisce anche NFS come servizio virtuale tramite l’indirizzo IP 192.168.0.174 in modo che i nodi del cluster del server web vedano solo un server NFS.

Prima installiamo heartbeat:

server1/server2:

apt-get install heartbeat

Ora dobbiamo creare tre file di configurazione per heartbeat. Devono essere identici su server1 e server2!

server1/server2:

/etc/heartbeat/ha.cf:

| logfacility local0 keepalive 2 #deadtime 30 # USE THIS!!! deadtime 10 bcast eth0 node server1 server2 |

Come nomi dei nodi dobbiamo usare l’output di uname -n su server1 e server2.

server1/server2:

/etc/heartbeat/haresources:

| server1 IPaddr::192.168.0.174/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 nfs-kernel-server |

La prima parola è l’output di uname -n su server1, non importa se crei il file su server1 o server2! Dopo IPaddr mettiamo il nostro indirizzo IP virtuale 192.168.0.174, e dopo drbddisk usiamo il nome della risorsa del nostro DRBD che è r0 qui (ricorda, questo è il nome della risorsa che usiamo in /etc/drbd.conf - se usi un altro, devi usarlo anche qui).

server1/server2:

/etc/heartbeat/authkeys:

| auth 3 3 md5 somerandomstring |

somerandomstring è una password che i due demoni heartbeat su server1 e server2 usano per autenticarsi l’uno con l’altro. Usa la tua stringa qui. Hai la scelta tra tre meccanismi di autenticazione. Io uso md5 poiché è il più sicuro.

/etc/heartbeat/authkeys dovrebbe essere leggibile solo da root, quindi facciamo questo:

server1/server2:

chmod 600 /etc/heartbeat/authkeys

Infine avviamo DRBD e heartbeat su server1 e server2:

server1/server2:

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

9 Primi test

Ora possiamo fare i nostri primi test. Su server1, esegui

server1:

ifconfig

Nell’output, l’indirizzo IP virtuale 192.168.0.174 dovrebbe apparire:

| eth0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.172 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fea1:c59b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:18992 errors:0 dropped:0 overruns:0 frame:0 TX packets:24816 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2735887 (2.6 MiB) TX bytes:28119087 (26.8 MiB) Interrupt:177 Base address:0x1400 eth0:0 Link encap:Ethernet HWaddr 00:0C:29:A1:C5:9B inet addr:192.168.0.174 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:177 Base address:0x1400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:71 errors:0 dropped:0 overruns:0 frame:0 TX packets:71 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5178 (5.0 KiB) TX bytes:5178 (5.0 KiB) |

Inoltre, esegui

server1:

df -h

su server1. Dovresti vedere /data elencato lì ora:

| Filesystem Size Used Avail Use% Mounted on /dev/sda5 4.6G 430M 4.0G 10% / tmpfs 126M 0 126M 0% /dev/shm /dev/sda1 89M 11M 74M 13% /boot /dev/drbd0 24G 33M 23G 1% /data |

Se fai lo stesso

server2:

ifconfig
df -h

su server2, non dovresti vedere 192.168.0.174 e /data.

Ora creiamo un file di test in /data/export su server1 e poi simuliamo un guasto del server di server1 (fermandolo heartbeat):

server1:

touch /data/export/test1
/etc/init.d/heartbeat stop

Se esegui ifconfig e df -h su server2 ora, dovresti vedere l’indirizzo IP 192.168.0.174 e la partizione /data, e

server2:

ls -l /data/export

dovrebbe elencare il file test1 che hai creato su server1 prima. Quindi è stato replicato su server2!

Ora creiamo un altro file di test su server2 e vediamo se viene replicato su server1 quando si riaccende:

server2:

touch /data/export/test2

server1:

/etc/init.d/heartbeat start

(Attendi qualche secondo.)

ifconfig
df -h
ls -l /data/export

Dovresti vedere 192.168.0.174 e /data di nuovo su server1, il che significa che ha ripreso il controllo (perché lo abbiamo definito come primario), e dovresti anche vedere il file /data/export/test2!

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.