GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare il failover e il legame di rete ad alta disponibilità su Linux

Questo tutorial spiega come configurare il legame di rete sul server Linux. Prima di iniziare, lascia che ti spieghi cos'è il network bonding e cosa fa. In un ambiente Windows, il network bonding è chiamato network teaming, questa è una funzionalità che aiuta qualsiasi architettura del server a fornire disponibilità elevata e failover negli scenari in cui uno dei cavi Ethernet principali presenta un malfunzionamento o è configurato in modo errato.

Normalmente, è una procedura consigliata e una funzionalità indispensabile da implementare quando si configura un server per scopi di produzione. Anche se, questa funzione può essere eseguita in una configurazione di ambiente Linux, tuttavia devi prima confermare con l'amministratore di rete per assicurarti che gli switch collegati al tuo server abbiano il supporto per il collegamento di rete. Esistono diverse modalità di collegamento che è possibile implementare nel proprio ambiente server. Di seguito è riportato un elenco delle modalità disponibili e delle loro attività:

  • Bilancia-rr
    Questa modalità fornisce funzionalità di bilanciamento del carico e tolleranza agli errori (failover) tramite criteri round-robin. Significa che trasmette i pacchetti in ordine sequenziale dal primo slave disponibile fino all'ultimo.
  • Backup attivo
    Questa modalità fornisce funzionalità di tolleranza agli errori tramite criteri di backup attivo. Significa che una volta che il collegamento ethernet è attivo, solo 1 degli slave ethernet è attivo. L'altro slave ethernet diventerà attivo solo se e solo se l'attuale slave attivo non è attivo. Se scegli questa modalità, noterai che l'indirizzo MAC di collegamento è visibile esternamente su una sola scheda di rete. Questo per evitare di confondere l'interruttore.
  • Bilancia-xor
    Questa modalità fornisce bilanciamento del carico e tolleranza agli errori. Trasmette in base alla politica hash di trasmissione selezionata. È possibile selezionare criteri di trasmissione alternativi tramite l'opzione xmit_hash_policy.
  • Trasmissione
    Questa modalità fornisce solo la tolleranza agli errori. Trasmette tutto su tutte le interfacce ethernet slave.
  • 802.3ad
    Questa modalità fornisce bilanciamento del carico e tolleranza agli errori. Crea un gruppo di aggregazione che condivide la stessa velocità e le stesse impostazioni duplex. Utilizza tutte le interfacce Ethernet slave nell'aggregatore attivo, si basa sulla specifica 802.3ad. Per implementare questa modalità, ethtool deve supportare i driver di base per recuperare la velocità e la modalità duplex di ogni slave. Lo switch deve supportare anche l'aggregazione di collegamenti dinamici. Normalmente, ciò richiede l'intervento di Network Engineer per la configurazione dettagliata.
  • Bilancia-TLB
    Questa modalità fornisce funzionalità di bilanciamento del carico poiché il nome TLB rappresenta bilanciamento del carico di trasmissione . Per questa modalità, se la configurazione tlb_dynamic_lb =1, il traffico in uscita viene distribuito in base al carico corrente su ogni slave. Se la configurazione tlb_dynamic_lb =0, il bilanciamento del carico è disabilitato, ma il carico viene distribuito solo utilizzando la distribuzione hasd. Per questa modalità, ethtool deve supportare i driver di base per recuperare la velocità di ogni slave.
  • Bilancia-ALB
    Questa modalità fornisce funzionalità di bilanciamento del carico poiché il nome TLB rappresenta bilanciamento del carico adattivo . Simile a balance-tlb, tranne per il fatto che sia il traffico di invio che quello di ricezione sono vincolati. Riceve il bilanciamento del carico ottenendo la negoziazione ARP. Il driver di collegamento intercetta le risposte ARP inviate dal sistema locale in uscita e sovrascrive l'indirizzo hardware di origine con l'indirizzo hardware univoco di uno degli slave nel legame. Per questa modalità, l'ethtool deve supportare i driver di base per recuperare la velocità di ogni slave.


1. Nota preliminare

Per questo tutorial, sto usando Oracle Linux 6.4 nella versione a 32 bit. Si noti che anche se la configurazione viene eseguita in Oracle Linux, i passaggi sono applicabili anche alle distribuzioni CentOS e Red Hat OS e anche ai sistemi a 64 bit. Il risultato finale della nostra configurazione di esempio mostrerà che la connessione effettuata al nostro server di collegamento rimarrà connessa anche se ho disabilitato 1 delle reti Ethernet. In questo esempio, mostrerò come applicare il legame di rete utilizzando la modalità 1 che è la politica di backup attivo.


2. Fase di installazione

Per questo processo, non è necessaria alcuna installazione. Un'installazione Linux predefinita di un server include tutti i pacchetti necessari per una configurazione di collegamento di rete.


3. Fase di configurazione

Prima di iniziare la configurazione, dobbiamo assicurarci di avere almeno 2 interfacce Ethernet configurate nel nostro server. Per verificarlo, vai alla cartella di configurazione della rete ed elenca le interfacce ethernet disponibili. Di seguito sono riportati i passaggi:

cd /etc/sysconfig/network-scripts/
ls *ifcfg*eth*

Il risultato è:

ifcfg-eth0 ifcfg-eth1 

Si noti che attualmente abbiamo 2 interfacce Ethernet configurate nel nostro server che sono ETH0 ed ETH1.

Ora configuriamo un'interfaccia di bonding chiamata BOND0. Questa interfaccia sarà un'interfaccia ethernet virtuale che contiene l'interfaccia ethernet fisica di ETH0 ed ETH1. Di seguito sono riportati i passaggi:

vi ifcfg-bond0
DEVICE=bond0
ONBOOT=yes
MASTER=yes
IPADDR=172.20.43.110
NETMASK=255.255.255.0
GATEWAY=172.20.43.1
BONDING_OPTS="mode=1 miimon=100"
TYPE=Ethernet

Quindi esegui:

ls *ifcfg*bon*

Il risultato è:

ifcfg-bond0 


Questo è tutto. Si noti che all'interno dell'interfaccia BOND0 ho incluso un indirizzo IP. Questo indirizzo IP sarà l'unico indirizzo IP connesso al nostro server. Per procedere nel processo, è necessario modificare l'interfaccia fisica ethernet relativa all'interfaccia BOND0. Di seguito sono riportati i passaggi:

vi ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
vi ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes

Fatto. Abbiamo effettuato la modifica dell'interfaccia ETH0 ed ETH1. Si noti che abbiamo rimosso l'indirizzo IP all'interno di entrambe le interfacce e aggiunto MASTER =bond0. Ciò è necessario per convalidare che entrambe le interfacce saranno interfacce virtuali dedicate all'interfaccia ethernet BOND0.

Per procedere con la configurazione. Creiamo un file di configurazione del legame chiamato bonding.conf in /etc/modprobe.d . Di seguito sono riportati i passaggi:

vi /etc/modprobe.d/bonding.conf
alias bond0 bonding
options bond0 mode=1 miimon=100
modprobe bonding 

Sulla base della configurazione di cui sopra, abbiamo configurato un modulo di collegamento utilizzando l'interfaccia BOND0. Abbiamo anche assegnato la configurazione del legame per utilizzare la modalità =1 che è la politica di backup attivo. L'opzione miimon =100 rappresenta la frequenza di monitoraggio per il nostro server di collegamento per monitorare lo stato dell'interfaccia in milli secondi. Come descritto sopra, questa modalità fornirà funzionalità di tolleranza agli errori nella configurazione della rete del server.

Poiché tutto è impostato, riavviamo il servizio di rete per caricare la nuova configurazione. Di seguito sono riportati i passaggi:

service network restart
Shutting down interface eth0: [ OK ]
Shutting down interface eth1: [ OK ]
Shutting down loopback interface: [ OK ]
Bringing up loopback interface: [ OK ]
Bringing up interface bond0: [ OK ]


Eccellente, ora abbiamo caricato la nuova configurazione che avevamo fatto sopra. Noterai che la nuova interfaccia denominata BOND0 verrà mostrata nell'elenco delle reti. Noterai inoltre che non esiste un indirizzo IP assegnato alle interfacce ETH0 ed ETH1, solo l'interfaccia BOND0 mostra l'IP.

ifconfig
bond0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
inet addr:172.20.43.110 Bcast:172.20.43.255 Mask:255.255.255.0
inet6 addr: fe80::a00:27ff:fe61:e488/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:1723 errors:0 dropped:0 overruns:0 frame:0
TX packets:1110 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:147913 (144.4 KiB) TX bytes:108429 (105.8 KiB)
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (101.0 KiB) TX bytes:105439 (102.9 KiB)
eth1 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:632 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44487 (43.4 KiB) TX bytes:3288 (3.2 KiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:208 errors:0 dropped:0 overruns:0 frame:0
TX packets:208 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:18080 (17.6 KiB) TX bytes:18080 (17.6 KiB)


Puoi anche controllare lo stato dell'incollaggio tramite questo comando:

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0

Nota su quanto sopra che abbiamo convertito con successo le interfacce ETH0 ed ETH1 in una configurazione di legame usando la modalità di backup attivo. Affermato anche che ora il server sta utilizzando l'interfaccia ETH0, ETH1 sarà come interfaccia di backup.


4. Fase di test

Ora, poiché tutto è configurato come previsto. Facciamo un semplice test per assicurarci che la configurazione che abbiamo fatto sia corretta. Per questo test, accederemo a un nuovo server (o desktop Linux) e inizieremo a eseguire il ping del nostro server di collegamento per vedere se si verifica una connessione intermittente durante il test. Di seguito sono riportati i passaggi:

login as: root
[email protected]'s password:
Last login: Wed Sep 14 12:50:15 2016 from 172.20.43.80
ping 172.20.43.110
PING 172.20.43.110 (172.20.43.110) 56(84) bytes of data.
64 bytes from 172.20.43.110: icmp_seq=1 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=2 ttl=64 time=0.424 ms
64 bytes from 172.20.43.110: icmp_seq=3 ttl=64 time=0.415 ms
64 bytes from 172.20.43.110: icmp_seq=4 ttl=64 time=0.427 ms
64 bytes from 172.20.43.110: icmp_seq=5 ttl=64 time=0.554 ms
64 bytes from 172.20.43.110: icmp_seq=6 ttl=64 time=0.443 ms
64 bytes from 172.20.43.110: icmp_seq=7 ttl=64 time=0.663 ms
64 bytes from 172.20.43.110: icmp_seq=8 ttl=64 time=0.961 ms
64 bytes from 172.20.43.110: icmp_seq=9 ttl=64 time=0.461 ms
64 bytes from 172.20.43.110: icmp_seq=10 ttl=64 time=0.544 ms
64 bytes from 172.20.43.110: icmp_seq=11 ttl=64 time=0.412 ms
64 bytes from 172.20.43.110: icmp_seq=12 ttl=64 time=0.464 ms
64 bytes from 172.20.43.110: icmp_seq=13 ttl=64 time=0.432 ms

Durante questo periodo, torniamo al nostro server di collegamento e spegniamo l'interfaccia ethernet ETH0. Di seguito sono riportati i passaggi:

ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:61:E4:88
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1092 errors:0 dropped:0 overruns:0 frame:0
TX packets:1083 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103486 (201.0 KiB) TX bytes:105439 (122.9 KiB)
ifdown eth0 

Ora abbiamo disattivato i servizi per l'interfaccia di rete ETH0. Controlliamo lo stato del legame. Di seguito sono riportati i passaggi:

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0

Noterai che ora l'interfaccia ETH0 non esiste più nello stato di legame. Durante questo periodo, torniamo al server di test precedente e controlliamo il ping continuo sul nostro server di collegamento.

64 bytes from 172.20.43.110: icmp_seq=22 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=23 ttl=64 time=0.402 ms
64 bytes from 172.20.43.110: icmp_seq=24 ttl=64 time=0.437 ms
64 bytes from 172.20.43.110: icmp_seq=25 ttl=64 time=0.504 ms
64 bytes from 172.20.43.110: icmp_seq=26 ttl=64 time=0.401 ms
64 bytes from 172.20.43.110: icmp_seq=27 ttl=64 time=0.454 ms
64 bytes from 172.20.43.110: icmp_seq=28 ttl=64 time=0.432 ms
64 bytes from 172.20.43.110: icmp_seq=29 ttl=64 time=0.434 ms
64 bytes from 172.20.43.110: icmp_seq=30 ttl=64 time=0.411 ms
64 bytes from 172.20.43.110: icmp_seq=31 ttl=64 time=0.554 ms
64 bytes from 172.20.43.110: icmp_seq=32 ttl=64 time=0.452 ms
64 bytes from 172.20.43.110: icmp_seq=33 ttl=64 time=0.408 ms
64 bytes from 172.20.43.110: icmp_seq=34 ttl=64 time=0.491 ms

Ottimo, ora vedrai che anche se abbiamo spento l'interfaccia ETH0, siamo ancora in grado di eseguire il ping e accedere al nostro server di collegamento. Ora facciamo un altro test. Riattiva l'interfaccia ETH0 e disattiva l'interfaccia ETH1.

ifup eth0
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:c8:46:40
Slave queue ID: 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0

Poiché l'interfaccia ETH0 era già attiva, spegniamo l'interfaccia ETH1.

ifdown eth1
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) 
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:61:e4:88
Slave queue ID: 0


Ora torniamo al server di prova e controlliamo cosa succede al ping continuo effettuato sul nostro server di collegamento

64 bytes from 172.20.43.110: icmp_seq=84 ttl=64 time=0.437 ms
64 bytes from 172.20.43.110: icmp_seq=85 ttl=64 time=0.504 ms
64 bytes from 172.20.43.110: icmp_seq=86 ttl=64 time=0.401 ms
64 bytes from 172.20.43.110: icmp_seq=87 ttl=64 time=0.454 ms
64 bytes from 172.20.43.110: icmp_seq=88 ttl=64 time=0.432 ms
64 bytes from 172.20.43.110: icmp_seq=89 ttl=64 time=0.434 ms
64 bytes from 172.20.43.110: icmp_seq=90 ttl=64 time=0.411 ms
64 bytes from 172.20.43.110: icmp_seq=91 ttl=64 time=0.420 ms
64 bytes from 172.20.43.110: icmp_seq=92 ttl=64 time=0.487 ms
64 bytes from 172.20.43.110: icmp_seq=93 ttl=64 time=0.551 ms
64 bytes from 172.20.43.110: icmp_seq=94 ttl=64 time=0.523 ms
64 bytes from 172.20.43.110: icmp_seq=95 ttl=64 time=0.479 ms


Complimenti! Abbiamo configurato e dimostrato con successo che il nostro server di collegamento riesce a soddisfare lo scenario di ripristino di emergenza in una condizione di failover di rete.


Linux
  1. Come configurare l'interfaccia di rete virtuale su Redhat 7 Linux

  2. Come impostare l'indirizzo IP statico e configurare la rete in Linux

  3. Come configurare l'indirizzo IP statico e dinamico in Arch Linux

  4. Come installare e configurare EMC PowerPath su Linux

  5. Come configurare Linux Etherchannel Bonding per l'interfaccia di rete HA

Come installare e configurare il server DNS in Linux

Come installare e configurare ZSH su distribuzioni Linux

Come installare e configurare AnyDesk su sistema Linux

Come installare e configurare Django su sistema Linux

Come installare e configurare PrestaShop su sistema Linux

Come installare e configurare Elasticsearch su sistema Linux