Jump to content
Guest

NIC Teaming / Bonding pentru Serverele Debian-based ( round robin )

Recommended Posts

Posted (edited)

Salutare,

Fara alte prezentari si/sau precizari, in acest mic tutorial va voi arata cum sa fuzionati doua placi de retea fizice conectate la diferiti provideri sau in switch-uri diferite la acelas provider, obtinand in acest fel o singura interfata logica.

Aceasta modalitate ofera redundanta conexiunii voastre la server, in cazul in care link-ul cade pe una dintre placi, cealalta va continua sa functioneze, reducand in acest mod indisponibilitatile (downtime-urile) la un numar mult mai mic decat intr-un setup basic neredundant.

Creeati fisierul /etc/modprobe.d/bonding.conf cu urmatorul continut:


alias bond0 bonding
options bond0 mode=0 miimon=100 downdelay=200 updelay=200 max_bonds=2

Vom avea nevoie si de package-ul ifenslave pe care-l vom instala

apt-get install ifenslave

Pentru a activa bonding-ul, rulam comanda

modprobe -v bonding mode=0

Apoi editam /etc/network/interfaces dupa cum urmeaza



auto lo
iface lo inet loopback

#auto eth0
#iface eth0 inet manual

#auto eth1
#iface eth1 inet manual

auto bond0
iface bond0 inet static
slaves eth1 eth0
bond_miimon 1000
bond_mode balance-rr
address xx.xx.xx.xx
netmask 255.255.255.0
gateway xx.xx.xx.1

NOTA: Observati ca nu avem declarate valori pentru ETH0 si ETH1 (sunt comentate cu #) deoarece sunt declarate ca slave-uri in bond. In caz contrar, bonding-ul nu le va mai putea ridica in mod roundrobin pentru ca debian le va ridica direct din interfaces, inainte ca bondingul sa aplice modificarile.

Dupa care, fie reincarcati setarile pentru networking, fie restartati serviciul, fie dati reboot la server (personal recomand reload, dar si restart este ok, pentru a reduce downtime-ul. Daca nu va pasa de downtime, dati reboot).

Verificati daca totul este ok:


bond0 Link encap:Ethernet HWaddr xxxxxxxxxxx
inet addr:xx.xx.xx.xxx Bcast:xx.xx.xx.255 Mask:255.255.255.0
inet6 addr: fe80::21e:68ff:fe79:2521/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:404448 errors:0 dropped:0 overruns:0 frame:0
TX packets:309507 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:100827458 (96.1 MiB) TX bytes:109559732 (104.4 MiB)

eth0 Link encap:Ethernet HWaddr xxxxxxxxxxx
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:90165 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:35840310 (34.1 MiB) TX bytes:0 (0.0
Interrupt:20 Memory:df5e0000-df600000

eth1 Link encap:Ethernet HWaddr xxxxxxxxxxx
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:2661952 errors:0 dropped:0 overruns:0 frame:0
TX packets:2382690 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1559742780 (1.4 GiB) TX bytes:2102646675 (1.9 GiB)
Interrupt:16 Memory:df6e0000-df700000

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:65536 Metric:1
RX packets:269201 errors:0 dropped:0 overruns:0 frame:0
TX packets:269201 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:46690663 (44.5 MiB) TX bytes:46690663 (44.5 MiB)

---

Sa detaliem putin despre modurile de bonding si cam ce face fiecare.

balance-rr

Este poate cel mai cunoscut mod de balansare al traficului, dar si cel mai simplu, deoarece aproximativ toate switch-urile sunt capabile sa recunoasca acest mod. Frame-urile sunt transmise fara hashing in modul round-robin.

802.3ad

Denumit si LACP, este modul standard de agregare a link-urilor si include foarte multe optiuni configurabile pentru balansarea traficului.

Aici trebuie precizat faptul ca, daca linux-ul este configurat pentru 802.3ad, switch-ul trebuie sa fie informat despre acest lucru. In caz contrar, de multe ori jumatate din pachete se pierd pe drum (in/out).

In termenii CISCO acest lucru se numeste EtherChannel. Din momentul in care switch-ul stie ca cele doua porturi vor fi utilizate pentru balansarea 802.3ad, va balansa traficul destinat serverului respectiv.

active-backup

Acest mod se foloseste de o singura interfata. O a alta interfata poate deveni activa numai daca interfata activa in prezent ramane fara link.

De aici si numele de active-backup, deoarece se foloseste de o singura interfata tot timpul, iar pe a doua o tine inactiva si o foloseste ca backup, doar in cazul in care prima are probleme in transmiterea sau receptionarea de pachete.

balance-xor

Acest mod balanseaza traficul conform receptorului de la "celalalt capat". Acest mod este valabil de asemenea ca si parte a 802.3ad.

Un lucru interesant este acela ca modurile care au nevoie de suport din partea switch-ului, pot fi folosite pentru a conecta doua servere via crossover.

Lucru destul de benefic, mai ales atunci cand rulati aplicatii cu replicarea diverselor date intre servere.

broadcast

Acest mod nu prea este o modalitate de agregare a link-urilor. El pur si simplu trimite pachetele prin ambele interfete.

Utilizand acest mod, veti primi si trimite pachete duplicat. Pentru a vedea despre ce este vorba, rulati un simplu ping catre rstforums.com.

PING 89.45.193.183 (89.45.193.183) from 11.2.3.4 : 56(84) bytes of data.
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.7 ms
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 89.45.193.183: icmp_seq=2 ttl=64 time=0.216 ms
64 bytes from 89.45.193.183: icmp_seq=3 ttl=64 time=0.267 ms
64 bytes from 89.45.193.183: icmp_seq=4 ttl=64 time=0.222 ms

balance-tlb

Acest mod ofera balansare doar pentru trafficul trimis, nu si pentru cel primit. Pentru traficul primit este folosita o singura interfata (de regula cea care este declarata prima in sistem).

Driver-ul pentru bonding va schimba adresa MAC a interfetei atunci cand trimite pachete, insa pentru pachetele primite, va ramane mereu acelas.

balance-alb

Similar modului anterior mentionat, balance-alb va balansa atat traficul outbound cat si inbound, prin aceeasi metoda cu schimbarea de MAC.

Cam atat. In mare parte asta este cam ceea ce trebuie sa stiti despre fiecare bonding mode in parte.

Daca vreti mai mult, va recomand sa cititi aici despre aceste lucruri: Link aggregation - Wikipedia, the free encyclopedia

Sunt explicate si unele metode pentru Windows. :)

Edited by AGSQ
Changed iface bond0 inet manual TO iface bond0 inet static
Posted (edited)

O mica problema: " doua placi de retea fizice conectate la diferiti provideri sau in switch-uri diferite la acelas provider".

- Agregarea link-urilor tine de alt osi layer si nu este posibila agregarea a doua sau mai multe conexiuni de la diferiti isp.

- Switch-ul trebuie sa aiba lacp si toate cele. (Un switch simplu nu stie ce sa faca atunci cand primeste pe doua porturi aceiasi adresa mac (ex: bond0))

Edited by aelius
Posted
O mica problema: " doua placi de retea fizice conectate la diferiti provideri sau in switch-uri diferite la acelas provider".

- Agregarea link-urilor tine de alt osi layer si nu este posibila agregarea a doua sau mai multe conexiuni de la diferiti isp.

- Switch-ul trebuie sa aiba lacp si toate cele. (Un switch simplu nu stie ce sa faca atunci cand primeste pe doua porturi aceiasi adresa mac (ex: bond0))

Intr-adevar, trebuia sa precizez asta (de ce oare ramasesem cu gandul ca am scris chestia asta, nu pot sa stiu).

Multumesc pentru completare.

Posted

subscriu la ce a zis Tex... chiar vroiam sa zic de LACP pentru ca m-am lovit de lucrurile astea in trecut chiar la o cererea de-a lui Tex :)))

Link Aggregation Control Protocol (LACP) (802.3ad) for Gigabit Interfaces - Cisco

LACP (802.3ad) for Gigabit Interfaces Feature Overview

The LACP (802.3ad) for Gigabit Interfaces feature bundles individual Gigabit Ethernet links into a single logical link that provides the aggregate bandwidth of up to 4 physical links. A Cisco 10000 series router supports a maximum of 4 Gigabit Ethernet bundled ports per port channel and a maximum of 64 Gigabit Ethernet port channels per chassis.

All LAN ports on a port channel must be the same speed and must all be configured as either Layer 2 or Layer 3 LAN ports. If a segment within a port channel fails, traffic previously carried over the failed link switches to the remaining segments within the port channel. Inbound broadcast and multicast packets on one segment in a port channel are blocked from returning on any other segment of the port channel.

Posted
subscriu la ce a zis Tex... chiar vroiam sa zic de LACP pentru ca m-am lovit de lucrurile astea in trecut chiar la o cererea de-a lui Tex :)))

Link Aggregation Control Protocol (LACP) (802.3ad) for Gigabit Interfaces - Cisco

Daca vrei ceva bine facut, iti faci LACP direct din core pentru fiecare switch in datacenter.

Ceea ce am postat eu aici este cu totul altceva. Doar un mic roundrobin pentru cei ce-si hosteaza serverele acasa, sau ce au servere colocate si vor sa balansese traficul intre cele doua placi de retea.

Daca te intereseaza strict redundanta, atunci faci LACP per rack, nu per server.

Posted
Ce cerere pe networking bre ? :))))

Sa vezi cum vii tu cu lada de bere daca mai faci offtopic in thread-ul meu :))

Toti stim ca ai platit diverse persoane sa-ti faca sesiunile BGP (Ba?tan, Gagicar, Planetar ['cuz "mondial" is too lame ...] ), de-aia ti-ai schimbat si avatarul :>.

Posted
Ar fi interesant sa vorbesti si de partea algoritmului de agregare si in ce cazuri sa se foloseasca unul sau altu

Nu am considerat necesar sa complic toata treaba, insa, cel tarziu maine dimineata o sa intru putin in detalii, as requested.

Posted

Daca tot faci tutoriale pentru cei care au firma de host pe laptop, facem si unul cu rr pe doi provideri diferiti de net? Eu am ceva informatie pusa in practic dar @AGSQ explica mai bine.

Posted
Daca tot faci tutoriale pentru cei care au firma de host pe laptop, facem si unul cu rr pe doi provideri diferiti de net? Eu am ceva informatie pusa in practic dar @AGSQ explica mai bine.

Aici e umpic mai dificil, deoarece trebuie ca prefix-ul tau sa fie anuntat prin ambii provideri, iar (referitor la setup-ul tau) majoritatea au IP-uri alocate de catre provider, 2-3-5-10 ip-uri.

Nici un ISP nu doreste sa anunte un /29 prin ASN-ul altui ISP.

Totusi, pentru cei care au ASN privat si au sesiune cu cei doi provideri, e deja rezolvata treaba, pentru ca BGP ofera redundanta.

Posted

Ma gandeam la ceva mai simplu, eu am auzit doar de BGS. Pentru oamenii care au provideri diferiti si cate un IP la fiecare provider de exemplu.

Sa spunem ca am un server de metin2, netul meu fiberlink nu mai face fata si as dori sa mai adaug inca un net. Ramanem la 2 neturi, 2 placi de retea si 2 gateways diferite. Traficul il impart eu din serverul de DNS(setez un TTL scurt si dau cate un IP via rr). Implementam si un heartbeat sa scoatem ip-ul care nu raspunde in caz ca imi taie vecinul unul din cabluri.

Posted (edited)
eu am auzit doar de BGS.

Te-au alintat si pe tine la meci ? :)))

-------------------------------------

ON: Sa detaliem putin despre modurile de bonding si cam ce face fiecare.

balance-rr

Este poate cel mai cunoscut mod de balansare al traficului, dar si cel mai simplu, deoarece aproximativ toate switch-urile sunt capabile sa recunoasca acest mod. Frame-urile sunt transmise fara hashing in modul round-robin.

802.3ad

Denumit si LACP, este modul standard de agregare a link-urilor si include foarte multe optiuni configurabile pentru balansarea traficului.

Aici trebuie precizat faptul ca, daca linux-ul este configurat pentru 802.3ad, switch-ul trebuie sa fie informat despre acest lucru. In caz contrar, de multe ori jumatate din pachete se pierd pe drum (in/out).

In termenii CISCO acest lucru se numeste EtherChannel. Din momentul in care switch-ul stie ca cele doua porturi vor fi utilizate pentru balansarea 802.3ad, va balansa traficul destinat serverului respectiv.

active-backup

Acest mod se foloseste de o singura interfata. O a alta interfata poate deveni activa numai daca interfata activa in prezent ramane fara link.

De aici si numele de active-backup, deoarece se foloseste de o singura interfata tot timpul, iar pe a doua o tine inactiva si o foloseste ca backup, doar in cazul in care prima are probleme in transmiterea sau receptionarea de pachete.

balance-xor

Acest mod balanseaza traficul conform receptorului de la "celalalt capat". Acest mod este valabil de asemenea ca si parte a 802.3ad.

Un lucru interesant este acela ca modurile care au nevoie de suport din partea switch-ului, pot fi folosite pentru a conecta doua servere via crossover.

Lucru destul de benefic, mai ales atunci cand rulati aplicatii cu replicarea diverselor date intre servere.

broadcast

Acest mod nu prea este o modalitate de agregare a link-urilor. El pur si simplu trimite pachetele prin ambele interfete.

Utilizand acest mod, veti primi si trimite pachete duplicat. Pentru a vedea despre ce este vorba, rulati un simplu ping catre rstforums.com.

PING 89.45.193.183 (89.45.193.183) from 11.2.3.4 : 56(84) bytes of data.
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.7 ms
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 89.45.193.183: icmp_seq=1 ttl=64 time=13.8 ms (DUP!)
64 bytes from 89.45.193.183: icmp_seq=2 ttl=64 time=0.216 ms
64 bytes from 89.45.193.183: icmp_seq=3 ttl=64 time=0.267 ms
64 bytes from 89.45.193.183: icmp_seq=4 ttl=64 time=0.222 ms

balance-tlb

Acest mod ofera balansare doar pentru trafficul trimis, nu si pentru cel primit. Pentru traficul primit este folosita o singura interfata (de regula cea care este declarata prima in sistem).

Driver-ul pentru bonding va schimba adresa MAC a interfetei atunci cand trimite pachete, insa pentru pachetele primite, va ramane mereu acelas.

balance-alb

Similar modului anterior mentionat, balance-alb va balansa atat traficul oubound cat si inbound, prin aceeasi metoda cu schimbarea de MAC.

Cam atat. In mare parte asta este cam ceea ce trebuie sa stiti despre fiecare bonding mode in parte.

Daca vreti mai mult, va recomand sa cititi aici despre aceste lucruri: Link aggregation - Wikipedia, the free encyclopedia

Sunt explicate si unele metode pentru Windows. :)

Am editat si primul post.

Edited by AGSQ

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...