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. | Sì | Sì |
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. | Sì | 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. | Sì | Sì |
3 | Trasmissione | Tutte le trasmissioni vengono inviate a tutti gli slave | Sì | 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. | Sì | Sì |
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. | Sì | Sì |
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. | Sì | Sì |
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