Bei Netzwerkservern ist es eine wichtige Anforderung sicherzustellen, dass die Netzwerkschnittstelle jederzeit verfügbar ist. Auf Red Hat Enterprise Linux 7 können Sie aggregierte Netzwerkschnittstellen erstellen. Verwenden Sie Netzwerkteaming oder Netzwerkbindung, um dieses Ziel zu erreichen.
In früheren Versionen von RHEL war Network Bonding die Standardmethode zum Erstellen aggregierter Netzwerkschnittstellen. In RHEL 7 wurde Network Teaming als Lösung hinzugefügt. Der Hauptunterschied zwischen diesen beiden besteht darin, dass die Netzwerkbindung vollständig im Benutzerbereich stattfand, während beim Netzwerk-Teaming der Teamd-Daemon hinzugefügt wird, um auch die Interaktion im Benutzerbereich zu ermöglichen. Auch wenn beide Methoden immer noch gültig sind, ist Netzwerk-Teaming die bevorzugte Methode.
In früheren Versionen von Red Hat Enterprise Linux wurde Network Bonding verwendet, um die gleichen Ziele zu erreichen. Netzwerk-Teaming ist neu in Red Hat Enterprise Linux 7. Die Lösung besteht aus einem kleinen Kernel-Treiber und einem Daemon, der im Userspace verfügbar ist:teamd.
# rpm -qa | grep teamd teamd-1.27-4.el7.x86_64
Der Kernel kümmert sich um die Verarbeitung von Netzwerkpaketen, während der Teamd-Treiber die Logik und die Schnittstellenverarbeitung übernimmt. Um festzustellen, wie genau dies geschieht, werden verschiedene Läufer verwendet. Läufer im Teaming entsprechen den Bonding-Modi. Sie werden verwendet, um die Logik der Verkehrsabwicklung zwischen den an der Konfiguration beteiligten Schnittstellen zu definieren. Die folgende Tabelle enthält eine Zusammenfassung der verfügbaren Läufer.
Läufer | Bemerkung |
---|---|
Roundrobin | Dies ist die Standardeinstellung, die wir verwenden, sie sendet einfach Pakete an alle Schnittstellen im Team im Round-Robin-Verfahren, d. h. eines nach dem anderen, gefolgt von der nächsten Schnittstelle. |
Sendung | Der gesamte Datenverkehr wird über alle Ports gesendet. |
aktive Sicherung | Eine Schnittstelle wird verwendet, während die andere als Backup reserviert ist, der Link wird auf Änderungen überwacht und verwendet bei Bedarf den Failover-Link. |
Lastenausgleich | Der Datenverkehr wird basierend auf dem Tx-Datenverkehr über alle Schnittstellen verteilt, die gleiche Last sollte auf die verfügbaren Schnittstellen verteilt werden. |
lacp | Implementiert das 802.3ad LACP-Protokoll. |
1. Konfigurieren Sie das Netzwerkteam mithilfe von Definitionen im JSON-Format [nicht dauerhaft]
1. Erstellen Sie eine Definitionsdatei im JSON-Format für das Team und seine Komponentenports, in diesem Beispiel /root/team_config/team0.conf .
# cat /root/team_config/team0.conf #team0.conf { "device": "team0", "runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}, "ports": { "enp0s8": { "prio": -10, "sticky": true }, "enp0s9": { "prio": 100 } } }
2. Verwenden Sie den Befehl ip, um die Komponentenports herunterzufahren:
# ip link set enp0s8 down # ip link set enp0s9 downHinweis :Aktive Schnittstellen können einem Team nicht hinzugefügt werden.
3. Starten Sie eine Instanz des Teamd-Daemons und lassen Sie die Team-Schnittstelle erstellen, indem Sie die Konfigurationsdatei lesen (in diesem Beispiel /root/team_config/team0.conf):
# teamd -g -f /root/team_config/team0.conf -d Using team device "team0". Using PID file "/var/run/teamd/team0.pid" Using config file "/root/team_config/team0.conf"Hinweis :Das -g Option zeigt Debugging-Meldungen an und kann weggelassen werden.
4. Verwenden Sie den Befehl ip, um die IPaddr- und Netzwerkmasken-Präfixlänge der Team-Schnittstelle festzulegen:
# ip addr add 192.168.22.10/24 dev team0
5. Überprüfen Sie die Konfiguration mit den Befehlen „ip addr“ und „teamdctl“.
# ip addr team0:mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 08:00:27:5a:d8:50 brd ff:ff:ff:ff:ff:ff inet 192.168.22.10/24 scope global team0 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe5a:d850/64 scope link valid_lft forever preferred_lft forever
# teamdctl team0 state setup: runner: activebackup ports: enp0s8 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 enp0s9 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 runner: active port: enp0s9
2. Netzwerkteam mit ifcfg-Dateien konfigurieren [Persistent]
1. Gehen Sie zu /etc/sysconfig/network-scripts Verzeichnis und erstellen Sie die Datei „ifcfg-team0“ wie unten gezeigt:
# cat /etc/sysconfig/network-scripts/ifcfg-team0 DEVICE=team0 DEVICETYPE=Team ONBOOT=yes BOOTPROTO=dhcp NM_CONTROLLED=no #IPADDR=192.168.11.1 PREFIX=24 TEAM_CONFIG='{"runner": {"name": "activebackup"}, "link_watch": {"name": "ethtool"}}'Hinweis :Die Teaming-Schnittstelle team0 kann auch eine statische IP mit BOOTPROTO=none haben
2. Bearbeiten Sie die Dateien für die jeweilige Schnittstelle (hier habe ich zwei Schnittstellen enp0s8 &enp0s9 hinzugefügt):
# cat /etc/sysconfig/network-scripts/ifcfg-enp0s8 DEVICE=enp0s8 #HWADDR=D4:85:64:01:46:9E DEVICETYPE=TeamPort ONBOOT=yes NM_CONTROLLED=no TEAM_MASTER=team0 TEAM_PORT_CONFIG='{"prio": 100}'
# cat /etc/sysconfig/network-scripts/ifcfg-enp0s9 DEVICE=enp0s9 #HWADDR=D4:85:64:01:46:9E DEVICETYPE=TeamPort ONBOOT=yes TEAM_MASTER=team0 NM_CONTROLLED=no TEAM_PORT_CONFIG='{"prio": 100}'
3. Stellen Sie sicher, dass beide Schnittstellen heruntergefahren sind:
# ip link set enp0s8 down # ip link set enp0s9 downHinweis :Aktive Schnittstellen können einem Team nicht hinzugefügt werden.
4. Jetzt können Sie Ihre Benutzeroberfläche aufrufen
# ifup team0
5. Überprüfen Sie die Teaming-Konfiguration mit den Befehlen „ip addr“, „nmcli device status“ und „teamdctl“.
# ip addr team0:mtu 1500 qdisc noqueue state UP qlen 1000 link/ether 08:00:27:2e:4c:65 brd ff:ff:ff:ff:ff:ff inet 192.168.57.101/24 brd 192.168.57.255 scope global dynamic team0 valid_lft 1178sec preferred_lft 1178sec inet6 fe80::a00:27ff:fe2e:4c65/64 scope link tentative dadfailed valid_lft forever preferred_lft forever
# nmcli device status DEVICE TYPE STATE CONNECTION enp0s8 ethernet unmanaged -- enp0s9 ethernet unmanaged -- team0 team unmanaged --
# teamdctl team0 state setup: runner: activebackup ports: enp0s8 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 enp0s9 link watches: link summary: up instance[link_watch_0]: name: ethtool link: up down count: 0 runner: active port: enp0s8
Entfernen eines Teams
Um eine Instanz des Team-Daemons zu beenden oder zu beenden, verwenden Sie den folgenden Befehl:
# teamd -t team0 -k