GNU/Linux >> Linux Esercitazione >  >> Cent OS

CentOS / RHEL 7:Come creare un Network Bonding (NIC teaming) usando nmcli

Cos'è il collegamento dell'interfaccia

Il bonding (o channel bonding) è una tecnologia abilitata dal kernel Linux e da Red Hat Enterprise Linux, che consente agli amministratori di combinare due o più interfacce di rete per formare un'unica interfaccia logica "legata" per la ridondanza o un aumento del throughput. Il comportamento delle interfacce legate dipende dalla modalità; in generale, le modalità forniscono servizi di hot standby o di bilanciamento del carico. Inoltre, possono fornire il monitoraggio dell'integrità dei collegamenti.

Perché usare il collegamento dell'interfaccia?

I due motivi importanti per creare un collegamento di interfaccia sono:
1. Per fornire una maggiore larghezza di banda
2. Per fornire ridondanza in caso di guasto hardware

Uno dei prerequisiti per configurare un bonding è avere uno switch di rete che supporti EtherChannel (il che vale per quasi tutti gli switch).

Modalità di incollaggio

A seconda delle tue esigenze, puoi impostare la modalità di incollaggio su una delle 7 modalità seguenti.

Modalità Politica Come funziona Tolleranza ai guasti Bilanciamento del carico
0 Round Robin I pacchetti vengono trasmessi/ricevuti in sequenza attraverso ciascuna interfaccia uno per uno.
1 Backup attivo una NIC attiva mentre un'altra NIC è inattiva. Se la NIC attiva si interrompe, diventa attiva un'altra NIC. supportato solo in ambienti x86. No
2 XOR [OR esclusivo] In questa modalità, l'indirizzo MAC della NIC slave viene confrontato con il MAC della richiesta in entrata e una volta stabilita questa connessione, la stessa NIC viene utilizzata per trasmettere/ricevere per il MAC di destinazione.
3 Trasmissione Tutte le trasmissioni vengono inviate a tutti gli slave No
4 Aggregazione dinamica dei collegamenti Le NIC aggregate agiscono come una NIC che si traduce in una maggiore velocità effettiva, ma fornisce anche il failover nel caso in cui una NIC si guasta. Dynamic Link Aggregation richiede uno switch che supporti IEEE 802.3ad.
5 Trasmissione del bilanciamento del carico (TLB) Il traffico in uscita viene distribuito in base al carico corrente su ciascuna interfaccia slave. Il traffico in entrata viene ricevuto dallo slave corrente. Se lo slave ricevente si guasta, un altro slave assume l'indirizzo MAC dello slave guasto.
6 Bilanciamento del carico adattivo (ALB) A differenza di Dynamic Link Aggregation, Adaptive Load Balancing non richiede alcuna configurazione di switch particolare. Il bilanciamento del carico adattivo è supportato solo negli ambienti x86. I pacchetti di ricezione sono bilanciati dal carico tramite la negoziazione ARP.

Creazione del legame di rete utilizzando nmcli

1. Creazione dell'interfaccia di incollaggio

1. Utilizzare il comando di connessione nmcli senza argomenti per visualizzare le connessioni di rete esistenti. Puoi abbreviare la "connessione ” argomento in “con “. Esempio:

# 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. Includi "add type bond " argomenti e qualsiasi informazione aggiuntiva per creare una connessione di rete. L'esempio seguente crea un'interfaccia vincolata denominata bond0, definisce l'interfaccia come bond0, imposta la modalità su "backup attivo " e assegna un indirizzo IP all'interfaccia collegata.

# 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.

Il comando nmcli con mostra la nuova connessione di legame.

# 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. Il comando 'nmcli con add type bond' crea un file di configurazione dell'interfaccia in /etc/sysconfig/network-scripts directory. Ad esempio:

# 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. Il comando ip addr mostra la nuova interfaccia 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. Creazione delle interfacce slave

1. Per ogni interfaccia che vuoi collegare, usa 'nmcli con add type bond-slave ' comando. L'esempio seguente aggiunge ens33 interfaccia come schiavo obbligato. Il comando non include l'argomento con-name, quindi viene generato automaticamente un nome. È possibile impostare il nome per le interfacce slave con l'argomento con-name.

# nmcli con add type bond-slave ifname ens33 master bond0
Connection 'bond-slave-ens33' (79c40960-6b2c-47ba-a417-988332affed1) successfully added.

2. L'esempio seguente aggiunge ens37 interfaccia come "slave di legame “.

# nmcli con add type bond-slave ifname ens37 master bond0
Connection 'bond-slave-ens37' (46222a52-f2ae-4732-bf06-ef760aea0d7b) successfully added.

3. Il comando nmcli con mostra le nuove connessioni.

# 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. I comandi nmcli con add type bond-slave creano file di configurazione dell'interfaccia in /etc/sysconfig/network-scripts directory. Ad esempio:

# 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. Il comando ip addr include "SLAVE ” per le interfacce ens33 ed ens37 e include anche “master bond0 “.

3. Attivazione del Bond

1. È possibile utilizzare il comando nmcli per visualizzare le connessioni. Richiama prima gli schiavi e poi l'interfaccia di legame. I seguenti comandi richiamano gli slave:

# nmcli connection up bond-slave-ens33
# nmcli connection up bond-slave-ens37

2. Il comando seguente fa apparire l'interfaccia di bond0:

# nmcli con up bond0

3. Il comando ip addr, o ip link, ora mostra le interfacce slave e bond che sono UP.

# 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

Visualizzazione delle informazioni sull'associazione di rete

1. Ciascuna interfaccia di rete contiene una directory nella directory /sys/class/net. Ad esempio:

# ls /sys/class/net
bond0  bonding_masters  ens33  ens36  ens37  lo

2. In questo esempio, esiste un legame di rete denominato "bond0". Esiste una directory con lo stesso nome che contiene informazioni di configurazione per quel legame. Ad esempio:

# 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. All'interno di questa directory è presente una directory di collegamento che contiene informazioni per l'interfaccia bond0. Ad esempio:

# 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. Esistono anche directory che contengono informazioni per ciascuno degli slave. Ad esempio:

# 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. Di seguito sono riportati alcuni esempi di visualizzazione di file nella directory /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. Di seguito è riportato un esempio di visualizzazione del file /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

Come disabilitare IPv4 o IPv6 su un'interfaccia collegata

Questi passaggi sono necessari solo se bond1 non utilizzerà un indirizzo ipv4 o ipv6

# nmcli connection modify bond1 ipv4.method disabled

e/o

# nmcli connection modify bond1 ipv6.method ignore


Cent OS
  1. Come creare un bridge di rete su CentOS 7 / RHEL 7

  2. CentOS / RHEL 7:come modificare i nomi dell'interfaccia di rete

  3. CentOS / RHEL 5:come configurare il collegamento dell'interfaccia (team NIC)

  4. CentOS / RHEL 4:come configurare il collegamento dell'interfaccia (NIC teaming)

  5. Come creare un'interfaccia bridge utilizzando nmcli in CentOS/RHEL 7 e 8

Come configurare il collegamento dell'interfaccia di rete su RHEL 8 / CentOS 8 Linux

Configura il collegamento NIC (scheda di interfaccia di rete) in CentOS 7 / RHEL 7

Come configurare il gruppo NIC su CentOS 8 / RHEL 8

Come configurare le interfacce di rete utilizzando NMCLI su Centos 7.6

Come gestire la rete utilizzando lo strumento nmcli in RedHat/CentOS 7

Come modificare il nome dell'interfaccia di rete in eth0 su CentOS 8 / RHEL 8