Ricerca nel sito web

Ethernet Channel Bonding ovvero NIC Teaming su sistemi Linux


Il collegamento del canale Ethernet consente di abilitare due o più schede di interfaccia di rete (NIC) a una singola scheda NIC virtuale che può aumentare la larghezza di banda e fornisce ridondanza delle schede NIC. Questo è un ottimo modo per ottenere collegamenti ridondanti, tolleranza agli errori o reti di bilanciamento del carico nel sistema di produzione. Se una NIC fisica è inattiva o scollegata, le risorse verranno spostate automaticamente su un'altra scheda NIC. Il bonding canale/NIC funzionerà con l'aiuto del driver di bonding nel Kernel. Utilizzeremo due NIC per dimostrare la stessa cosa.

Sono disponibili quasi sei tipi di Channel Bond. Qui esamineremo solo due tipi di Channel Bond che sono popolari e ampiamente utilizzati.

  1. 0: bilanciamento del carico (Round-Robin): il traffico viene trasmesso in ordine sequenziale o round-robin da entrambe le NIC. Questa modalità fornisce il bilanciamento del carico e la tolleranza agli errori.
  2. 1: Backup attivo: solo una scheda NIC slave è attiva in un dato momento. L'altra scheda di interfaccia sarà attiva solo se la scheda NIC slave attiva si guasta.

Creazione del collegamento dei canali Ethernet

Abbiamo due schede Ethernet di rete, ovvero eth1 e eth2 dove verrà creato bond0 a scopo di collegamento. È necessario disporre dei privilegi di superutente per eseguire i comandi seguenti.

Bilanciamento del carico (Round-Robin)

Configura eth1

Menziona i parametri dell'interfaccia MASTER bond0 e eth1 come SLAVE nel file di configurazione come mostrato di seguito.

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
MASTER=bond0
SLAVE=yes
Configura eth2

Anche qui specificare il parametro MASTER bond0 e l'interfaccia eth2 come SLAVE.

vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE="eth2"
TYPE="Ethernet"
ONBOOT="yes"
USERCTL=no
#NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
Crea la configurazione bond0

Crea bond0 e configura l'interfaccia di bonding del canale nella directory "/etc/sysconfig/network-scripts/" chiamata ifcfg-bond0.

Di seguito è riportato un esempio di file di configurazione del channel bonding.

vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=0 miimon=100"

Nota: nella configurazione sopra abbiamo scelto le opzioni di collegamento mode=0 ovvero Round-Robin e miimon=100 (Intervalli di polling 100 ms).

Vediamo le interfacce create utilizzando il comando ifconfig che mostra “bond0” in esecuzione come MASTER entrambe le interfacce “eth1” e “eth2” correndo come SCHIAVI.

ifconfig
bond0     Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
          inet addr:192.168.246.130  Bcast:192.168.246.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe57:618e/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:17374 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16060 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1231555 (1.1 MiB)  TX bytes:1622391 (1.5 MiB)

eth1      Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:16989 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8072 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1196931 (1.1 MiB)  TX bytes:819042 (799.8 KiB)
          Interrupt:19 Base address:0x2000

eth2      Link encap:Ethernet  HWaddr 00:0C:29:57:61:8E
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:385 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7989 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:34624 (33.8 KiB)  TX bytes:803583 (784.7 KiB)
          Interrupt:19 Base address:0x2080

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:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:480 (480.0 b)  TX bytes:480 (480.0 b)

Riavviare Il servizio di rete e le interfacce dovrebbero essere OK.

service network restart
Shutting down interface bond0:                             [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface bond0:                               [  OK  ]

Verifica dello stato del vincolo.

watch -n .1 cat /proc/net/bonding/bond0
Uscita campione

L'output di seguito mostra che la modalità di bonding è bilanciamento del carico (RR) e eth1 e eth2 si stanno presentando.

Every 0.1s: cat /proc/net/bonding/bond0                         Thu Sep 12 14:08:47 2013 

Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 2
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0

Crea backup attivo

In questo scenario, le interfacce Slave rimangono le stesse. ci sarà solo una modifica nell'interfaccia del bond ifcfg-bond0 invece di '0' sarà '1' come mostrato sotto .

vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=192.168.246.130
NETMASK=255.255.255.0
BONDING_OPTS="mode=1 miimon=100"

Riavviare il servizio di rete e verificare lo stato del collegamento.

service network restart
Shutting down interface bond0:                             [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface bond0:                               [  OK  ]

Controllo dello stato del vincolo con comando.

watch -n .1 cat /proc/net/bonding/bond0
Uscita del campione

La modalità bonding mostra tolleranza agli errori (backup attivo) e l'interfaccia slave è attiva.

Every 0.1s: cat /proc/n...  Thu Sep 12 14:40:37 2013

Ethernet Channel Bonding Driver: v3.6.0 (September 2
6, 2009)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:8e
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 0
Permanent HW addr: 00:0c:29:57:61:98
Slave queue ID: 0

Nota: giù e su manualmente le interfacce slave per verificare il funzionamento del Channel Bonding. Si prega di vedere il comando come di seguito.

ifconfig eth1 down
ifconfig eth1 up

Questo è tutto!