Ethernet Channel Bonding γνωστό και ως NIC Teaming σε συστήματα Linux


Η Σύνδεση καναλιού Ethernet ενεργοποιεί δύο ή περισσότερες Κάρτες διεπαφής δικτύου (NIC) σε μία εικονική κάρτα NIC, η οποία ενδέχεται να αυξηθεί το εύρος ζώνης και παρέχει πλεονασμό Κάρτες NIC. Αυτός είναι ένας πολύ καλός τρόπος για την επίτευξη περιττών συνδέσεων, ανοχής σφαλμάτων ή δικτύων εξισορρόπησης φορτίου στο σύστημα παραγωγής. Εάν ένα φυσικό NIC είναι απενεργοποιημένο ή αποσυνδεδεμένο, θα μετακινήσει αυτόματα τους πόρους σε άλλη κάρτα NIC. Η σύνδεση Channel/NIC θα λειτουργήσει με τη βοήθεια του προγράμματος οδήγησης bonding στον Kernel. Θα χρησιμοποιήσουμε δύο NIC για να δείξουμε το ίδιο.

Υπάρχουν σχεδόν έξι τύποι τύπων Ομολόγων καναλιού που είναι διαθέσιμοι. Εδώ, θα εξετάσουμε μόνο δύο τύπους δεσμών καναλιού που είναι δημοφιλείς και χρησιμοποιούνται ευρέως.

  1. 0: Εξισορρόπηση φορτίου (Round-Robin): Η κίνηση μεταδίδεται με διαδοχική σειρά ή με τρόπο κυκλικής ροής και από τα δύο NIC. Αυτή η λειτουργία παρέχει εξισορρόπηση φορτίου και ανοχή σφαλμάτων.
  2. 1: Active-Backup : Μόνο ένα slave NIC είναι ενεργό σε οποιαδήποτε δεδομένη χρονική στιγμή. Η άλλη κάρτα διασύνδεσης θα είναι ενεργή μόνο εάν αποτύχει το ενεργό υποτελές NIC.

Δημιουργία σύνδεσης καναλιών Ethernet

Έχουμε δύο Κάρτες Ethernet Δικτύου, δηλαδή eth1 και eth2 όπου θα δημιουργηθεί το bond0 για σκοπούς σύνδεσης. Χρειάζεστε προνόμιο υπερχρήστη για την εκτέλεση των παρακάτω εντολών.

Εξισορρόπηση φορτίου (Round-Robin)

Διαμόρφωση eth1

Αναφέρετε την παράμετρο MASTER bond0 και eth1 ως SLAVE στο αρχείο διαμόρφωσης όπως φαίνεται παρακάτω.

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
USERCTL=no
MASTER=bond0
SLAVE=yes
Διαμόρφωση eth2

Εδώ, επίσης, καθορίστε την παράμετρο MASTER bond0 και eth2 ως 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
Δημιουργία διαμόρφωσης bond0

Δημιουργήστε bond0 και διαμορφώστε τη διεπαφή σύνδεσης καναλιού στον κατάλογο "/etc/sysconfig/network-scripts/" που ονομάζεται ifcfg-bond0.

Ακολουθεί ένα δείγμα αρχείου διαμόρφωσης σύνδεσης καναλιού.

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"

Σημείωση: Στην παραπάνω διαμόρφωση έχουμε επιλέξει Επιλογές Bonding mode=0, δηλαδή Round-Robin και miimon=100 (Διαστήματα ψηφοφορίας 100 ms).

Ας δούμε τις διεπαφές που δημιουργήθηκαν χρησιμοποιώντας την εντολή ifconfig, η οποία δείχνει το "bond0" να εκτελείται ως MASTER και οι δύο διεπαφές "eth1" και "eth2" που εκτελείται ως 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)

Επανεκκινήστε την υπηρεσία δικτύου και οι διεπαφές θα πρέπει να είναι ΟΚ.

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

Έλεγχος της κατάστασης του ομολόγου.

watch -n .1 cat /proc/net/bonding/bond0
Δείγμα εξόδου

Η παρακάτω έξοδος δείχνει ότι η Λειτουργία σύνδεσης είναι Ισορροπία φορτίου (RR) και eth1 & 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

Δημιουργία ενεργού αντιγράφου ασφαλείας

Σε αυτό το σενάριο, οι διεπαφές Slave παραμένουν οι ίδιες. μόνο μία αλλαγή θα υπάρχει στη διεπαφή ομολόγων ifcfg-bond0 αντί για "0" θα είναι "1" που εμφανίζεται όπως παρακάτω .

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"

Επανεκκινήστε την υπηρεσία δικτύου και ελέγξτε την κατάσταση της σύνδεσης.

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

Έλεγχος της κατάστασης του δεσμού με εντολή.

watch -n .1 cat /proc/net/bonding/bond0
Δείγμα εξόδου

Η λειτουργία Bonding εμφανίζει ανοχή σφαλμάτων (ενεργό εφεδρικό αντίγραφο) και το Slave Interface είναι ενεργοποιημένο.

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

Σημείωση: Χειροκίνητα κάτω και επάνω τις υποτελείς διεπαφές για να ελέγξετε τη λειτουργία του Σύνδεση καναλιού. Δείτε την εντολή όπως παρακάτω.

ifconfig eth1 down
ifconfig eth1 up

Αυτό είναι!