Perché aggregare le interfacce di rete (interface bonding)?
I due motivi importanti per creare un collegamento di interfaccia sono:
1. Per fornire una maggiore larghezza di banda
2. Per fornire ridondanza in caso di guasto hardware
Uno dei prerequisiti per configurare un bonding è avere uno switch di rete che supporti Etherchannel (il che vale per quasi tutti gli switch).
Modalità di incollaggio
A seconda delle tue esigenze, puoi impostare la modalità di incollaggio su una delle 7 modalità seguenti. La modalità di collegamento può essere impostata nel file di rete dell'interfaccia di collegamento /etc/sysconfig/network-scripts/ifcfg-bond0 come di seguito:
BONDING_OPTS="mode=active-backup miimon=250"
o
BONDING_OPTS="mode=1 miimon=250"
Modalità | Politica | Come funziona | Tolleranza ai guasti | Bilanciamento del carico |
---|---|---|---|---|
0 | Round Robin | I pacchetti vengono trasmessi/ricevuti in sequenza attraverso ciascuna interfaccia uno per uno. | No | Sì |
1 | Backup attivo | una NIC attiva mentre un'altra NIC è inattiva. Se la NIC attiva si interrompe, diventa attiva un'altra NIC. supportato solo in ambienti x86. | Sì | No |
2 | XOR [OR esclusivo] | In questa modalità, l'indirizzo MAC della NIC slave viene confrontato con il MAC della richiesta in entrata e una volta stabilita questa connessione, la stessa NIC viene utilizzata per trasmettere/ricevere per il MAC di destinazione. | Sì | Sì |
3 | Trasmissione | Tutte le trasmissioni vengono inviate a tutti gli slave | Sì | No |
4 | Aggregazione dinamica dei collegamenti | Le NIC aggregate agiscono come una NIC che si traduce in una maggiore velocità effettiva, ma fornisce anche il failover nel caso in cui una NIC si guasta. Dynamic Link Aggregation richiede uno switch che supporti IEEE 802.3ad. | Sì | Sì |
5 | Trasmissione del bilanciamento del carico (TLB) | Il traffico in uscita viene distribuito in base al carico corrente su ciascuna interfaccia slave. Il traffico in entrata viene ricevuto dallo slave corrente. Se lo slave ricevente si guasta, un altro slave assume l'indirizzo MAC dello slave guasto. | Sì | Sì |
6 | Bilanciamento del carico adattivo (ALB) | A differenza di Dynamic Link Aggregation, Adaptive Load Balancing non richiede alcuna configurazione di switch particolare. Il bilanciamento del carico adattivo è supportato solo negli ambienti x86. I pacchetti di ricezione sono bilanciati dal carico tramite la negoziazione ARP. | Sì | Sì |
Configurazione di un collegamento di interfaccia
Per questo dobbiamo creare un file /etc/sysconfig/network-scripts/ifcfg-bond0 con il contenuto di seguito:
# vi /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static ONBOOT=yes IPADDR=10.10.1.10 NETMASK=255.255.255.0 BONDING_OPTS="miimon=100"Su RHEL6, configura i parametri di legame in ifcfg-bondX invece nel file /etc/modprobe.d/bonding.conf. Il vantaggio è che questi parametri possono essere modificati per interfaccia di collegamento durante il processo di inizializzazione dell'interfaccia, piuttosto che durante il processo di inizializzazione del driver di collegamento. Vale a dire, la modifica dei parametri non richiede più la ricarica del driver di incollaggio. Questo aiuta a ridurre l'interruzione della rete a livello di sistema apportando alcune piccole modifiche alle interfacce di collegamento.
BONDING_OPTS - Specify bonding module parameters, e.g. miimon - link polling interval for fault detection (in ms)
Poiché abbiamo configurato l'interfaccia di collegamento con l'indirizzo IP e la maschera di rete, non è necessario specificarli nei singoli file delle interfacce che compongono il collegamento.
Utilizzeremmo em0 ed em1 come interfacce slave per creare l'interfaccia di legame bond0. Le righe MASTER e SLAVE definiscono le interfacce master bonding bond0 ed em0/em1 come interfacce slave.
# vi /etc/sysconfig/network-scripts/ifcfg-em0 DEVICE=em0 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes
# vi /etc/sysconfig/network-scripts/ifcfg-em1 DEVICE=em1 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes
Il file di configurazione /etc/modprobe.conf è deprecato su RHEL 6 e i file di configurazione sono ora nella directory /etc/modprobe.d. Il file di configurazione precedente è ancora supportato ma non è consigliato. Crea un nuovo file bonding.conf nella directory /etc/modprobe.d per dire al kernel che dovrebbe usare il driver di legame per il nuovo dispositivo bond0.
# vi /etc/modprobe.d/bond.conf alias bond0 bonding
Riavvia i servizi di rete per abilitare l'interfaccia di collegamento.
# service network restart
Nel caso in cui non desideri riavviare il servizio di rete, puoi collegare l'interfaccia di collegamento individualmente:
# ifup bond0
Controlla la nuova interfaccia nell'output del comando ifconfig :
# ifconfig bond0 bond0 Link encap:Ethernet HWaddr 00:0C:29:9B:FD:2B inet addr:10.10.1.10 Bcast:10.10.1.1 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe9b:fd2b/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:39 errors:0 dropped:0 overruns:0 frame:0 TX packets:34 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:13875 (13.5 KiB) TX bytes:3446 (3.3 KiB)
Per verificare se il modulo di incollaggio è caricato correttamente:
# lsmod |grep bond bonding 122351 0
Per verificare quale interfaccia è attualmente attiva (in caso di modalità backup attivo):
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: em0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 5000 Down Delay (ms): 5000 Slave Interface: em0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:21:28:b2:65:26 Slave queue ID: 0 Slave Interface: em1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:21:28:b2:65:27 Slave queue ID: 0
Nel caso in cui si desideri verificare se il collegamento è configurato correttamente, rimuovere un'interfaccia attiva (em0 qui) dal collegamento. Troverai comunque che l'interfaccia di collegamento è ancora accessibile.
# ifdown em0RedHat / CentOS:come modificare l'interfaccia slave attualmente attiva del bonding online