Automatizimi i rrjetit. Një rast nga jeta e dikujt

Hej Habr!

Në këtë artikull do të donim të flisnim për automatizimin e infrastrukturës së rrjetit. Do të prezantohet një diagram pune i rrjetit që funksionon në një kompani të vogël por shumë krenare. Të gjitha ndeshjet me pajisjet e rrjetit real janë të rastësishme. Ne do të shikojmë një rast që ndodhi në këtë rrjet, i cili mund të kishte çuar në një mbyllje biznesi për një kohë të gjatë dhe humbje serioze financiare. Zgjidhja për këtë rast përshtatet shumë mirë në konceptin e "automatizimit të infrastrukturës së rrjetit". Duke përdorur mjetet e automatizimit, ne do të tregojmë se si mund të zgjidhni në mënyrë efektive problemet komplekse në një kohë të shkurtër dhe do të reflektojmë se përse këto probleme duhet të zgjidhen në këtë mënyrë dhe jo ndryshe (nëpërmjet tastierës).

Mohim përgjegjësie

Mjetet tona kryesore për automatizimin janë Ansible (si një mjet automatizimi) dhe Git (si një depo për librat e lojërave Ansible). Do të doja të bëja menjëherë një rezervë se ky nuk është një artikull hyrës, ku flasim për logjikën e Ansible ose Git dhe të shpjegojmë gjërat themelore (për shembull, çfarë janë roletaskimodulet, skedarët e inventarit, variablat në Ansible, ose çfarë ndodh kur ju futni komandat git push ose git commit). Kjo histori nuk ka të bëjë me mënyrën se si mund të praktikoni Ansible dhe të konfiguroni NTP ose SMTP në pajisjen tuaj. Kjo është një histori se si mund të zgjidhni shpejt dhe mundësisht një problem rrjeti pa gabime. Është gjithashtu e këshillueshme që të keni një kuptim të mirë të mënyrës se si funksionon rrjeti, në veçanti çfarë është grumbulli i protokollit TCP/IP, OSPF, BGP. Ne gjithashtu do të nxjerrim nga ekuacioni zgjedhjen e Ansible dhe Git. Nëse ende duhet të zgjidhni një zgjidhje specifike, ju rekomandojmë të lexoni librin "Programueshmëria dhe Automatizimi i Rrjetit. Aftësitë për inxhinierin e rrjetit të gjeneratës tjetër" nga Jason Edelman, Scott S. Lowe dhe Matt Oswalt.

Tani tek pika.

Formulimi i problemit

Le të imagjinojmë një situatë: në orën 3 të mëngjesit, ju jeni në gjumë të thellë dhe duke ëndërruar. Telefonatë. Drejtori teknik thërret:

- Po?
— ###, ####, #####, grupi i murit të zjarrit ka rënë dhe nuk po ngrihet!!!
Ju fërkoni sytë, duke u përpjekur të kuptoni se çfarë po ndodh dhe të imagjinoni se si mund të ndodhë kjo. Në telefon mund të dëgjosh flokët në kokën e drejtorit që grisen, dhe ai kërkon të telefonojë përsëri sepse gjenerali po e thërret në linjën e dytë.

Gjysmë ore më vonë, ju mblodhët shënimet e para hyrëse nga ndërrimi i detyrës, u zgjova të gjithë ata që mund të zgjoheshin. Si rezultat, drejtori teknik nuk gënjeu, gjithçka është ashtu siç është, grupi kryesor i mureve të zjarrit ka rënë dhe asnjë lëvizje elementare e trupit nuk e sjell në vete. Të gjitha shërbimet që ofron kompania nuk funksionojnë.

Zgjidhni një problem për shijen tuaj, të gjithë do të kujtojnë diçka të ndryshme. Për shembull, pas një përditësimi gjatë natës në mungesë të një ngarkese të rëndë, gjithçka funksionoi mirë dhe të gjithë shkuan në shtrat të lumtur. Trafiku filloi të rrjedhë dhe buferat e ndërfaqes filluan të tejmbusheshin për shkak të një defekti në drejtuesin e kartës së rrjetit.

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

Automatizimi i rrjetit. Një rast nga jeta e dikujt

Faleminderit, Jackie.

Një situatë jo shumë e këndshme, apo jo?

Le ta lëmë rrjetin tonë vëlla me mendimet e tij të trishta për pak.

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

Ne sugjerojmë rendin e mëposhtëm të prezantimit të materialit

  1. Le të shohim diagramin e rrjetit dhe të shohim se si funksionon;
  2. Ne do të përshkruajmë se si transferojmë cilësimet nga një ruter në tjetrin duke përdorur Ansible;
  3. Le të flasim për automatizimin e infrastrukturës së IT në tërësi.

Diagrami dhe përshkrimi i rrjetit

skemë

Automatizimi i rrjetit. Një rast nga jeta e dikujt

Le të shqyrtojmë diagramin logjik të organizatës sonë. Ne nuk do të emërtojmë prodhues të veçantë të pajisjeve; për qëllimet e këtij neni nuk ka rëndësi (Lexuesi i vëmendshëm do të marrë me mend se çfarë lloj pajisjeje përdoret). Ky është vetëm një nga avantazhet e mira të punës me Ansible; kur e konfigurojmë, në përgjithësi nuk na intereson se çfarë lloj pajisjeje është. Sa për të kuptuar, këto janë pajisje nga shitës të njohur, si Cisco, Juniper, Check Point, Fortinet, Palo Alto...mund të zëvendësoni opsionin tuaj.

Ne kemi dy detyra kryesore për lëvizjen e trafikut:

  1. Siguroni publikimin e shërbimeve tona, të cilat janë biznesi i kompanisë;
  2. Siguroni komunikim me degët, një qendër të dhënash në distancë dhe organizata të palëve të treta (partnerë dhe klientë), si dhe akses të degëve në internet përmes zyrës qendrore.

Le të fillojmë me elementët bazë:

  1. Dy ruterë kufitarë (BRD-01, BRD-02);
  2. Grup Firewall (FW-CLUSTER);
  3. Çelësi bërthamë (L3-CORE);
  4. Një ruter që do të bëhet një litar shpëtimi (ndërsa ne zgjidhim problemin, ne do të transferojmë cilësimet e rrjetit nga FW-CLUSTER në EMERGENCY) (EMERGENCY);
  5. Çelësat për menaxhimin e infrastrukturës së rrjetit (L2-MGMT);
  6. Makinë virtuale me Git dhe Ansible (VM-AUTOMATION);
  7. Një laptop në të cilin kryhet testimi dhe zhvillimi i librave të lojërave për Ansible (Laptop-Automation).

Rrjeti është konfiguruar me një protokoll dinamik të rrugëtimit OSPF me zonat e mëposhtme:

  • Zona 0 – zona që përfshin ruterat përgjegjës për lëvizjen e trafikut në zonën EXCHANGE;
  • Zona 1 – zona që përfshin ruterat përgjegjës për funksionimin e shërbimeve të kompanisë;
  • Zona 2 – zona që përfshin ruterat përgjegjës për drejtimin e menaxhimit të trafikut;
  • Zona N – zonat e rrjeteve të degëve.

Në ruterat kufitarë, krijohet një ruter virtual (VRF-INTERNET), në të cilin është instaluar pamja e plotë eBGP me AS-in përkatës të caktuar. iBGP është konfiguruar ndërmjet VRF-ve. Kompania ka një grup adresash të bardha që publikohen në këto VRF-INTERNET. Disa nga adresat e bardha drejtohen drejtpërdrejt në FW-CLUSTER (adresat në të cilat funksionojnë shërbimet e kompanisë), disa drejtohen përmes zonës EXCHANGE (shërbimet e brendshme të kompanisë që kërkojnë adresa IP të jashtme dhe adresat e jashtme NAT për zyrat). Më pas, trafiku shkon te ruterat virtualë të krijuar në L3-CORE me adresa të bardha dhe gri (zona sigurie).

Rrjeti i Menaxhimit përdor ndërprerës të dedikuar dhe përfaqëson një rrjet të dedikuar fizikisht. Rrjeti i menaxhimit është gjithashtu i ndarë në zona sigurie.
Ruteri EMERGENCY kopjon fizikisht dhe logjikisht FW-CLUSTER. Të gjitha ndërfaqet në të janë çaktivizuar, përveç atyre që shikojnë në rrjetin e menaxhimit.

Automatizimi dhe përshkrimi i tij

Ne kuptuam se si funksionon rrjeti. Tani le të hedhim një vështrim hap pas hapi se çfarë do të bëjmë për të transferuar trafikun nga FW-Cluster në urgjencë:

  1. Ne çaktivizojmë ndërfaqet në çelësin bazë (L3-CORE) që e lidhin atë me FW-CLUSTER;
  2. Ne çaktivizojmë ndërfaqet në ndërprerësin e kernelit L2-MGMT që e lidhin atë me FW-CLUSTER;
  3. Ne konfigurojmë ruterin EMERGENCY (si parazgjedhje, të gjitha ndërfaqet janë të çaktivizuara në të, përveç atyre që lidhen me L2-MGMT):

  • Ne mundësojmë ndërfaqet në EMERGJENCË;
  • Ne konfigurojmë adresën IP të jashtme (për NAT) që ishte në FW-Cluster;
  • Ne gjenerojmë kërkesa gARP në mënyrë që adresat e poppy në tabelat arp L3-CORE të ndryshohen nga FW-Cluster në EMERGENCY;
  • Ne e regjistrojmë rrugën e paracaktuar si statike në BRD-01, BRD-02;
  • Krijo rregullat e NAT;
  • Ngritja në EMERGJENCË OSPF Zona 1;
  • Ngritja në EMERGJENCË OSPF Zona 2;
  • Ne ndryshojmë koston e rrugëve në Zonën 1 në 10;
  • Ne e ndryshojmë koston e rrugës së paracaktuar në Zonën 1 në 10;
  • Ne ndryshojmë adresat IP të lidhura me L2-MGMT (në ato që ishin në FW-CLUSTER);
  • Ne gjenerojmë kërkesa gARP në mënyrë që adresat e poppy në tabelat arp L2-MGMT të ndryshohen nga FW-CLUSTER në EMERGENCY.

Përsëri, i kthehemi formulimit origjinal të problemit. Ora tre e mëngjesit, stresi i madh, një gabim në çdo fazë mund të çojë në probleme të reja. Gati për të shtypur komanda nëpërmjet CLI? Po? Ok, të paktën shko shpëlaje fytyrën, pi një kafe dhe mblidh vullnetin.
Bruce, ju lutem ndihmoni djemtë.

Automatizimi i rrjetit. Një rast nga jeta e dikujt

Epo, ne vazhdojmë të përmirësojmë automatizimin tonë.
Më poshtë është një diagram se si funksionon libri i lojërave në terma Ansible. Kjo skemë pasqyron atë që përshkruam më lart, është thjesht një zbatim specifik në Ansible.
Automatizimi i rrjetit. Një rast nga jeta e dikujt

Në këtë fazë, ne kuptuam se çfarë duhet bërë, zhvilluam një libër lojërash, bëmë testime dhe tani jemi gati ta lançojmë atë.

Një tjetër digresion i vogël lirik. Lehtësia e tregimit nuk duhet t'ju mashtrojë. Procesi i shkrimit të librave nuk ishte aq i thjeshtë dhe i shpejtë sa mund të dukej. Testimi mori mjaft kohë, u krijua një stendë virtuale, zgjidhja u testua shumë herë, u kryen rreth 100 teste.

Le të fillojmë ... ka një ndjenjë që gjithçka po ndodh shumë ngadalë, ka një gabim diku, diçka nuk do të funksionojë në fund. Ndjenja e kërcimit me një parashutë, por parashuta nuk dëshiron të hapet menjëherë ... kjo është normale.

Më pas, lexojmë rezultatin e operacioneve të kryera të librit të lojërave Ansible (adresat IP u zëvendësuan për qëllime të fshehtësisë):

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

PLAY [------->Emergency on VCF] ********************************************************

TASK [vcf_junos_emergency_on : Disable PROD interfaces to FW-CLUSTER] *********************
changed: [vcf]

PLAY [------->Emergency on MGMT-CORE] ************************************************

TASK [mgmt_junos_emergency_on : Disable MGMT interfaces to FW-CLUSTER] ******************
changed: [m9-03-sw-03-mgmt-core]

PLAY [------->Emergency on] ****************************************************

TASK [mk_routeros_emergency_on : Enable EXT-INTERNET interface] **************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Generate gARP for EXT-INTERNET interface] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable static default route to EXT-INTERNET] ****************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change NAT rule to EXT-INTERNET interface] ****************
changed: [m9-04-r-04] => (item=12)
changed: [m9-04-r-04] => (item=14)
changed: [m9-04-r-04] => (item=15)
changed: [m9-04-r-04] => (item=16)
changed: [m9-04-r-04] => (item=17)

TASK [mk_routeros_emergency_on : Enable OSPF Area 1 PROD] ******************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Enable OSPF Area 2 MGMT] *****************************
changed: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Change OSPF Area 1 interfaces costs to 10] *****************
changed: [m9-04-r-04] => (item=VLAN-1001)
changed: [m9-04-r-04] => (item=VLAN-1002)
changed: [m9-04-r-04] => (item=VLAN-1003)
changed: [m9-04-r-04] => (item=VLAN-1004)
changed: [m9-04-r-04] => (item=VLAN-1005)
changed: [m9-04-r-04] => (item=VLAN-1006)
changed: [m9-04-r-04] => (item=VLAN-1007)
changed: [m9-04-r-04] => (item=VLAN-1008)
changed: [m9-04-r-04] => (item=VLAN-1009)
changed: [m9-04-r-04] => (item=VLAN-1010)
changed: [m9-04-r-04] => (item=VLAN-1011)
changed: [m9-04-r-04] => (item=VLAN-1012)
changed: [m9-04-r-04] => (item=VLAN-1013)
changed: [m9-04-r-04] => (item=VLAN-1100)

TASK [mk_routeros_emergency_on : Change OSPF area1 default cost for to 10] ******************
changed: [m9-04-r-04]

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

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

PLAY RECAP ************************************************************************

Done!

Në fakt, nuk është plotësisht gati, mos harroni për konvergjencën e protokolleve dinamike të rrugëtimit dhe ngarkimin e një numri të madh rrugësh në FIB. Ne nuk mund të ndikojmë në këtë në asnjë mënyrë. Ne presim. Ajo funksionoi. Tani është gati.

Dhe në fshatin Vilabajo (i cili nuk dëshiron të automatizojë konfigurimin e rrjetit) vazhdojnë të lajnë enët. Bruce (pa dyshim, tashmë i ndryshëm, por jo më pak i lezetshëm) po përpiqet të kuptojë se sa më shumë do të ndodhë rikonfigurimi manual i pajisjeve.

Automatizimi i rrjetit. Një rast nga jeta e dikujt

Do të doja të ndalem edhe në një pikë të rëndësishme. Si mund të kthejmë gjithçka? Pas ca kohësh, ne do ta kthejmë në jetë FW-CLUSTER-in tonë. Kjo është pajisja kryesore, jo rezervë, rrjeti duhet të funksionojë në të.

A e ndjeni sesi rrjetet kanë filluar të digjen? Drejtori teknik do të dëgjojë një mijë argumente pse nuk duhet bërë kjo, pse mund të bëhet më vonë. Fatkeqësisht, kështu funksionon rrjeti nga një mori arnimesh, copash dhe mbetjesh të luksit të tij të dikurshëm. Ajo rezulton të jetë një jorgan lara-lara. Detyra jonë në përgjithësi, jo në këtë situatë specifike, por përgjithësisht në parim, si specialistë të IT-së, është të sjellim punën e rrjetit në fjalën e bukur angleze "konsistencë", është shumë e shumëanshme, mund të përkthehet si: koherencë. , qëndrueshmëri, logjikë, koherencë, sistematikë, krahasueshmëri, koherencë. Gjithçka ka të bëjë me të. Vetëm në këtë gjendje rrjeti është i menaxhueshëm, ne kuptojmë qartë se çfarë funksionon dhe si, kuptojmë qartë se çfarë duhet ndryshuar, nëse është e nevojshme, ne e dimë qartë se ku të kërkojmë nëse shfaqen probleme. Dhe vetëm në një rrjet të tillë mund të kryeni truke si ato që sapo kemi përshkruar.

Në fakt, u përgatit një libër tjetër lojërash, i cili i ktheu cilësimet në gjendjen e tyre origjinale. Logjika e funksionimit të tij është e njëjtë (është e rëndësishme të mbani mend se rendi i detyrave është shumë i rëndësishëm), për të mos zgjatur një artikull tashmë mjaft të gjatë, vendosëm të mos postojmë një listë të ekzekutimit të librit të lojërave. Pas kryerjes së ushtrimeve të tilla, do të ndiheni shumë më të qetë dhe më të sigurt në të ardhmen, përveç kësaj, çdo paterica që keni grumbulluar atje do të zbulohet menjëherë.

Çdokush mund të na shkruajë dhe të marrë burimet e të gjithë kodit të shkruar, së bashku me të gjithë librat e palidhur. Kontaktet në profil.

Gjetjet

Sipas mendimit tonë, proceset që mund të automatizohen ende nuk janë kristalizuar. Bazuar në atë që kemi hasur dhe çfarë po diskutojnë kolegët tanë perëndimorë, temat e mëposhtme janë të dukshme deri më tani:

  • Sigurimi i pajisjes;
  • Mbledhja e të dhënave;
  • Raportimi;
  • Troubleshooting;
  • Pajtueshmërisë.

Nëse ka interes, mund të vazhdojmë diskutimin për një nga temat e dhëna.

Unë gjithashtu do të doja të flisja pak për automatizimin. Çfarë duhet të jetë në kuptimin tonë:

  • Sistemi duhet të jetojë pa një person, ndërsa të përmirësohet nga një person. Sistemi nuk duhet të varet nga njerëzit;
  • Operacioni duhet të jetë ekspert. Nuk ka asnjë klasë të specialistëve që kryejnë detyra rutinore. Ka ekspertë që kanë automatizuar të gjithë rutinën dhe zgjidhin vetëm probleme komplekse;
  • Detyrat standarde rutinore bëhen automatikisht "në prekjen e një butoni", nuk harxhohen burime. Rezultati i detyrave të tilla është gjithmonë i parashikueshëm dhe i kuptueshëm.

Dhe në çfarë duhet të çojnë këto pika:

  • Transparenca e infrastrukturës së TI-së (Më pak rreziqe operimi, modernizimi, zbatimi. Më pak kohë joproduktive në vit);
  • Aftësia për të planifikuar burimet e TI-së (Sistemi i planifikimit të kapaciteteve - mund të shihni se sa është konsumuar, mund të shihni sa burime kërkohen në një sistem të vetëm, dhe jo me letra dhe vizita në departamentet më të larta);
  • Mundësia për të reduktuar numrin e stafit të IT.

Autorët e artikullit: Alexander Chelovekov (CCIE RS, CCIE SP) dhe Pavel Kirillov. Ne jemi të interesuar të diskutojmë dhe propozojmë zgjidhje mbi temën e automatizimit të infrastrukturës së IT.


Burimi: www.habr.com

Shto një koment