Unter Linux können Sie mithilfe von Etherchannel-Bonding zwei oder mehr physische Netzwerkschnittstellen (NIC) miteinander kombinieren, um eine virtuelle Schnittstelle zu erstellen.
Die IP-Adresse wird auf dieser virtuellen Schnittstelle konfiguriert. Wenn einer der zugrunde liegenden physischen Adapter ausfällt, wird der andere physische Adapter verwendet, um den Kommunikationsverkehr zu verarbeiten.
Die folgenden sind verschiedene Arten von Etherchannel-Bindungsmodi:
- Modus 0 – Round-Robin (RR)-Richtlinie:Paketübertragungen erfolgen in sequentieller Reihenfolge. Beispielsweise wird das erste Paket über die Schnittstelle übertragen und das zweite Paket über die nächste Schnittstelle usw. Dieser Modus bietet Lastausgleich und Fehlertoleranz.
- Modus 1 – aktive Sicherungsrichtlinie:Die Paketübertragung erfolgt nur über die aktive Schnittstelle und der Datenverkehr wird nur dann über die Sicherungsschnittstelle geleitet, wenn die aktive Schnittstelle ausgefallen ist.
- Modus 2 – XOR-Richtlinie:Dieser Modus gleicht den ausgehenden Datenverkehr über die aktiven Ports aus. In diesem Modus wird für jede Ziel-MAC-Adresse derselbe Slave zur Übertragung verwendet. Dies bietet Lastausgleich und Fehlertoleranz.
- Modus 3 – Broadcast-Richtlinie:Dies überträgt alles auf allen Slave-Schnittstellen. Dieser Modus bietet Fehlertoleranz.
- Modus 4 (802.3ad):Dieser Modus wird verwendet, um Link-Aggregation-Gruppen zu erstellen, die dieselben Geschwindigkeits- und Duplexeinstellungen verwenden.
- Modus 5 (balance-tlb):Adaptive Lastverteilung beim Senden. Der ausgehende Datenverkehr wird basierend auf der aktuellen Last auf jeden Slave verteilt. Eingehender Datenverkehr wird vom aktuellen Slave empfangen. Wenn der aktuelle Slave ausfällt, übernimmt ein anderer Slave den eingehenden Datenverkehr basierend auf der MAC-Adresse.
- Modus 6 (balance-alb):Adaptive Lastverteilung. Dabei wird der eingehende Verkehr gehandhabt, um Lastausgleich über alle Slaves hinweg zu verwenden. Der Empfangslastausgleich erfolgt durch ARP-Aushandlung.
Bonding in Redhat oder CentOS konfigurieren
1. ifcfg-bond0-Datei erstellen
Alle Netzwerkkonfigurationsskripte befinden sich unter /etc/sysconfig/network-scripts in RHEL. Überprüfen Sie den Verbindungsstatus der Schnittstellen mit dem Befehl „ethtool“
Erstellen Sie eine Datei ifcfg-bond0 mit den folgenden Werten und ersetzen Sie sie durch die richtige IP, NETMASK und den entsprechenden Verbindungsmodus (Modus 0, 1, 2 …) wie unten.
# cd /etc/sysconfig/network-scripts # vi ifcfg-bond0 DEVICE=bond0 IPADDR=19.86.101.120 NETMASK=255.255.255.0 ONBOOT=yes BOOTPROTO=none USERCTL=no BONDING_OPTS="mode=1 miimon=100"
2. Ändern Sie die ifcfg-eth0- und ifcfg-eth1-Dateien
Bearbeiten Sie die Netzwerkschnittstellendateien für eth0 und eth1, um Einträge ähnlich den folgenden widerzuspiegeln. Stellen Sie sicher, dass Sie die MASTER- und SLAVE-Parameter wie unten gezeigt definiert haben.
# cat ifcfg-eth0 DEVICE=eth0 HWADDR=00:50:56:8E:0C:10 MASTER=bond0 SLAVE=yes ONBOOT=yes USERCTL=no BOOTPROTO=none # cat ifcfg-eth1 DEVICE=eth1 HWADDR=00:50:56:8E:0C:2A MASTER=bond0 SLAVE=yes ONBOOT=yes USERCTL=no BOOTPROTO=none
3. Bonding.conf-Datei erstellen
Erstellen Sie die Datei bond.conf mit folgendem Inhalt.
# vi /etc/modprobe.d/bonding.conf alias netdev-bond0 bonding
4. Starten Sie den Netzwerkdienst neu und überprüfen Sie die Verbindung
Starten Sie die Netzwerkdienste neu:
service network restart
Überprüfen Sie den Bindungsstatus wie unten gezeigt.
Das Folgende zeigt, dass der aktuelle Bindungsmodus Fehlertoleranz ist.
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: eth0 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:50:56:8e:0c:10 Slave queue ID: 0 Slave Interface: eth1 MII Status: up Speed: 10000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:50:56:8e:0c:2a Slave queue ID: 0
Sie können den Test durchführen, indem Sie eine Schnittstelle herunterfahren und sehen, dass die andere Schnittstelle aktiv ist und umgekehrt.
Bonding unter SuSE Linux konfigurieren
Um Bonding auf der neuesten Version von SuSE zu konfigurieren, können Sie entweder YaST verwenden oder alternativ die Systemdateien wie unten gezeigt ändern:
Überprüfen Sie die aktiven Schnittstellen mit dem folgenden Befehl:
ethtool eth0 | egrep "Speed|Duplex|Link"
Wenn der Geschwindigkeits-, Duplex- und Verbindungsstatus unbekannt ist, befindet sich die Schnittstelle möglicherweise im ausgefallenen Status. Versuchen Sie, die Schnittstelle mit "ifconfig up" aufzurufen. Wenn Sie den Link immer noch nicht sehen, ist die Schnittstelle nicht mit dem Switch verbunden.
1. ifcfg-bond0-Datei erstellen
Melden Sie sich über die Konsole bei der Maschine an. Erstellen Sie ifcfg-bond0 unter /etc/sysconfig/network und definieren Sie die IP-Adresse und die Slave-Schnittstellen, die verwendet werden können.
Im folgenden Beispiel habe ich den Active-Backup-Modus für das Bonding verwendet, was bedeutet, dass nur die aktiven Schnittstellen den Kommunikationsverkehr und Fehler handhaben, bei denen die Backup-Schnittstelle zu arbeiten beginnt.
# cd /etc/sysconfig/network # cat ifcfg-bond0 BONDING_MASTER=yes BONDING_MODULE_OPTS='mode=active-backup miimon=100' BONDING_SLAVE0='eth0' BONDING_SLAVE1='eth1' BOOTPROTO='static' IPADDR='192.168.1.85/24' BROADCAST='' STARTMODE='auto'
2. Ändern Sie die ifcfg-eth0- und ifcfg-eth1-Dateien
Ändern Sie die Slave-Schnittstellen so, dass sie nicht über die IP-Adresse, Netzmaske verfügen. Die Ausgabe sollte ungefähr so aussehen:
# cat ifcfg-eth0 DEVICE='eth0' BOOTPROTO='none' STARTMODE='onboot' NAME='82545EM Gigabit Ethernet Controller (Copper)' # cat ifcfg-eth1 DEVICE='eth1' BOOTPROTO='none' STARTMODE='onboot' NAME='82545EM Gigabit Ethernet Controller (Copper)'
3. Bearbeiten Sie die modprobe.conf-Datei
Bearbeiten Sie die Datei /etc/modprobe.conf und fügen Sie die folgenden 2 Zeilen hinzu, um den Bonding-Treiber mit Optionen einzuschließen.
alias bond0 bonding options bond0 miimon=100 mode=1
Hinweis:Sie können Optionen ignorieren, wenn Sie sie bereits in die Datei /etc/sysconfig/network/ifcfg-bond0 aufgenommen haben.
4. Starten Sie den Netzwerkdienst neu und überprüfen Sie die Verbindung
Starten Sie nach dem Einrichten des Bondings den Netzwerkdienst neu:
rcnetwork restart
Stellen Sie sicher, dass die Bonding-Schnittstelle aktiv ist und die IP-Adresse ordnungsgemäß konfiguriert ist. Stellen Sie außerdem sicher, dass Sie den Server über die IP-Adresse verbinden können.
# ifconfig bond0 bond0 Link encap:Ethernet HWaddr 00:50:56:8E:00:26 inet addr:192.168.1.85 Bcast:192.168.1.1 Mask:255.255.255.0 UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:28420409 errors:0 dropped:0 overruns:0 frame:0 TX packets:151985 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2362560309 (2253.1 Mb) TX bytes:17330542 (16.5 Mb)
Um zu testen, ob die Bonding-Schnittstelle korrekt funktioniert, melden Sie sich bei der Konsole an und fahren Sie die aktive Schnittstelle mit „ifconfig eth0 down“ herunter. Stellen Sie sicher, dass Sie sich weiterhin mit derselben IP oder demselben Hostnamen bei der Maschine anmelden können. Sie können den Status der aktiven Schnittstelle in der folgenden Datei überprüfen,
Wie unten gezeigt, ist eth0 ausgefallen, aber die Netzwerkverbindung zum Computer geht immer noch nicht verloren, da wir Bonding eingerichtet haben und die eth1-Schnittstelle immer noch aktiv ist.
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008) 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: eth0 MII Status: down Link Failure Count: 1 Permanent HW addr: 00:50:56:8e:00:26 Slave Interface: eth1 MII Status: up Link Failure Count: 0 Permanent HW addr: 00:50:56:8e:7e:20