Openfiler · 5 min read · Jan 31, 2026

Installazione e Configurazione di Openfiler con DRBD e Heartbeat

Installazione e Configurazione di Openfiler con DRBD e Heartbeat

Introduzione

Openfiler è un sistema operativo ad alte prestazioni progettato per essere utilizzato come appliance SAN/NAS. Questa configurazione consentirà a due appliance Openfiler di lavorare in uno scenario di alta disponibilità Active/Passive.

Requisiti

Hardware

  • 2 x box che soddisfano le specifiche minime delle specifiche hardware di Openfiler.
  • 2 x interfacce ethernet in ciascuna box
  • Supporto di installazione di Openfiler 2.3.
  • Entrambe le box dovrebbero avere dischi della stessa dimensione in ciascuna per evitare incoerenze nella replica.

Software

Installare Openfiler 2.3 su entrambe le box utilizzando una configurazione del disco come la seguente:

  • 3 GB partizione root (“/”)
  • 2 GB partizione “swap”
  • 512 MB partizione “/meta” (utilizzata per DRBD0)
  • Partizione dati configurata come LVM non montato (utilizzata per DRBD1)

Configurazione

Rete

Ogni appliance Openfiler avrà due NIC: una per comunicare con la LAN, l’altra per comunicare con l’altra SAN (tramite cavo diretto). La prima sarà utilizzata per l’amministrazione, per comunicare direttamente con ciascun nodo.

Una terza interfaccia “virtuale” è utilizzata dal servizio heartbeat e sarà quella utilizzata dai computer sulla LAN.

Di seguito è ciò che viene utilizzato:

filer01

  • Interfaccia LAN (eth0) 192.168.1.18
  • Interfaccia di replicazione (eth1) 10.188.188.1

filer02

  • Interfaccia LAN (eth0) 192.168.1.19
  • Interfaccia di replicazione (eth1) 10.188.188.2

Indirizzo HA NAS/SAN (eth0) 192.168.1.17

  • Questo è configurato nel file cluster.xml (non tentare di configurare altrove)

Configurazione del Nome Host

Per consentire a entrambi i nodi di riconoscersi a vicenda per nome, configurare il file hosts su ciascun computer.
Modificare il nostro /etc/hosts (su filer01):

# Non rimuovere la seguente riga, o vari programmi
# che richiedono funzionalità di rete falliranno.
127.0.0.1 filer01 localhost.localdomain localhost
10.188.188.2 filer02

Modificare il nostro /etc/hosts (su filer02):

# Non rimuovere la seguente riga, o vari programmi
# che richiedono funzionalità di rete falliranno.
127.0.0.1 filer02 localhost.localdomain localhost
10.188.188.1 filer01

Chiavi SSH Condivise

Per consentire alle due appliance Openfiler di comunicare tra loro senza dover utilizzare una password, utilizzare chiavi SSH condivise.

Su filer01:

  root@filer01 ~# ssh-keygen -t dsa

Premere invio ai prompt (non impostare una password sulla chiave).

Su filer02:

  root@filer02 ~# ssh-keygen -t dsa

Premere invio ai prompt (non impostare una password sulla chiave).

Il comando sopra genererà un file chiamato “id_dsa.pub” in ~/.ssh/, che è la chiave pubblica che dovrà essere copiata all’altro nodo:

root@filer01 ~# scp .ssh/id_dsa.pub root@filer02:~/.ssh/authorized_keys2
root@filer02 ~# scp .ssh/id_dsa.pub root@filer01:~/.ssh/authorized_keys2

Configurare DRBD

DRBD è ciò che manterrà i dati tra i due nodi coerenti.

Su filer01:

  root@filer01 ~# mv /etc/drbd.conf /etc/drbd.conf.org

Quindi modificare drbd.conf (versione 8) secondo quanto segue:

global {
 # minor-count 64;
 # dialog-refresh 5; # 5 secondi
 # disable-ip-verification;
 usage-count ask;
}

common {
 syncer { rate 100M; }
}

resource cluster_metadata {
 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";
  # outdate-peer "/usr/sbin/drbd-peer-outdater";
 }
 
 startup {
  # wfc-timeout 0;
  degr-wfc-timeout 120; # 2 minuti.
 }

 disk {
  on-io-error detach;
 }

 net {
  after-sb-0pri disconnect;
  after-sb-1pri disconnect;
  after-sb-2pri disconnect;
  rr-conflict disconnect;
 }

 syncer {
  # rate 10M;
  # after "r2";
  al-extents 257;
 }

 on filer01 {
  device /dev/drbd0;
  disk /dev/sda3;
  address 10.188.188.1:7788;
  meta-disk internal;
 }

 on filer02 {
  device /dev/drbd0;
  disk /dev/sda3;
  address 10.188.188.2:7788;
  meta-disk internal;
 }
}

resource vg0drbd {
 protocol C;
 startup {
  wfc-timeout 0; ## Infinito!
  degr-wfc-timeout 120; ## 2 minuti.
 }

 disk {
  on-io-error detach;
 }

 net {
  # timeout 60;
  # connect-int 10;
  # ping-int 10;
  # max-buffers 2048;
  # max-epoch-size 2048;
 }

 syncer {
  after "cluster_metadata";
 }

 on filer01 {
  device /dev/drbd1;
  disk /dev/sda5;
  address 10.188.188.1:7789;
  meta-disk internal;
 }

 on filer02 {
  device /dev/drbd1;
  disk /dev/sda5;
  address 10.188.188.2:7789;
  meta-disk internal;
 }
}

Entrambi gli host necessitano dello stesso drbd.conf, quindi il file drbd.conf da filer01 sarà copiato su filer02:

  root@filer01 ~# scp /etc/drbd.conf root@filer02:/etc/drbd.conf

Inizializza i metadati su /dev/drbd0 (cluster_metadata) e /dev/drbd1 (vg0drbd) su entrambi i nodi:

root@filer01 ~# drbdadm create-md cluster_metadata
root@filer01 ~# drbdadm create-md vg0drbd
root@filer02 ~# drbdadm create-md cluster_metadata
root@filer02 ~# drbdadm create-md vg0drbd

Nota: se i comandi sopra generano errori riguardanti la necessità di azzerare il file system, utilizzare il seguente comando:

  root@filer01 ~# dd if=/dev/zero of=/dev/sda3

Fai attenzione con questo comando e assicurati che sia sul disco corretto.

Prima di avviare il servizio DRBD, assicurati che la partizione utilizzata per drbd0 (nella risorsa cluster_metadata nel file drbd.conf) non sia già montata (cosa che sarà di default se è stata creata durante l’installazione).

  root@filer01 ~# umount /dev/sda3

Ora, avvia DRBD su entrambi gli host:

root@filer01 ~# service drbd start
  root@filer02 ~# service drbd start

Se tutto va bene, dovrebbero connettersi e l’esecuzione di “service drbd status” dovrebbe presentare un output simile al seguente:

  root@filer1 /# service drbd status

drbd driver caricato correttamente; stato del dispositivo:
versione: 8.0.12 (api:86/proto:86)
GIT-hash: 5c9f89594553e32adb87d9638dce591782f947e3 compilato da phil@mescal, 2008-04-24 13:29:44
m:res cs st ds p montato fstype
0:cluster_metadata Connesso Secondario/Secondario Incoerente/Incoerente C
1:vg0drbd Connesso Secondario/Secondario Incoerente/Incoerente C

Una volta che entrambe le risorse drbd sono connesse e entrambi i nodi sono nello stato Secondario (come sopra), imposta un nodo Primario:

root@filer01 ~# drbdsetup /dev/drbd0 primary -o
root@filer01 ~# drbdsetup /dev/drbd1 primary -o

Questo dovrebbe darti un risultato di stato simile al seguente:

  root@filer1 /# service drbd status

drbd driver caricato correttamente; stato del dispositivo:
versione: 8.0.12 (api:86/proto:86)
GIT-hash: 5c9f89594553e32adb87d9638dce591782f947e3 compilato da phil@mescal, 2008-04-24 13:29:44
m:res cs st ds p montato fstype
… sincronizzato: 17.9% (247232/297152)K
0:cluster_metadata SyncSource? Primario/Secondario Aggiornato/Incoerente C
1:vg0drbd PausaSyncS? Primario/Secondario Aggiornato/Incoerente C

Nota: se il vg0drbd LVM è grande, ci vorrà molto tempo per sincronizzarlo (forse tutta la notte).

Abilita DRBD per avviarsi all’avvio:

root@filer01 ~# chkconfig –level 2345 drbd on
root@filer02 ~# chkconfig –level 2345 drbd on

Ora crea il filesystem cluster_metadata. Usa questa partizione da 512 MB per mantenere tutti i dati di configurazione di Openfiler e i dati per i servizi che dovrebbero essere disponibili in HA (es. NFS, iSCSI, SMB).

  root@filer01 ~# mkfs.ext3 /dev/drbd0

Non aggiungere questa partizione a un /etc/fstab, poiché è gestita da Heartbeat (e sarà configurata a breve).

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.