Automatizimi i rrjetit. Një rast nga jeta

Përshëndetje, Habr!

Në këtë artikull, do të donim të flasim për automatizimin e infrastrukturës rrjetësore. Do të paraqesim një skemë funksionale të rrjetit, e cila operon në një kompani të vogël, por shumë të krenarë. Të gjitha përputhjet me pajisjet reale të rrjetit janë rastësi. Ne do të shqyrtojmë një rast që ndodhi në këtë rrjet, i cili mund të çonte në pezullimin e biznesit për një kohë të gjatë dhe humbje të mëdha financiare. Zgjidhja e këtij rasti përshtatet shumë mirë në konceptin e "Automatizimit të infrastrukturës rrjetësore". Me ndihmën e mjeteve të automatizimit, do të tregojmë se si mund të zgjidhen efektivisht problemet komplekse brenda një periudhe të shkurtër, dhe do të mendojmë për arsyet se pse është më perspektivë të dyshohim këto probleme në këtë mënyrë, e jo ndryshe (përmes konsolës).

Kufizimi

Mjetet kryesore për automatizim në dispozicionin tonë janë Ansible (si mjet automatizimi) dhe Git (si depo për playbook-ët e Ansible). Menjëherë dua të sqaroj se kjo nuk është një artikull informues, ku flasim për logjikën e funksionimit të Ansible ose Git, dhe shpjegojmë gjërat bazë (p.sh., çfarë kanë të bëjnë modulët e rolit, skedarët e inventarizimit dhe variablat në Ansible, ose çfarë ndodh kur japim komandat git push ose git commit). Kjo histori nuk ka të bëjë me ndihmën e praktikës në Ansible, për të konfigurimNTP ose SMTP në pajisje. Kjo është një histori se si mund të zgjidhen shpejt dhe, preferohet, pa gabime, problemet rrjetësore. Gjithashtu, është e dëshirueshme të keni një njohuri të mirë se si funksionon rrjeti, veçanërisht çfarë është steka e protokolleve TCP/IP, OSPF, BGP. Zgjedhja e Ansible dhe Git do ta lëmë jashtë diskutimit. Nëse për ju ende qëndron zgjedhja e një zgjidhjeje specifike, rekomandojmë fort ta lexoni librin "Network Programmability and Automation. Skills for the Next-Generation Network Engineer" nga Jason Edelman, Scott S. Lowe, dhe Matt Oswalt.

Tani, në çështje.

Formulimi i detyrës

Të imagjinojmë një situatë: ora është 3 në mëngjes, ju po flini thellë dhe shihni ëndrrat. Një telefonatë. Thërret drejtori teknik:

— Po?
— ###, ####, #####, klasteri i firewallit ka rënë dhe nuk ngrihet!!!
Ju fshini sytë, përpiqeni të kuptoni se çfarë po ndodh dhe imagjinoni si ka mundësi të ndodhte kjo. Në telefon dëgjohet sesi tërhiqen flokët nga koka e drejtorit, dhe ai kërkon të kthejë telefonat, sepse në linjën e dytë po i telefonon drejtori i përgjithshëm.

Pasi gjysëm ore, keni mbledhur të parat inpute nga ndërrimi në detyrë, zgjuar të gjithë ata që mund të zgjohen. Në fund, drejtori teknik nuk gënjeu, gjithçka është ashtu siç duket, klasteri kryesor i firewalleve ka rënë, dhe asnjë lëvizje bazike nuk e rikthen në jetë. Të gjitha shërbimet që ofron kompania nuk funksionojnë.

Zgjidhni problemin sipas dëshirës suaj, çdo kush do të kujtojë diçka personale. Për shembull, pas përditësimit të natës, në mungesë të ngarkesës së madhe gjithçka funksiononte mirë dhe të gjithë të kënaqur shkuan për të fjetur. Filloi trafiku dhe buferat e interfaceve filluan të mbusheshin për shkak të një defekti në driverin e kartës rrjet.

Situatën mund ta përshkruajë mirë Jackie Chan.

Automatizimi i rrjetit. Një rast nga jeta

Faleminderit, Jackie.

Situata nuk është shumë e këndshme, apo jo?

Ta lëmë për njëkohë shokun tonë rrjetor me mendime të trishtueshme.

Të diskutojmë se si do të zhvillohen ngjarjet më tej.

Propozojmë rendin e mëposhtëm të materialit

  1. Të shqyrtojmë skemën e rrjetit dhe ta analizojmë si funksionon;
  2. Të përshkruajmë se si kalojmë configurimet nga një router në tjetrin me ndihmën e Ansible;
  3. Të flasim për automatizimin e infrastrukturës IT në përgjithësi.

Skema e rrjetit dhe përshkrimi i saj

Skema

Automatizimi i rrjetit. Një rast nga jeta

Të shqyrtojmë skemën logjike të organizatës tonë. Nuk do të përmendim prodhues të caktuar pajisjesh, në kuadër të këtij artikulli kjo nuk ka rëndësi (Lexuesi i kujdesshëm do të kuptojë vetë se cilat pajisje po përdoren). Kjo është një nga përfitimet e mira të punës me Ansible, gjatë konfigurimit ne në përgjithësi nuk na intereson çfarë pajisje është. Thjesht për t'u kuptuar, këto janë pajisje nga prodhues të njohur, si Cisco, Juniper, Check Point, Fortinet, Palo Alto… mund të përshtatni variantin tuaj.

Kemi dy detyra kryesore për të transferuar trafikun:

  1. Të sigurojmë publikimin e shërbimeve tona, të cilat janë biznes për kompaninë;
  2. Të sigurojmë lidhjen me degët, qendrën e të dhënave të largët dhe organizatat e treta (partnerët dhe klientët), si dhe daljen e degëve në internet përmes zyrës qendrore.

Të fillojmë me elementet kryesore:

  1. Dy routera kufitarë (BRD-01, BRD-02);
  2. Klasteri i firewalleve (FW-CLUSTER);
  3. Shtylla e kalimit (L3-CORE);
  4. Routeri që do të bëhet rreth shpëtimi (në rrugën e zgjidhjes së problemit do të transferojmë konfigurimet e rrjetit nga FW-CLUSTER në EMERGENCY) (EMERGENCY);
  5. Switch-të për menaxhimin e infrastrukturës rrjetore (L2-MGMT);
  6. Një makinë virtuale me Git dhe Ansible (VM-AUTOMATION);
  7. Laptopi mbi të cilin po testohet dhe zhvillohet playbook-ët për Ansible (Laptop-Automation).

Në rrjet është konfiguruar protokolli dinamik i routing OSPF me zonat e mëposhtme:

  • Zona 0 – zona, ku përfshihen rrugëtuesit përgjegjës për kalimin e trafik në zonën e EXCHANGE;
  • Zona 1 – zona, ku përfshihen rrugëtuesit përgjegjës për shërbimet e kompanisë;
  • Zona 2 – zona, ku përfshihen rrugëtuesit përgjegjës për routing-un e trafik management;
  • Zona N – zonat e rrjeteve filiale.

Në rrugëtuesit kufitarë është krijuar një rrugëtues virtual (VRF-INTERNET), mbi të cilin është ngritur eBGP full view me AS-in përkatës. Ndërmjet VRF-ve është konfiguruar iBGP. Kompania ka një grup adresash të bardha që janë publikuar në këto VRF-INTERNET. Një pjesë e adresave të bardha tërhiqet direkt në FW-CLUSTER (adresat mbi të cilat funksionojnë shërbimet e kompanisë), një pjesë e tyre tërhiqet përmes zonës EXCHANGE (shërbimeve të brendshme të kompanisë, që kërkojnë adresat IP të jashtme, dhe adresat e jashtme NAT për zyret). Më pas, trafiku kalon në rrugëtuesit virtualë të krijuar mbi L3-CORE me adresat e bardha dhe të gjera (zonat e sigurisë).

Në rrjetin e Management-it përdoren switch-e të dedikuar dhe përbëjnë një rrjet fizikisht të ndarë. Rrjeti i Management-it gjithashtu është ndarë në zona sigurie.
Rrugëtuesi EMERGENCY fizike dhe logjikisht dyfishon FW-CLUSTER. Të gjitha ndërfaqet janë të çaktivizuara përveç atyre që shikojnë në rrjetin e management-it.

Automatizimi dhe përshkrimi i tij

Kemi kuptuar si funksionon rrjeti. Tani do të shqyrtojmë hapat që do të ndjekim për të transferuar trafikun nga FW-CLUSTER në EMERGENCY:

  1. Çaktivizojmë ndërfaqet në switch-in e kernelit (L3-CORE), të cilat e lidhin atë me FW-CLUSTER;
  2. Çaktivizojmë ndërfaqet në switch-in e kernelit L2-MGMT, të cilat e lidhin atë me FW-CLUSTER;
  3. Konfigurojmë rrugëtuesin EMERGENCY (në mënyrë të paracaktuar, të gjitha ndërfaqet janë të çaktivizuara përveç atyre që lidhin me L2-MGMT):

  • Aktivizojmë ndërfaqet në EMERGENCY;
  • Konfigurojmë adresën IP të jashtme (për NAT), e cila ishte në FW-Cluster;
  • Gjenerojmë kërkesat gARP, për të ndryshuar adresat MAC në tabelat ARP të L3-CORE nga FW-Cluster në EMERGENCY;
  • Shkruajmë rrugën e paracaktuar statike deri në BRD-01, BRD-02;
  • Krijojmë rregullat NAT;
  • Ngremë OSPF Area 1 në EMERGENCY;
  • Ngremë OSPF Area 2 në EMERGENCY;
  • Ndryshojmë kostot e rrugëve në Area 1 në 10;
  • Ndryshojmë kostot e rrugës default në Area 1 në 10;
  • Ndryshoni ip-adresa, të lidhura me L2-MGMT (të atyre që ishin në FW-CLUSTER);
  • Ne jemi duke gjeneruar kërkesa gARP për të ndryshuar adresat MAC me FW-CLUSTER në EMERGENCY në tabelat arp L2-MGMT.

Përsëri po kthehemi te përshkrimi fillestar i detyrës. Është tri orë në mëngjes, është një stres i madh, çdo gabim në çdo hap mund të çojë në probleme të reja. Jeni të gatshëm të shkruani komandat përmes CLI? Po? Mirë, shkoni të paktën lajeni fytyrën, pini pak kafe dhe mblidhni vullnetin.
Bruce, të lutem ndihmojini djemve.

Automatizimi i rrjetit. Një rast nga jeta

Ne vazhdojmë të punojmë mbi automatizimin tonë.
Më poshtë është paraqitur skema e funksionimit të playbook-ut në terma të Ansible. Kjo skemë pasqyron atë që e përshkruam pak më lart, vetëm se është një zbatim konkret në Ansible.
Automatizimi i rrjetit. Një rast nga jeta

Në këtë fazë ne kuptuam se çfarë duhej bërë, zhvilluam playbook-un, realizuam testimin, tani jemi gati ta nisnim.

Një shënim i vogël liriko-reflektues. Lehtësia e tregimit nuk duhet t'ju çorientojë. Procesi i shkruarjes së playbook-ve nuk ishte aq i thjeshtë dhe i shpejtë sa mund të duket. Testimi mori një kohë të konsiderueshme, u krijua një platformë virtuale, zgjidhja u kalua shumë herë dhe u realizuan rreth 100 teste.

Po e drejtojmë… Ka një ndjenjë se gjithçka po ndodh shumë ngadalë, diku ka një gabim, diçka përfundimisht nuk do të funksionojë. Ndjenja e një kërcimi me parashutë, dhe parashuta nuk po hapet menjëherë… është normale.

Më pas lexojmë rezultatin e operacioneve të kryera nga playbook-u Ansible (adresat IP janë zëvendësuar për arsye sigurie):

[xxx@emergency ansible]$ ansible-playbook -i /etc/ansible/inventories/prod_inventory.ini /etc/ansible/playbooks/emergency_on.yml 

LOJA [------->Emergjenca në VCF] ********************************************************

KËRKESA [vcf_junos_emergency_on : Çaktivizo interfeset PROD në FW-CLUSTER] *********************
ndryshuar: [vcf]

LOJA [------->Emergjenca në MGMT-CORE] ************************************************

KËRKESA [mgmt_junos_emergency_on : Çaktivizo interfeset MGMT në FW-CLUSTER] ******************
ndryshuar: [m9-03-sw-03-mgmt-core]

LOJA [------->Emergjenca në] ****************************************************

KËRKESA [mk_routeros_emergency_on : Aktivizo interfesin EXT-INTERNET] **************************
ndryshuar: [m9-04-r-04]

KËRKESA [mk_routeros_emergency_on : Gjenero gARP për interfesin EXT-INTERNET] ****************
ndryshuar: [m9-04-r-04]

KËRKESA [mk_routeros_emergency_on : Aktivizo rrugën e zakonshme statike në EXT-INTERNET] ****************
ndryshuar: [m9-04-r-04]

KËRKESA [mk_routeros_emergency_on : Ndrysho rregullin NAT për interfesin EXT-INTERNET] ****************
ndryshuar: [m9-04-r-04] => (item=12)
ndryshuar: [m9-04-r-04] => (item=14)
ndryshuar: [m9-04-r-04] => (item=15)
ndryshuar: [m9-04-r-04] => (item=16)
ndryshuar: [m9-04-r-04] => (item=17)

KËRKESA [mk_routeros_emergency_on : Aktivizo OSPF Zona 1 PROD] ******************************
ndryshuar: [m9-04-r-04]

KËRKESA [mk_routeros_emergency_on : Aktivizo OSPF Zona 2 MGMT] *****************************
ndryshuar: [m9-04-r-04]

KËRKESA [mk_routeros_emergency_on : Ndrysho kushtet e interfesave të OSPF Zonës 1 në 10] *****************
ndryshuar: [m9-04-r-04] => (item=VLAN-1001)
ndryshuar: [m9-04-r-04] => (item=VLAN-1002)
ndryshuar: [m9-04-r-04] => (item=VLAN-1003)
ndryshuar: [m9-04-r-04] => (item=VLAN-1004)
ndryshuar: [m9-04-r-04] => (item=VLAN-1005)
ndryshuar: [m9-04-r-04] => (item=VLAN-1006)
ndryshuar: [m9-04-r-04] => (item=VLAN-1007)
ndryshuar: [m9-04-r-04] => (item=VLAN-1008)
ndryshuar: [m9-04-r-04] => (item=VLAN-1009)
ndryshuar: [m9-04-r-04] => (item=VLAN-1010)
ndryshuar: [m9-04-r-04] => (item=VLAN-1011)
ndryshuar: [m9-04-r-04] => (item=VLAN-1012)
ndryshuar: [m9-04-r-04] => (item=VLAN-1013)
ndryshuar: [m9-04-r-04] => (item=VLAN-1100)

KËRKESA [mk_routeros_emergency_on : Ndrysho koston e zakonshme të OSPF për zonën 1 në 10] ******************
ndryshuar: [m9-04-r-04]

KËRKESA [mk_routeros_emergency_on : Ndrysho adresat ip të interfesave MGMT] ********************
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})

KËRKESA [mk_routeros_emergency_on : Gjenero gARPs për interfesat MGMT] *********************
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n.254', u'name': u'VLAN-803'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+1.254', u'name': u'VLAN-805'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+2.254', u'name': u'VLAN-807'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+3.254', u'name': u'VLAN-809'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+4.254', u'name': u'VLAN-820'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+5.254', u'name': u'VLAN-822'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+6.254', u'name': u'VLAN-823'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+7.254', u'name': u'VLAN-824'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+8.254', u'name': u'VLAN-850'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+9.254', u'name': u'VLAN-851'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+10.254', u'name': u'VLAN-852'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+11.254', u'name': u'VLAN-853'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+12.254', u'name': u'VLAN-870'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+13.254', u'name': u'VLAN-898'})
ndryshuar: [m9-04-r-04] => (item={u'ip': u'х.х.n+14.254', u'name': u'VLAN-899'})

LOJA KËRKESAVE ************************************************************************

Gati!

Në të vërtetë, nuk është fare gati, mos harro komplikimet e protokolleve dinamikë të routing-ut dhe ngarkimin e një sërë të madhe rrugësh në FIB. Këtë nuk mund ta ndikojmë në asnjë mënyrë. Po presim. U bashkuan. Tani është gati.

Por në fshatin Vilabaxho (i cili nuk dëshiron të automatizojë konfigurimin e rrjetit) vazhdojnë të lajnë enët. Bruce (në të vërtetë, një tjetër, por po aq i shkëlqyer) po përpiqet të kuptojë se sa më shumë duhet të rikonfigurojë manualisht pajisjet.

Automatizimi i rrjetit. Një rast nga jeta

Do të doja të ndalesha edhe te një çështje të rëndësishme. Si mund ta kthejmë gjithçka në gjendjen fillestare? Pas një kohe, ne do të rikthejmë në jetë FW-CLUSTER-in tonë. Kjo është pajisja kryesore, jo rezervë, dhe rrjeti duhet të funksionojë mbi të.

A ndieni si po nxehen rrjetistët? Drejtori teknik do të dëgjojë mijëra argumente pse kjo nuk duhet bërë, pse mund ta bëjmë më vonë. Fatkeqësisht, puna e rrjetit përbëhet nga një grumbull patch-esh, copash, mbetje lufte. Kështu krijohet një qilim patchwork. Detyra jonë në përgjithësi, jo në këtë situatë të veçantë, por si profesionistë IT — është të çojmë punën e rrjetit në një fjalë të bukur angleze "consistency", e cila ka shumë kuptime, mund të përkthehet si: koherencë, konsistencë, logjikë, harmoni, sistematikë, krahasueshmëri, lidhshmëri. Të gjitha këto janë për të. Vetëm në këtë gjendje rrjeti është i menaxhueshëm, ne e kuptojmë qartë se çfarë dhe si funksionon, jemi të vetëdijshëm se çfarë duhet të ndryshojmë, nëse nevojitet, e dimë qartë ku të shohim, në rast se ndodhin probleme. Dhe vetëm në një rrjet të tillë mund të bëjmë hile, të ngjashme me ato që kemi përshkruar tani.

Në fakt, është përgatitur një playbook tjetër, i cili ktheu konfigurimet në gjendjen fillestare. Logjika e funksionimit të tij është e njëjtë (është e rëndësishme të mbani mend, rendi i detyrave është shumë i rëndësishëm), për të mos zgjatur një artikull tashmë të gjatë, kemi vendosur të mos publikojmë listimin e ekzekutimit të playbook-ut. Pas zhvillimit të këtyre stërvitjeve, do të ndiheni shumë më të qetë dhe të sigurt për të ardhmen, për më tepër, çdo qorr që keni ndërtuar atje do të shfaqet menjëherë.

Të gjithë të interesuarit mund të na shkruajnë dhe të marrin burimet e gjithë kodit të shkruar, së bashku me të gjitha playbook-ët. Kontaktoni në profil.

Përfundimet

Sipas mendimit tonë, proceset që mund të automatizohen ende nuk janë kristalizuar. Bazuar në atë që kemi hasur dhe ato që diskutojnë kolegët tanë perëndimorë, aktualisht duken temat e mëposhtme:

  • Sigurimi i pajisjeve;
  • Grumbullimi i të dhënave;
  • Raportimi;
  • Zgjidhja e problemeve;
  • Përputhshmëria.

Nëse do të ketë interes, mund të vazhdojmë diskutimin mbi njërën nga temat e caktuara.

Gjithashtu, do të donim të reflektonim pak mbi temën e automatizimit. Si duhet të jetë në mendimin tonë:

  • Sistemi duhet të funksionojë pa njeriun, por të përmirësohet nga njeriu. Sistemi nuk duhet të varet nga njeriu;
  • Eksploatimi duhet të jetë ekspert. Mungon klasa e specialistëve që realizojnë detyra rutinë. Ka ekspertë që e kanë automatizuar tërë rutinën dhe zgjidhin vetëm probleme të komplikuara;
  • Detyrat rutinë standarde bëhen automatikisht "me një buton", nuk shpenzohen burime. Rezultati i atyre detyrave është gjithmonë i parashikueshëm dhe i qartë.

Dhe për çfarë duhet të çojnë këto pika:

  • Transparenca e infrastrukturës IT (Rreziqe më të ulëta të eksploatimit, modernizimit, implementimit. Më pak downtime në vit);
  • Mundësia për të planifikuar burimet IT (Sistemi i planifikimit të kapacitetit - shikohet sa konsumohen, shikohet sa burime kërkohen në një sistem të unifikuar, e jo përmes email-eve dhe shëtitjeve te drejtuesit e departamenteve);
  • Mundësia për të reduktuar numrin e personelit mbështetës IT.

Autorët e artikullit: Aleksandër Çelakov (CCIE RS, CCIE SP) dhe Pavel Kirillov. Na intereson të diskutojmë dhe të propozojmë zgjidhje mbi temën e Automatizimit të Infrastrukturës IT.


Burimi: habr.com

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster