Warum aggregierte Netzwerkschnittstellen (Interface Bonding)?
Die beiden wichtigsten Gründe für eine Schnittstellenbindung sind:
1. Zur Bereitstellung einer erhöhten Bandbreite
2. Bereitstellung von Redundanz angesichts eines Hardwarefehlers
Eine der Voraussetzungen für die Konfiguration eines Bondings ist ein Netzwerk-Switch, der Etherchannel unterstützt (was auf fast alle Switches zutrifft).
Verbindungsmodi
Abhängig von Ihren Anforderungen können Sie den Bindungsmodus auf einen der folgenden 7 Modi einstellen. Der Bonding-Modus kann in der Netzwerkdatei der Bonding-Schnittstelle /etc/sysconfig/network-scripts/ifcfg-bond0 eingestellt werden wie unten:
BONDING_OPTS="mode=active-backup miimon=250"
oder
BONDING_OPTS="mode=1 miimon=250"
Modus | Richtlinie | Wie es funktioniert | Fehlertoleranz | Load-Balancing |
---|---|---|---|---|
0 | Round Robin | Pakete werden sequentiell nacheinander über jede Schnittstelle gesendet/empfangen. | Nein | Ja |
1 | Aktive Sicherung | eine NIC aktiv, während eine andere NIC im Ruhezustand ist. Wenn die aktive NIC ausfällt, wird eine andere NIC aktiv. wird nur in x86-Umgebungen unterstützt. | Ja | Nein |
2 | XOR [exklusives ODER] | In diesem Modus wird die MAC-Adresse der Slave-NIC mit der MAC der eingehenden Anfrage abgeglichen, und sobald diese Verbindung hergestellt ist, wird dieselbe NIC zum Senden/Empfangen für die Ziel-MAC verwendet. | Ja | Ja |
3 | Ausstrahlung | Alle Übertragungen werden an alle Slaves gesendet | Ja | Nein |
4 | Dynamische Link-Aggregation | Aggregierte NICs fungieren als eine NIC, was zu einem höheren Durchsatz führt, aber auch Failover bietet, falls eine NIC ausfällt. Dynamic Link Aggregation erfordert einen Switch, der IEEE 802.3ad unterstützt. | Ja | Ja |
5 | Lastenausgleich übertragen (TLB) | Der ausgehende Datenverkehr wird abhängig von der aktuellen Last auf jeder Slave-Schnittstelle verteilt. Eingehender Datenverkehr wird vom aktuellen Slave empfangen. Fällt der empfangende Slave aus, übernimmt ein anderer Slave die MAC-Adresse des ausgefallenen Slaves. | Ja | Ja |
6 | Adaptives Load-Balancing (ALB) | Im Gegensatz zu Dynamic Link Aggregation erfordert Adaptive Load Balancing keine besondere Switch-Konfiguration. Adaptive Load Balancing wird nur in x86-Umgebungen unterstützt. Die empfangenen Pakete werden durch ARP-Aushandlung belastet. | Ja | Ja |
Konfigurieren einer Schnittstellenverbindung
1. Erstellen Sie die Master-bond0-Schnittstelle
Dazu müssen wir eine Datei /etc/sysconfig/network-scripts/ifcfg-bond0 erstellen mit folgendem Inhalt:
# vi /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BOOTPROTO=static ONBOOT=yes IPADDR=10.10.1.10 NETMASK=255.255.255.0 BONDING_OPTS="miimon=100"Konfigurieren Sie auf RHEL6 die Bonding-Parameter in ifcfg-bondX statt in der Datei /etc/modprobe.d/bonding.conf. Der Vorteil besteht darin, dass diese Parameter während des Schnittstelleninitialisierungsprozesses pro Bonding-Schnittstelle geändert werden können, anstatt während des Initialisierungsprozesses des Bonding-Treibers. Das heißt, eine Parameteränderung erfordert kein erneutes Laden des Bonding-Treibers mehr. Dies trägt dazu bei, den systemweiten Netzwerkausfall zu reduzieren, während einige kleine Änderungen an den Bonding-Schnittstellen vorgenommen werden.
BONDING_OPTS - Specify bonding module parameters, e.g. miimon - link polling interval for fault detection (in ms)
Da wir die Bonding-Schnittstelle mit der IP-Adresse und der Netzmaske konfiguriert haben, müssen wir sie nicht in den einzelnen Interfaces-Dateien angeben, aus denen die Bindung besteht.
2. Erstellen der Slave-Schnittstellen
Wir würden em0 und em1 als Slave-Schnittstellen verwenden, um die bond0-Bonding-Schnittstelle zu erstellen. Die Zeilen MASTER und SLAVE definieren die Master-Bonding-Interfaces bond0 und em0/em1 als Slave-Interfaces.
# vi /etc/sysconfig/network-scripts/ifcfg-em0 DEVICE=em0 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes
# vi /etc/sysconfig/network-scripts/ifcfg-em1 DEVICE=em1 BOOTPROTO=none ONBOOT=yes MASTER=bond0 SLAVE=yes
3. Konfigurieren Sie den Bonding-Treiber
Die Konfigurationsdatei /etc/modprobe.conf ist auf RHEL 6 veraltet und die Konfigurationsdateien befinden sich jetzt im Verzeichnis /etc/modprobe.d. Die ältere Konfigurationsdatei wird weiterhin unterstützt, aber nicht empfohlen. Erstellen Sie eine neue Datei bond.conf im Verzeichnis /etc/modprobe.d, um dem Kernel mitzuteilen, dass er den Bonding-Treiber für das neue Gerät bond0 verwenden soll.
# vi /etc/modprobe.d/bond.conf alias bond0 bonding
4. Starten Sie die Netzwerkdienste neu
Starten Sie die Netzwerkdienste neu, um die Bonding-Schnittstelle zu aktivieren.
# service network restart
Falls Sie den Netzwerkdienst nicht neu starten möchten, können Sie die Bonding-Schnittstelle einzeln ausloten:
# ifup bond0
5. Bestätigen
Überprüfen Sie die neue Schnittstelle in der Ausgabe des ifconfig-Befehls:
# ifconfig bond0 bond0 Link encap:Ethernet HWaddr 00:0C:29:9B:FD:2B inet addr:10.10.1.10 Bcast:10.10.1.1 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe9b:fd2b/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:39 errors:0 dropped:0 overruns:0 frame:0 TX packets:34 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:13875 (13.5 KiB) TX bytes:3446 (3.3 KiB)
So überprüfen Sie, ob das Bonding-Modul richtig geladen ist:
# lsmod |grep bond bonding 122351 0
So überprüfen Sie, welche Schnittstelle derzeit aktiv ist (im Falle des aktiven Backup-Modus):
# cat /proc/net/bonding/bond0 Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: em0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 5000 Down Delay (ms): 5000 Slave Interface: em0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:21:28:b2:65:26 Slave queue ID: 0 Slave Interface: em1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:21:28:b2:65:27 Slave queue ID: 0
Falls Sie testen möchten, ob das Bonding richtig konfiguriert ist, bringen Sie eine aktive Schnittstelle (hier em0) aus dem Bonding herunter. Sie würden immer noch feststellen, dass die Bonding-Schnittstelle immer noch zugänglich ist.
# ifdown em0RedHat / CentOS :So ändern Sie die aktuell aktive Slave-Schnittstelle des Online-Bondings