Network Interface Bonding hat viele Namen:Port Trunking, Channel Bonding, Link Aggregation, NIC-Teaming und andere. Es kombiniert oder aggregiert mehrere Netzwerkverbindungen zu einer einzigen Channel-Bonding-Schnittstelle. Dadurch können zwei oder mehr Netzwerkschnittstellen als eine fungieren, um den Durchsatz zu erhöhen und Redundanz oder Failover bereitzustellen.
Der Linux-Kernel enthält den Bonding-Treiber zum Zusammenfassen mehrerer physischer Netzwerkschnittstellen zu einer einzigen logischen Schnittstelle (z. B. zum Zusammenfassen von eth0 und eth1 zu bond0). Für jede verbundene Schnittstelle können Sie den Modus und die Linküberwachungsoptionen definieren. Es gibt sieben verschiedene Modusoptionen, die jeweils spezifische Lastausgleichs- und Fehlertoleranzeigenschaften bieten, wie in der folgenden Tabelle gezeigt.
Verbindungsmodi
Abhängig von Ihren Anforderungen können Sie den Bindungsmodus auf einen der folgenden 7 Modi einstellen.
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 |
Netzwerk-Bonding-Link-Überwachung
Der Bonding-Treiber unterstützt zwei Methoden, um den Verbindungsstatus eines Slaves zu überwachen:
- Dies ist die standardmäßige und empfohlene Linküberwachungsoption.
- Es überwacht den Trägerstatus der lokalen Netzwerkschnittstelle.
- Sie können die Überwachungsfrequenz und die Verzögerung festlegen.
- Verzögerungszeiten ermöglichen es Ihnen, die Switch-Initialisierung zu berücksichtigen.
- Sendet ARP-Anfragen an Peer-Systeme im Netzwerk und verwendet die Antwort als Hinweis darauf, dass die Verbindung aktiv ist.
- Sie können die Überwachungshäufigkeit und die Zieladressen angeben.
Netzwerkbindung:Konfiguration
Erstellen einer Bonding-Schnittstellendatei
Sie können manuell eine Bonding-Schnittstellendatei in /etc/sysconfig/network-scripts erstellen Verzeichnis. Sie erstellen zuerst die Bindungsschnittstelle und fügen dann die physischen Netzwerkschnittstellen zur Bindung hinzu. Diese physischen Netzwerkschnittstellen werden als „Slaves“ bezeichnet „.
Für das Beispiel in diesem Beitrag sind die Slaves für die Schnittstelle bond0 ens33 und ens37. Stellen Sie vor der Inbetriebnahme sicher, dass das Bondingmodul richtig geladen ist. Um dies zu überprüfen, verwenden Sie den unten gezeigten Befehl:
# lsmod |grep bonding bonding 122351 0
Wenn das Modul nicht geladen ist, laden Sie es mit dem Befehl modprobe.
# modprobe bonding
1. Das Folgende ist ein Beispiel für eine Bonding-Schnittstellendatei:
# cat /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BONDING_OPTS="miimon=1 updelay=0 downdelay=0 mode=active-backup" TYPE=Bond BONDING_MASTER=yes BOOTPROTO=none IPADDR=192.168.2.12 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=bond0 UUID=bbe539aa-5042-4d28-a0e6-2a4d4f5dd744 ONBOOT=yes
2. Das folgende Beispiel definiert ens33 physische Netzwerkschnittstelle als Slave für bond0:
# cat /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet NAME=ens33 UUID=817e285b-60f0-42d8-b259-4b62e21d823d DEVICE=ens33 ONBOOT=yes MASTER=bond0 SLAVE=yes
3. Das folgende Beispiel definiert ens37 physische Netzwerkschnittstelle als Slave für bond0:
# cat /etc/sysconfig/network-scripts/ifcfg-ens37 TYPE=Ethernet NAME=ens37 UUID=f0c23472-1aec-4e84-8f1b-be8a2ecbeade DEVICE=ens37 ONBOOT=yes MASTER=bond0 SLAVE=yes
4. Starten Sie die Netzwerkdienste neu
Starten Sie die Netzwerkdienste neu, um die Bonding-Schnittstelle zu aktivieren.
# systemctl restart network
Falls Sie den Netzwerkdienst nicht neu starten möchten, können Sie die Bonding-Schnittstelle einzeln ausloten:
# ifup bond0
Überprüfen Sie die Netzwerkverbindungskonfiguration
1. Prüfen Sie die neue Schnittstelle in der Ausgabe des Befehls „ip addr show“ :
# ip addr show 1: lo: [LOOPBACK,UP,LOWER_UP] mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 4: ens37: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 5: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff inet 192.168.2.12/24 brd 192.168.2.255 scope global bond0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe54:f720/64 scope link valid_lft forever preferred_lft forever
2. Überprüfen Sie außerdem den aktuellen Status der Bonding-Schnittstellen und welche Schnittstelle derzeit aktiv ist, indem Sie den folgenden Befehl verwenden:
# 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: ens33 MII Status: up MII Polling Interval (ms): 1 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens33 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:20 Slave queue ID: 0 Slave Interface: ens37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:34 Slave queue ID: 0
Aus der obigen Befehlsausgabe können wir das ens33 sehen ist der derzeit aktive Slave im Bund.
Testen der Fehlertoleranz der Verbindungskonfiguration
1. Da es sich um eine Active-Backup-Bonding-Konfiguration handelt, wird die andere Schnittstelle im Bond zum aktiven Slave, wenn eine Schnittstelle ausfällt. Um diese Funktionalität zu überprüfen, werden wir die aktuelle Schnittstelle ens33 herunterfahren.
# ifdown ens33
2. Wenn Sie den Verbindungsschnittstellenstatus erneut überprüfen, werden Sie feststellen, dass der neue aktive Slave die Schnittstelle ens37 ist.
# 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: ens37 MII Status: up MII Polling Interval (ms): 1 Up Delay (ms): 0 Down Delay (ms): 0 Slave Interface: ens37 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:0c:29:54:f7:34 Slave queue ID: 0
Auch das Bond-Interface wird in Betrieb genommen:
# ip add show bond0 5: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff inet 192.168.2.12/24 brd 192.168.2.255 scope global bond0 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe54:f720/64 scope link valid_lft forever preferred_lft foreverCentOS / RHEL 7 :So erstellen Sie eine Schnittstellenbindung mit nmcli