Was ist Schnittstellenbindung
Bonding (oder Channel Bonding) ist eine vom Linux-Kernel und Red Hat Enterprise Linux ermöglichte Technologie, die es Administratoren ermöglicht, zwei oder mehr Netzwerkschnittstellen zu kombinieren, um eine einzige, logische „verbundene“ Schnittstelle für Redundanz oder erhöhten Durchsatz zu bilden. Das Verhalten der gebundenen Grenzflächen hängt vom Modus ab; Im Allgemeinen bieten Modi entweder Hot-Standby- oder Lastausgleichsdienste. Darüber hinaus bieten sie möglicherweise eine Überwachung der Verbindungsintegrität.
Warum Interface Bonding verwenden?
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.
Modus | Richtlinie | Wie es funktioniert | Fehlertoleranz | Load-Balancing |
---|---|---|---|---|
0 | Round Robin | Pakete werden sequentiell nacheinander über jede Schnittstelle gesendet/empfangen. | Ja | 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 |
Erstellen der Netzwerkbindung mit nmcli
1. Erstellen der Bonding-Schnittstelle
1. Verwenden Sie den Befehl nmcli connection ohne Argumente, um die bestehenden Netzwerkverbindungen anzuzeigen. Sie können die „Verbindung“ abkürzen “-Argument für „con “. Beispiel:
# nmcli connection NAME UUID TYPE DEVICE ens33 59b61d18-90ed-4c3c-97e0-6c9e0528f25f 802-3-ethernet ens33 ens37 c09f18e1-793b-4d60-9107-98762cf593a7 802-3-ethernet ens37
2. Fügen Sie den „Typ Bindung hinzufügen“ hinzu ”-Argumente und alle zusätzlichen Informationen zum Erstellen einer Netzwerkverbindung. Das folgende Beispiel erstellt eine gebundene Schnittstelle namens bond0, definiert die Schnittstelle als bond0 und setzt den Modus auf „active-backup “, und weist der gebundenen Schnittstelle eine IP-Adresse zu.
# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 192.168.219.150/24 Connection 'bond0' (1a75eef0-f2c9-417d-81a0-fabab4a1531c) successfully added.
Der Befehl nmcli con zeigt die neue Bond-Verbindung.
# nmcli connection NAME UUID TYPE DEVICE bond0 1a75eef0-f2c9-417d-81a0-fabab4a1531c bond bond0 ens33 59b61d18-90ed-4c3c-97e0-6c9e0528f25f 802-3-ethernet ens33 ens37 c09f18e1-793b-4d60-9107-98762cf593a7 802-3-ethernet ens37
3. Der Befehl „nmcli con add type bond“ erstellt eine Schnittstellenkonfigurationsdatei in /etc/sysconfig/network-scripts Verzeichnis. Zum Beispiel:
# cat /etc/sysconfig/network-scripts/ifcfg-bond0 DEVICE=bond0 BONDING_OPTS=mode=active-backup TYPE=Bond BONDING_MASTER=yes BOOTPROTO=none IPADDR=192.168.219.150 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=bond0 UUID=1a75eef0-f2c9-417d-81a0-fabab4a1531c ONBOOT=yes
4. Der Befehl ip addr zeigt die neue Schnittstelle bond0:
# ip addr show bond0 5: bond0: [BROADCAST,MULTICAST,MASTER,UP] mtu 1500 qdisc noqueue state DOWN qlen 1000 link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff inet 192.168.219.150/24 brd 192.168.219.255 scope global bond0 valid_lft forever preferred_lft forever
2. Erstellen der Slave-Schnittstellen
1. Verwenden Sie für jede Schnittstelle, die Sie verbinden möchten, den 'nmcli con add type bond-slave ' Befehl. Im folgenden Beispiel wird ens33 hinzugefügt Schnittstelle als Bond-Slave. Der Befehl enthält das con-name-Argument nicht, sodass automatisch ein Name generiert wird. Sie können den Namen für die Slave-Schnittstellen mit dem Argument con-name festlegen.
# nmcli con add type bond-slave ifname ens33 master bond0 Connection 'bond-slave-ens33' (79c40960-6b2c-47ba-a417-988332affed1) successfully added.
2. Im folgenden Beispiel wird ens37 hinzugefügt Schnittstelle als „Bond-Slave “.
# nmcli con add type bond-slave ifname ens37 master bond0 Connection 'bond-slave-ens37' (46222a52-f2ae-4732-bf06-ef760aea0d7b) successfully added.
3. Der Befehl nmcli con zeigt die neuen Verbindungen.
# nmcli connection NAME UUID TYPE DEVICE bond0 1a75eef0-f2c9-417d-81a0-fabab4a1531c bond bond0 ens33 59b61d18-90ed-4c3c-97e0-6c9e0528f25f 802-3-ethernet ens33 ens37 c09f18e1-793b-4d60-9107-98762cf593a7 802-3-ethernet ens37 bond-slave-ens33 79c40960-6b2c-47ba-a417-988332affed1 802-3-ethernet -- bond-slave-ens37 46222a52-f2ae-4732-bf06-ef760aea0d7b 802-3-ethernet --
4. Die Befehle nmcli con add type bond-slave erstellen Schnittstellenkonfigurationsdateien in /etc/sysconfig/network-scripts Verzeichnis. Zum Beispiel:
# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens33 TYPE=Ethernet NAME=bond-slave-ens33 UUID=79c40960-6b2c-47ba-a417-988332affed1 DEVICE=ens33 ONBOOT=yes MASTER=bond0 SLAVE=yes
# cat /etc/sysconfig/network-scripts/ifcfg-bond-slave-ens37 TYPE=Ethernet NAME=bond-slave-ens37 UUID=46222a52-f2ae-4732-bf06-ef760aea0d7b DEVICE=ens37 ONBOOT=yes MASTER=bond0 SLAVE=yes
5. Der Befehl ip addr enthält „SLAVE “ für die ens33- und ens37-Schnittstellen und enthält auch „master bond0 “.
3. Bindung aktivieren
1. Sie können den Befehl nmcli verwenden, um die Verbindungen herzustellen. Rufen Sie zuerst die Slaves auf und dann das Bond-Interface. Die folgenden Befehle rufen die Slaves auf:
# nmcli connection up bond-slave-ens33 # nmcli connection up bond-slave-ens37
2. Der folgende Befehl ruft die Schnittstelle bond0 auf:
# nmcli con up bond0
3. Der Befehl ip addr oder ip link zeigt jetzt die Slave- und Bond-Schnittstellen an, die UP sind.
# ip link 2: ens33: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 3: ens37: [BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP] mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff 4: bond0: [BROADCAST,MULTICAST,MASTER,UP,LOWER_UP] mtu 1500 qdisc noqueue state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:54:f7:20 brd ff:ff:ff:ff:ff:ff
Informationen zur Netzwerkbindung anzeigen
1. Jede Netzwerkschnittstelle enthält ein Verzeichnis im Verzeichnis /sys/class/net. Zum Beispiel:
# ls /sys/class/net bond0 bonding_masters ens33 ens36 ens37 lo
2. In diesem Beispiel existiert eine Netzwerkbindung mit dem Namen „bond0“. Es existiert ein Verzeichnis mit demselben Namen, das Konfigurationsinformationen für diese Bindung enthält. Zum Beispiel:
# ls /sys/class/net/bond0 addr_assign_type bonding carrier_changes dormant gro_flush_timeout iflink lower_ens37 operstate queues subsystem uevent address broadcast dev_id duplex ifalias link_mode mtu phys_port_id speed tx_queue_len addr_len carrier dev_port flags ifindex lower_ens33 netdev_group power statistics type
3. Innerhalb dieses Verzeichnisses befindet sich ein Bonding-Verzeichnis, das Informationen für die Schnittstelle bond0 enthält. Zum Beispiel:
# ls /sys/class/net/bond0/bonding active_slave ad_aggregator ad_select arp_interval fail_over_mac mii_status num_unsol_na queue_id updelay ad_actor_key ad_num_ports ad_user_port_key arp_ip_target lacp_rate min_links packets_per_slave resend_igmp use_carrier ad_actor_sys_prio ad_partner_key all_slaves_active arp_validate lp_interval mode primary slaves xmit_hash_policy ad_actor_system ad_partner_mac arp_all_targets downdelay miimon num_grat_arp primary_reselect tlb_dynamic_lb
4. Es gibt auch Verzeichnisse, die Informationen für jeden der Slaves enthalten. Zum Beispiel:
# ls /sys/class/net/bond0/lower_ens33 addr_assign_type bonding_slave carrier_changes dev_port flags ifindex master operstate queues subsystem uevent address broadcast device dormant gro_flush_timeout iflink mtu phys_port_id speed tx_queue_len upper_bond0 addr_len carrier dev_id duplex ifalias link_mode netdev_group power statistics type
5. Im Folgenden finden Sie einige Beispiele für das Anzeigen von Dateien im Verzeichnis /sys/class/net.
# cat /sys/class/net/bonding_masters bond0
# cat /sys/class/net/bond0/operstate up
# cat /sys/class/net/bond0/address 00:0c:29:54:f7:20
# cat /sys/class/net/bond0/bonding/active_slave ens33
# cat /sys/class/net/bond0/bonding/mode active-backup 1
# cat /sys/class/net/bond0/bonding/slaves ens33 ens37
6. Nachfolgend sehen Sie ein Beispiel für die Anzeige der Datei /proc/net/bonding/bond0.
# 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): 100 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
So deaktivieren Sie IPv4 oder IPv6 auf einer gebundenen Schnittstelle
Diese Schritte sind nur erforderlich, wenn bond1 keine IPv4- oder IPv6-Adresse verwendet
# nmcli connection modify bond1 ipv4.method disabled
und/oder
# nmcli connection modify bond1 ipv6.method ignore