Ethernet Channel Bonding aka NIC Teaming på Linux-systemer


Ethernet Channel Bonding muliggør to eller flere netværksinterfaces-kort (NIC) til et enkelt virtuelt NIC-kort, som kan øge båndbredden og give redundans af NIC-kort. Dette er en fantastisk måde at opnå overflødige links, fejltolerance eller belastningsbalanceringsnetværk i produktionssystemet. Hvis et fysisk NIC er nede eller frakoblet, flytter det automatisk ressourcer til et andet NIC-kort. Channel/NIC-binding fungerer med hjælp fra bonding driver i Kernel. Vi bruger to NIC til at demonstrere det samme.

Der er næsten seks typer Channel Bond-typer er tilgængelige. Her gennemgår vi kun to typer Channel Bond, som er populære og udbredt.

  1. 0: Load balancing (Round-Robin): Trafik transmitteres i rækkefølge eller round-robin mode fra begge NIC. Denne tilstand giver belastningsafbalancering og fejltolerance.
  2. 1: Aktiv backup: Kun en slave-NIC er aktiv på et givet tidspunkt. Andet interfacekort vil kun være aktivt, hvis den aktive slave-NIC fejler.

Oprettelse af Ethernet-kanalbinding

Vi har to netværks-Ethernet-kort, dvs. eth1 og eth2, hvor bond0 oprettes til bindingsformål. Brug for superbruger privilegeret til at udføre nedenstående kommandoer.

Nævner parameter MASTER bond0 og eth1 interface som en SLAVE i konfigurationsfil som vist nedenfor.

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

Her skal du også angive parameter MASTER bond0 og eth2-interface som en 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

Opret bond0 og konfigurer Channel bonding interface i mappen "/ etc/sysconfig/network-scripts /" kaldet ifcfg-bond0.

Det følgende er en prøvekonfigurationsfil for kanalbinding.

# 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"

Bemærk: I ovenstående konfiguration har vi valgt Bonding Options mode = 0 dvs. Round-Robin og miimon = 100 (Polling intervaller 100 ms).

Lad os se grænseflader oprettet ved hjælp af ifconfig-kommando, der viser "bond0", der kører som MASTER, både grænseflader "eth1" og "eth2", der kører som 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)

Genstart netværkstjeneste og grænseflader skal være OK.

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

Kontrol af obligationens status.

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

Nedenstående output viser, at Bonding Mode er Load Balancing (RR), og eth1 & eth2 vises.

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

I dette scenarie forbliver Slave-grænseflader de samme. kun en ændring vil være der i obligationsgrænsefladen ifcfg-bond0 i stedet for '0' vil det være '1', som vises som under.

# 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"

Genstart netværkstjeneste og kontroller status for binding.

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

Kontrol af obligationens status med kommando.

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

Bonding Mode viser fejltolerance (aktiv backup) og Slave Interface er op.

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

Bemærk: Manuelt ned og op på slavegrænsefladerne for at kontrollere, hvordan Channel Bonding fungerer. Se kommandoen som nedenfor.

# ifconfig eth1 down
# ifconfig eth1 up

Det er det!