How To: Bilanciare il traffico di rete con Slackware 13.0 (Bonding)

The AuthorcRoW2k The Time14 gennaio 2010 CommentsView Comments
separator

In azienda, ci si trova spesso a gestire macchine (worstation, servers) di non proprio ultima generazione ma che possono benissimo essere utilizzare come file servers, proxy servers ecc ecc. La necessità di garantire un funzionamento continuo è ormai fondamentale quindi gruppi di continuità, alimentatori ridondanti sono quanto meno necessari ma non da meno è il problema di congestione/disservizio della rete. In questo how-to vedrò di spiegarvi nella maniera più semplice possibile, come aggregare 2 o più schede di rete (per garantire il bilanciamento/backup del traffico) in un’unica interfaccia (bond).

Non vi sto a spiegare cos’è il Bonding, nell’articolo seguente per facilitarvi la vita, vi mostrerò l’utilizzo della modalità 2, ossia l’active-active XOR (source MAC address XOR’d with destination MAC address) che garantisce la selezione della medesima slave (scheda di rete fisica) in base alla sorgente. Viene usata per assicurare il bilanciamento del traffico e contemporaneamente la tolleranza ai guasti.

Cosa ci serve per cominciare? Innanzitutto un pc con 2 schede di rete e Slackware. Assicuratevi che il modulo mii sia tra i moduli del kernel caricati di default all’avvio (lsmod | grep mii): serve per monitorare il link delle schede di rete (con delle attuali 100Mb in su non doveste avere problemi).

Prima di passare alla creazione del file di configurazione dobbiamo compilare(creare) da un terminale l’eseguibile ifenslave (comando che serve per aggregare le slave al master), posizionandoci nella directory: /usr/src/linux/Documentation/networking e lanciando il seguente comando (dall’utente root!!!):

gcc -Wall -O -I/usr/src/linux/include ifenslave.c -o ifenslave

e copiarlo nella directory /sbin

cp ifenslave /sbin/ifenslave

Abbiamo tutto l’occorente, ora ci rimane solamente da creare gli script che caricheranno tutto il necessario al riavvio successivo: Posizioniamoci nella directory /etc/rc.d e creiamo il file rc.bond tramite il comando

touch rc.bond

e diamogli i permessi di esecuzione:

chmod 755 rc.bond

Editiamo (con nano, con pico, con vi, vedete voi) il file appena creato copiandoci il seguente contenuto (occhio al MAC Address della vostra scheda di rete) :

#!/bin/sh
#
  case "$1" in
   'start')
     echo "start bond0"
     modprobe bonding mode=balance-xor miimon=100
     modprobe tg3
     ifconfig bond0 up
     ifenslave bond0 eth0
     ifenslave bond0 eth1
     #TODO questo deve essere cambiato con il vostro MAC Address (indirizzo fisico della schede di rete)
     ifconfig bond0 hw ether 00:16:3e:aa:aa:aa
  ;;
 'stop')
   ifconfig bond0 down
   rmmod bonding
   rmmod tg3
   ;;
  *)
  echo "Usage: $0 {start|stop}"
;;
esac

Dobbiamo ora assicurarci che il file appena creato sia avviato al prossimo boot quindi andremo ad inserire nello script rc.M (presente sempre dentro la /etc/rc.d). Scrollate il file fino a trovare #Initialize the networking hardware e incollate il seguente codice nello spazio soprastante:

# If script rc.bond is executeable then start it
if [ -x /etc/rc.d/rc.bond ]; then
  . /etc/rc.d/rc.bond start
fi

Abbiamo quasi finito, è rimasto l’ultimo script da modificare, ossia l’rc.inet1.conf

N.B.: Controllate bene che nessuna interfaccia presente nel file abbia configurato ne IP statico ne indirizzo assegnato da un server DHCP

Inserite queste righe prima dell’impostazione del gateway:

IFNAME[4]="bond0"
IPADDR[4]="XXX.XX.XX.XX" <-- il vostro IP
NETMASK[4]="255.255.255.0"
USE_DHCP[4]=""
DHCP_HOSTNAME[4]=""

Riavviate il sistema !

Una volta rientrati, controllate lo stato del bond:

cat /proc/net/bonding/bond0

dovrebbe apparirvi un output simile a questo:

MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:e0:81:5e:9e:c4

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:e0:81:5e:9e:c5

Se lo stato di connessione è attivo e il sistema sta rispondendo al ping tutto dovrebbe essere a posto. È inoltre possibile monitorare lo stato di collegamento attraverso:

mii-tool –w

Alla prossima!

separator
Condividi su FriendFeed
separator
blog comments powered by Disqus
© 2010 Scrivi, interagisci, coinvolgi: ValmaBlog, Il tuo primo magazine in Valmarecchia. Powered by WordPress Designed by miniMAC

w3c Made in Mac