Ethernet Channel Bonding aka NIC Teaming na Linux sistemih
Ethernet Channel Bonding omogoča dve ali več kartic omrežnih vmesnikov (NIC) na eno navidezno kartico NIC, kar lahko poveča pasovno širino in zagotovi odvečnost kartic NIC. To je odličen način za doseganje odvečnih povezav, odpornosti na napake ali omrežij za uravnoteženje obremenitve v proizvodnem sistemu. Če je ena fizična NIC izklopljena ali izklopljena, bo samodejno premaknila sredstva na drugo kartico NIC. Povezovanje kanalov/NIC bo delovalo s pomočjo gonilnika za povezovanje v jedru. Za dokazovanje bomo uporabili dve NIC.
Na voljo je skoraj šest vrst kanalskih obveznic. Tu bomo pregledali le dve vrsti Channel Bond, ki sta priljubljeni in se pogosto uporabljata.
- 0: Izravnava obremenitve (Round-Robin): Promet se prenaša v zaporednem vrstnem redu ali krožno z obeh NIC. Ta način omogoča uravnoteženje obremenitve in odpornost na napake.
- 1: Aktivno varnostno kopiranje: V danem trenutku je aktiven samo en podrejeni NIC. Druga vmesniška kartica bo aktivna le, če aktivna podrejena NIC ne uspe.
Ustvarjanje povezave Ethernet kanalov
Na voljo imamo dve omrežni kartici Ethernet, tj. Za izvajanje spodnjih ukazov potrebujete privilegiranega super uporabnika.
Parameter MASTER bond0 in eth1 navedite kot SLAVE v konfiguracijski datoteki, kot je prikazano spodaj.
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1" TYPE=Ethernet ONBOOT="yes" BOOTPROTO="none" USERCTL=no MASTER=bond0 SLAVE=yes
Tu tudi podajte parameter MASTER bond0 in eth2 vmesnika kot 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
Ustvarite bond0 in konfigurirajte vmesnik za povezovanje kanalov v imeniku “/ etc/sysconfig/network-scripts /”, imenovanem ifcfg-bond0.
Sledi vzorec konfiguracijske datoteke za povezovanje kanalov.
# 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"
Opomba: V zgornji konfiguraciji smo izbrali način Bonding Options = 0, tj. Round-Robin in miimon = 100 (intervali glasovanja 100 ms).
Oglejmo si vmesnike, ustvarjene z uporabo ukaza ifconfig, ki prikazuje, da se bond0 izvaja kot MASTER, in sicer vmesnika "eth1" in "eth2", ki delujeta kot 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)
Znova zaženite omrežno storitev in vmesniki morajo biti v redu.
# service network restart
Shutting down interface bond0: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface bond0: [ OK ]
Preverjanje stanja obveznice.
# watch -n .1 cat /proc/net/bonding/bond0
Spodnji izhod kaže, da je način lepljenja uravnoteženje obremenitve (RR) in da se prikažeta eth1 in eth2.
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
V tem primeru podrejeni vmesniki ostanejo enaki. samo ena sprememba bo v vmesniku za obveznice ifcfg-bond0 namesto "0" bo "1", kar je prikazano pod.
# 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"
Znova zaženite omrežno storitev in preverite stanje povezave.
# service network restart
Shutting down interface bond0: [ OK ] Shutting down loopback interface: [ OK ] Bringing up loopback interface: [ OK ] Bringing up interface bond0: [ OK ]
Preverjanje stanja obveznice z ukazom.
# watch -n .1 cat /proc/net/bonding/bond0
Način vezave prikazuje toleranco napak (aktivno varnostno kopiranje) in podrejeni vmesnik je vklopljen.
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
Opomba: Ročno navzdol in navzgor podrejeni vmesniki preverite delovanje povezave kanalov. Glejte spodnji ukaz.
# ifconfig eth1 down # ifconfig eth1 up
To je to!