GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

CentOS / RHEL 7 :So erstellen Sie ein Network Bonding (NIC-Teaming) mit nmcli

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


Cent OS
  1. So weisen Sie einer einzelnen Netzwerkschnittstelle unter CentOS 8 mehrere IP-Adressen zu

  2. CentOS / RHEL 7 :So konfigurieren Sie Network Bonding oder NIC-Teaming

  3. So konfigurieren Sie das Netzwerk-Teaming in CentOS/RHEL 7

  4. So konfigurieren Sie Netzwerkschnittstellen-Teaming in CentOS/RHEL 7 und 8

  5. So erstellen Sie eine Bridge-Schnittstelle mit nmcli in CentOS/RHEL 7 und 8

So konfigurieren Sie die Netzwerkschnittstellenbindung unter RHEL 8 / CentOS 8 Linux

Konfigurieren Sie das NIC-Bonding (Network Interface Card) in CentOS 7 / RHEL 7

So konfigurieren Sie NIC-Teaming unter CentOS 8 / RHEL 8

So konfigurieren Sie Netzwerkschnittstellen mit NMCLI auf Centos 7.6

So verwalten Sie das Netzwerk mit dem nmcli-Tool in RedHat/CentOS 7

So ändern Sie den Namen der Netzwerkschnittstelle in eth0 unter CentOS 8 / RHEL 8