Wyszukiwanie w witrynie

Łączenie kanałów Ethernet, czyli łączenie kart sieciowych w systemach Linux


Łączenie kanałów Ethernet umożliwia podłączenie dwóch lub więcej kart interfejsów sieciowych (NIC) do jednej wirtualnej karty NIC, co może zwiększyć przepustowość i zapewnia redundancję kart NIC. Jest to świetny sposób na uzyskanie redundantnych łączy, odporności na awarie lub sieci równoważenia obciążenia w systemie produkcyjnym. Jeśli jedna fizyczna karta sieciowa jest wyłączona lub odłączona, zasoby zostaną automatycznie przeniesione na inną kartę sieciową. Połączenie Kanału/NIC będzie działać przy pomocy sterownika łączenia w jądrze. Będziemy używać dwóch NIC, aby zademonstrować to samo.

Dostępnych jest prawie sześć typów powiązania kanałów. W tym miejscu omówimy tylko dwa rodzaje obligacji kanałowych, które są popularne i szeroko stosowane.

  1. 0: Równoważenie obciążenia (Round-Robin): ruch jest przesyłany sekwencyjnie lub okrężnie z obu kart sieciowych. Ten tryb zapewnia równoważenie obciążenia i odporność na błędy.
  2. 1: Aktywna kopia zapasowa: w danym momencie aktywna jest tylko jedna podrzędna karta sieciowa. Inna karta interfejsu będzie aktywna tylko w przypadku awarii aktywnej karty sieciowej typu slave.

Tworzenie łączenia kanałów Ethernet

Mamy dwie karty sieciowe Ethernet, tj. eth1 i eth2, na których zostanie utworzone bond0 w celu łączenia. Potrzebujesz uprawnień administratora, aby wykonywać poniższe polecenia.

Równoważenie obciążenia (okrężne)

Skonfiguruj eth1

Wspomnij o parametrze MASTER bond0 i interfejsie eth1 jako SLAVE w pliku konfiguracyjnym, jak pokazano poniżej.

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

Tutaj również określ parametr MASTER bond0 i interfejs eth2 jako 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
Utwórz konfigurację bond0

Utwórz bond0 i skonfiguruj interfejs łączenia kanałów w katalogu „/etc/sysconfig/network-scripts/” o nazwie ifcfg-bond0.

Poniżej znajduje się przykładowy plik konfiguracyjny łączenia kanałów.

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"

Uwaga: W powyższej konfiguracji wybraliśmy Opcje łączenia mode=0, tj. Round-Robin i miimon=100 (Odstępy odpytywania 100 ms).

Zobaczmy interfejsy utworzone za pomocą polecenia ifconfig, które pokazuje „bond0” działające jako MASTER oba interfejsy „eth1” i „eth2” działający jako 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)

Uruchom ponownie usługę sieciową i interfejsy powinny działać prawidłowo.

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

Sprawdzanie statusu obligacji.

watch -n .1 cat /proc/net/bonding/bond0
Przykładowe wyjście

Poniższe dane wyjściowe pokazują, że tryb łączenia to równoważenie obciążenia (RR) oraz eth1 i eth2 się pojawiają.

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

Utwórz aktywną kopię zapasową

W tym scenariuszu interfejsy Slave pozostają takie same. tylko jedna zmiana będzie w interfejsie wiązania ifcfg-bond0 zamiast „0”, będzie to „1”, co jest pokazane jako .

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"

Uruchom ponownie usługę sieciową i sprawdź stan połączenia.

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

Sprawdzanie statusu połączenia za pomocą polecenia.

watch -n .1 cat /proc/net/bonding/bond0
Przykładowe wyjście

Tryb łączenia pokazuje odporność na błędy (aktywna kopia zapasowa), a interfejs Slave działa.

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

Uwaga: ręcznie w dół i w górę interfejsów Slave, aby sprawdzić działanie łączenia kanałów. Proszę zapoznać się z poleceniem jak poniżej.

ifconfig eth1 down
ifconfig eth1 up

Otóż to!