Il teaming NIC è il concetto di combinazione o collegamento di 2 o più interfacce di rete in un'unica interfaccia logica per fornire velocità effettiva e ridondanza elevate. Questa pratica è popolare soprattutto con i server critici in cui è prevista sempre un'elevata disponibilità. In un server con 2 o più NIC schede, il concetto di NIC teaming è fondamentale nel caso in cui una scheda NIC si guasta. Con il teaming NIC, l'interfaccia di rete logica garantirà che la NIC rimanente continuerà a funzionare e servire allo scopo della NIC difettosa. In questa guida, ti guideremo attraverso la configurazione del team NIC in CentOS 8 e RHEL 8.
Diamo un'occhiata ad alcuni dei concetti in giro
- Squadra – Questo è un demone che ti consente di configurare un'interfaccia di rete del team. Teamd fa parte del progetto libteam e sfrutta la libreria libteam per l'implementazione del bilanciamento del carico e della logica round-robin.
- Teamdctl – Questo è uno strumento di utilità per interrogare un'istanza di teamd per informazioni sulla configurazione e statistiche dettagliate.
- Partecipanti – Si tratta di unità di codice distinte in formato JSON utilizzate per implementare diversi concetti di teaming NIC come Round robbin
I corridori esistono nelle seguenti modalità:
- Giro all'italiana :in questa modalità, i dati vengono trasmessi a turno su tutte le porte.
- Trasmissione :qui i dati vengono trasmessi su tutte le porte.
- Bilanciamento del carico :il traffico è distribuito su tutte le NIC.
- Backup attivo :dove un collegamento o una porta è attivato mentre il resto è riservato come backup. Viene utilizzato per il failover per fornire ridondanza, come vedremo più avanti in questa guida.
- Lap :utilizza il protocollo 802.3ad per l'aggregazione dei link
Ora andiamo avanti e configuriamo il team NIC in CentOS 8.
Passaggio:1) Installa il demone Teamd
Teamd è il demone che rende possibile la configurazione delle reti del team. Fortunatamente, CentOS 8 viene fornito con il demone già installato. Se per qualsiasi motivo teamd non è presente sul tuo sistema CentOS 8 / RHEL 8, esegui il comando:
$ sudo dnf install teamd
Al termine della sua installazione, puoi raccogliere informazioni approfondite su teamd eseguendo il comando:
$ rpm -qi teamd
Passaggio:2) Configura il team di NIC con lo strumento nmcli
Nmcli è un'utilità della riga di comando utilizzata per la gestione di NetworkManager. Ma prima, controlliamo le interfacce di rete collegate sul nostro sistema. Esegui il comando
$ nmcli device status
Dall'output sopra, ci sono 2 connessioni ethernet e 1 connessione Wi-Fi sul sistema. Userò i dispositivi di rete enp0s3 e enp0s8 come connessioni slave.
Inoltre puoi usare il comando:
$ nmcli connection show
Quindi eliminerò i dispositivi di rete enp0s3 ed enp0s8 che verranno utilizzati come dispositivi slave utilizzando la sintassi
$ connessione nmcli elimina UUID
Quindi, procedi ed esegui i comandi:
$ nmcli connection delete a2533841-93bf-4a78-9c84-4f7e8669e92f $ nmcli connection delete 77c70d70-2fb2-4a19-bc02-d71b49a6ffac
Dopo l'eliminazione, i due dispositivi di rete dovrebbero ora essere disconnessi. Puoi verificarlo eseguendo:
$ nmcli device status
Ora creiamo una nuova interfaccia per il team e chiamiamola bond0
$ nmcli connection add type team con-name bond0 ifname bond0 config '{"runner": {"name": "activebackup"}}'
Il valore "backup attivo ' è un corridore che può essere sostituito con round-robin, broadcast, random o lacp.
La configurazione viene aggiunta in /etc/sysconfig/network-scripts/ifcfg-team-bond0 file. Per dare un'occhiata agli altri valori assegnati, esegui il comando:
$ nmcli con show bond0
Per visualizzare le interfacce che abbiamo appena configurato, esegui il comando:
$ nmcli connection show
Ora abbiamo un'interfaccia bond0. Nota che le interfacce enp0s3 ed enp0s8 non sono elencate perché le abbiamo eliminate in precedenza.
Quindi, configura l'indirizzamento IP e le voci DNS nell'interfaccia del team e assicurati che si connetta automaticamente
$ nmcli con mod bond0 ipv4.addresses 192.168.43.100/24 $ nmcli con mod bond0 ipv4.gateway 192.168.43.1 $ nmcli con mod bond0 ipv4.dns 8.8.8.8 $ nmcli con mod bond0 ipv4.method manual $ nmcli con mod bond0 connection.autoconnect yes
Quindi aggiungi gli slave di rete all'interfaccia del team
$ nmcli con add type team-slave con-name bond0-slave0 ifname enp0s3 master bond0 $ nmcli con add type team-slave con-name bond0-slave1 ifname enp0s8 master bond0
Per visualizzare l'interfaccia del team e gli slave, esegui ancora una volta il comando:
$ nmcli connection show
Infine riavvia l'interfaccia del team
$ nmcli connection down bond0 && nmcli connection up bond0
Per visualizzare l'interfaccia del team usa il comando:
$ ip address show dev bond0
Usa il comando teamdctl per raccogliere dettagli più fini sull'interfaccia del team
$ sudo teamdctl bond0 state
Dall'output sopra, possiamo vedere chiaramente che abbiamo 2 link attivi:enp0s3 e enp0s8 e la porta attiva è enp0s3.
Test della funzionalità di Active-Backup Teaming
Per verificare la ridondanza di Active-backup, disattiveremo la porta attiva denominata enp0s3 e verificheremo se verrà visualizzato l'altro collegamento.
$ nmcli device disconnect enp0s3 $ sudo teamdctl bond0 state
Come puoi vedere, collega enp0s8 è entrato ed è ora la porta attiva. Ciò accade in pochi millisecondi e mostra che anche quando un collegamento è inattivo per un motivo o per l'altro, la connettività al server sarà comunque mantenuta dall'altro collegamento.
Anche il ping del gateway predefinito e del DNS produrrà un risultato positivo.
A questo punto, abbiamo configurato correttamente il teaming NIC e testato la funzione di ridondanza utilizzando il runner Active-Backup.
Come eliminare una squadra
Il primo passaggio per l'eliminazione di un team consiste nel disattivare l'interfaccia del team.
$ nmcli connection down bond0
Quindi, procedi ed elimina gli slave come mostrato
$ nmcli connection delete bond0-slave0 bond0-slave1
Infine elimina il team che è stato creato
$ nmcli connection delete bond0
Questo ci porta alla fine di questa guida su come configurare il team NIC su CentOS 8.