Ethernet Channel Bonding eli NIC Teaming Linux-järjestelmissä


Ethernet-kanavien liittäminen mahdollistaa kahden tai useamman verkkokortin (NIC) yhdeksi virtuaaliseksi verkkokortiksi, mikä voi lisätä kaistanleveyttä ja tarjota verkkokorttien redundanssin. Tämä on loistava tapa saavuttaa redundantit linkit, vikasietoisuus tai kuormituksen tasapainotusverkot tuotantojärjestelmässä. Jos yksi fyysinen verkkokortti on alhaalla tai irrotettu, se siirtää resurssit automaattisesti toiselle verkkokortille. Kanava/NIC-liitos toimii ytimen liitosohjaimen avulla. Käytämme kahta verkkokorttia osoittamaan samaa.

Channel Bond -tyyppejä on lähes kuusi. Tässä tarkastelemme vain kahta suosittua ja laajasti käytettyä Channel Bond -tyyppiä.

  1. 0: Kuormituksen tasapainotus (Round-Robin): Liikenne välitetään peräkkäisessä järjestyksessä tai molempien verkkokorttien kautta. Tämä tila tarjoaa kuormituksen tasapainottamisen ja vikasietoisuuden.
  2. 1: Aktiivinen varmuuskopiointi: Vain yksi orja-NIC on aktiivinen tiettynä ajankohtana. Muu liitäntäkortti on aktiivinen vain, jos aktiivinen orja-verkkokortti epäonnistuu.

Ethernet-kanavien sidonnan luominen

Meillä on kaksi verkon Ethernet-korttia, ts. Eth1 ja eth2, joissa bond0 luodaan sidontatarkoitusta varten. Tarvitset etuoikeutetun pääkäyttäjän suorittamaan alla olevat komennot.

Mainitse parametri MASTER bond0 ja eth1 käyttöliittymänä Slave-asetustiedostona alla esitetyllä tavalla.

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

Määritä tässä myös parametri MASTER bond0 ja eth2 -liitäntä orjaksi.

# 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 ja määritä kanavaliitäntärajapinta hakemistoon "/ etc/sysconfig/network-scripts /", nimeltään ifcfg-bond0.

Seuraava on esimerkkikanavan liitoksen määritystiedosto.

# 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 Bonding Options -tilan = 0 eli Round-Robin ja miimon = 100 (Pollausvälit 100 ms).

Katsotaanpa ifconfig-komennolla luotuja rajapintoja, jotka osoittavat, että "bond0" toimii MASTERina, sekä liitännät "eth1" ja "eth2", jotka toimivat orjina.

# 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 tulisi 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  ]

Lainan tilan tarkistaminen.

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

Tuloksen alapuolella näkyy, että sidontatila on kuormituksen tasapainotus (RR) ja eth1 & eth2 ovat näkyvissä.

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

Tässä tilanteessa orjarajapinnat pysyvät samoina. vain yksi muutos on sidosrajapinnassa ifcfg-bond0 '0: n sijasta, se on' 1 ', joka on esitetty 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  ]

Vakuuden tilan tarkistaminen komennolla.

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

Sidontatila näyttää vikasietoisuuden (aktiivinen varmuuskopiointi) ja Slave Interface 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

Huomautus: Tarkista orjaliitännät manuaalisesti alas- ja ylöspäin tarkistaaksesi kanavien liimaus. Katso komento alla.

# ifconfig eth1 down
# ifconfig eth1 up

Se siitä!