Ethernet Channel Bonding eli NIC Teaming Linux-järjestelmissä
Ethernet Channel Bonding mahdollistaa kahden tai useamman verkkoliitäntäkortin (NIC) yhdelle virtuaaliselle NIC-kortille, mikä voi lisätä kaistanleveyttä ja tarjoaa redundanssin NIC-korteille. Tämä on loistava tapa saada aikaan redundantteja linkkejä, vikasietoisuutta tai kuormitusta tasapainottavia verkkoja tuotantojärjestelmissä. Jos yksi fyysinen NIC on poissa tai irrotettu, se siirtää resurssit automaattisesti toiselle NIC-kortille. Kanavan/NIC-sidos toimii Ytimen bonding-ohjaimen avulla. Käytämme kahta NIC:tä osoittaaksemme saman.
Saatavilla on lähes kuusi tyyppiä Channel Bond -tyyppejä. Tässä tarkastellaan vain kahta kanavalainatyyppiä, jotka ovat suosittuja ja laajalti käytettyjä.
- 0: Kuormituksen tasapainotus (Round-Robin): Liikenne välitetään peräkkäisessä järjestyksessä tai kiertoteitse molemmista NIC:istä. Tämä tila tarjoaa kuormituksen tasapainotuksen ja vikasietoisuuden.
- 1: Aktiivinen varmuuskopiointi : Vain yksi orja-NIC on aktiivinen tiettynä ajankohtana. Muu liitäntäkortti on aktiivinen vain, jos aktiivinen orja-NIC epäonnistuu.
Ethernet-kanavaliitoksen luominen
Meillä on kaksi Network Ethernet -korttia eli eth1 ja eth2, joissa bond0 luodaan yhdistämistä varten. Tarvitset pääkäyttäjän oikeudet suorittaakseen alla olevia komentoja.
Kuorman tasapainotus (Round-Robin)
Määritä eth1
Mainitse parametri MASTER bond0 ja eth1-liitäntä SLAVE-arvona määritystiedostossa alla olevan kuvan mukaisesti.
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
MASTER=bond0
SLAVE=yes
Määritä eth2
Määritä tässä myös parametri MASTER bond0 ja eth2-rajapinta SLAVE-arvoksi.
vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE="eth2"
TYPE="Ethernet"
ONBOOT="yes"
USERCTL=no
#NM_CONTROLLED=yes
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
Luo bond0-kokoonpano
Luo bond0 ja määritä kanavaliitosliittymä /etc/sysconfig/network-scripts/-hakemistoon nimeltä ifcfg-bond0.
Seuraavassa on esimerkki kanavaliitoksen määritystiedostosta.
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"
Huomaa: yllä olevassa kokoonpanossa olemme valinneet liimausvaihtoehdot mode=0 eli Round-Robin ja miimon=100 (Pollausvälit 100 ms).
Katsotaanpa käyttöliittymiä, jotka on luotu ifconfig-komennolla, jossa "bond0" on käynnissä MASTER-käyttöliittymänä sekä eth1" että "eth2"" toimii nimellä ORJA.
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)
Käynnistä verkkopalvelu uudelleen ja liitäntöjen pitäisi olla kunnossa.
service network restart
Shutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]
Velkakirjan tilan tarkistaminen.
watch -n .1 cat /proc/net/bonding/bond0
Näytelähtö
Alla näkyy, että Bonding Mode on Load Balancing (RR) ja eth1 & eth2 > näkyvät.
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
Luo aktiivinen varmuuskopio
Tässä skenaariossa Slave-liitännät pysyvät samoina. vain yksi muutos on sidosliittymässä ifcfg-bond0 arvon 0 sijaan, se on 1, joka näkyy alla .
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"
Käynnistä verkkopalvelu uudelleen ja tarkista liitoksen tila.
service network restart
Shutting down interface bond0: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]
Sidoksen tilan tarkistaminen komennolla.
watch -n .1 cat /proc/net/bonding/bond0
Näytelähtö
Bonding Mode näyttää vikasietoisuutta (aktiivinen varmuuskopiointi) ja orjaliitäntä on päällä.
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
Huomaa: alas ja ylös orjaliitännät manuaalisesti tarkistaaksesi Channel Bonding -toiminnon toiminnan. Katso alla oleva komento.
ifconfig eth1 down
ifconfig eth1 up
Se siitä!