Zoeken op website

Ethernet Channel Bonding oftewel NIC Teaming op Linux-systemen


Ethernet Channel Bonding maakt twee of meer Netwerkinterfacekaarten (NIC) mogelijk op één enkele virtuele NIC-kaart, wat kan toenemen de bandbreedte en biedt redundantie van NIC-kaarten. Dit is een geweldige manier om redundante koppelingen, fouttolerantie of load-balancing-netwerken in het productiesysteem te realiseren. Als een fysieke NIC down of losgekoppeld is, worden bronnen automatisch naar een andere NIC-kaart verplaatst. Kanaal/NIC-binding werkt met behulp van het bonding-stuurprogramma in Kernel. We gebruiken twee NIC om hetzelfde te demonstreren.

Er zijn bijna zes typen Channel Bond typen beschikbaar. Hier bespreken we slechts twee soorten kanaalobligaties die populair en veel gebruikt zijn.

  1. 0: taakverdeling (Round-Robin): verkeer wordt in sequentiële volgorde of round-robin-modus vanaf beide NIC verzonden. Deze modus biedt taakverdeling en fouttolerantie.
  2. 1: Actieve back-up: Er is op elk moment slechts één slave-NIC actief. Andere interfacekaarten zullen alleen actief zijn als de actieve slave-NIC uitvalt.

Ethernet-kanaalbinding creëren

We hebben twee Netwerk Ethernet-kaarten, d.w.z. eth1 en eth2, waarbij bond0 wordt gemaakt voor verbindingsdoeleinden. Er is een superuser nodig die de onderstaande opdrachten kan uitvoeren.

Taakverdeling (Round-Robin)

Configureer eth1

Vermeld de parameter MASTER bond0 en eth1 interface als een SLAVE in het configuratiebestand, zoals hieronder weergegeven.

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

Specificeer hier ook de parameter MASTER bond0 en eth2 interface als een 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
Maak bond0-configuratie

Maak bond0 aan en configureer de Channel bonding-interface in de map “/etc/sysconfig/network-scripts/”, genaamd ifcfg-bond0.

Het volgende is een voorbeeld van een configuratiebestand voor kanaalbinding.

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"

Opmerking: in de bovenstaande configuratie hebben we gekozen voor de verbindingsopties mode=0, d.w.z. Round-Robin en miimon=100 (Polling-intervallen 100 ms).

Laten we de interfaces bekijken die zijn gemaakt met de ifconfig-opdracht, waarin “bond0” wordt weergegeven als de MASTER, beide interfaces “eth1” en “eth2” uitgevoerd als SLAVES.

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)

Start de netwerkservice en interfaces opnieuw op.

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

Het controleren van de status van de obligatie.

watch -n .1 cat /proc/net/bonding/bond0
Voorbeelduitvoer

Onderstaande uitvoer laat zien dat de Bonding-modus Load Balancing (RR) en eth1 & eth2 is > komen opdagen.

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

Maak actieve back-up

In dit scenario blijven de Slave-interfaces hetzelfde. er zal slechts één verandering zijn in de obligatie-interface ifcfg-bond0 in plaats van '0' zal het '1' zijn, zoals weergegeven onder .

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"

Start de netwerkservice opnieuw en controleer de status van de verbinding.

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

Controle van de status van de band met commando.

watch -n .1 cat /proc/net/bonding/bond0
Voorbeelduitvoer

De bondingmodus vertoont fouttolerantie (actieve back-up) en de slave-interface is actief.

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

Opmerking: omlaag en omhoog de slave-interfaces om de werking van kanaalbinding te controleren. Zie de opdracht zoals hieronder.

ifconfig eth1 down
ifconfig eth1 up

Dat is het!