Tinklo automatizavimas. Atvejis iš savo gyvenimo

Sveiki, Habr!

Šiame straipsnyje norėtume pakalbėti apie tinklo infrastruktūros automatizavimą. Bus pristatyta vienoje nedidelėje, bet labai išdidžiančioje įmonėje veikiančio tinklo darbo schema. Visos rungtynės su realia tinklo įranga yra atsitiktinės. Apžvelgsime šiame tinkle įvykusį atvejį, kuris ilgam galėjo lemti verslo sustabdymą ir rimtus finansinius nuostolius. Šio atvejo sprendimas labai gerai atitinka „tinklo infrastruktūros automatizavimo“ koncepciją. Naudodami automatizavimo įrankius parodysime, kaip galite efektyviai išspręsti sudėtingas problemas per trumpą laiką, ir apmąstysime, kodėl šias problemas reikėtų spręsti būtent taip, o ne kitaip (per pultą).

Atsakomybės neigimas

Mūsų pagrindiniai automatizavimo įrankiai yra Ansible (kaip automatizavimo įrankis) ir Git (kaip Ansible žaidimų knygų saugykla). Iš karto norėčiau padaryti išlygą, kad tai nėra įvadinis straipsnis, kuriame kalbame apie Ansible ar Git logiką ir paaiškiname pagrindinius dalykus (pavyzdžiui, kas yra vaidmenų moduliai, inventoriaus failai, kintamieji Ansible arba kas atsitinka, kai įvedate git push arba git commit komandas). Ši istorija nėra apie tai, kaip galite praktikuoti Ansible ir sukonfigūruoti NTP arba SMTP savo įrangoje. Tai istorija apie tai, kaip greitai ir pageidautina išspręsti tinklo problemą be klaidų. Taip pat patartina gerai suprasti, kaip veikia tinklas, ypač kas yra TCP/IP, OSPF, BGP protokolų krūva. Taip pat iš lygties pašalinsime Ansible ir Git pasirinkimą. Jei vis dėlto reikia pasirinkti konkretų sprendimą, labai rekomenduojame perskaityti knygą „Tinklo programavimas ir automatizavimas. Įgūdžiai naujos kartos tinklo inžinieriui“ autoriai Jason Edelman, Scott S. Lowe ir Matt Oswalt.

Dabar prie esmės.

Problemos teiginys

Įsivaizduokime situaciją: 3 valanda nakties tu kietai miegi ir sapnuoji. Skambutis. Techninis direktorius skambina:

- Taip?
— ###, ####, #####, ugniasienės klasteris nukrito ir nekyla!!!
Jūs trinate akis, bandydami suvokti, kas vyksta, ir įsivaizduoti, kaip tai gali nutikti. Telefone girdėti, kaip direktoriui drasko plaukai ant galvos, ir jis prašo perskambinti, nes antra linija jam skambina generolas.

Po pusvalandžio surinkote pirmuosius įžanginius užrašus iš budėjimo pamainos, pažadinote visus, kuriuos buvo galima pažadinti. Dėl to technikos direktorius nemelavo, viskas kaip yra, nukrito pagrindinis užkardų spiečius, jokie elementarūs kūno judesiai nesukelia proto. Visos įmonės siūlomos paslaugos neveikia.

Pasirinkite problemą pagal savo skonį, kiekvienas prisimins kažką kitokio. Pavyzdžiui, po naktinio atnaujinimo, kai nebuvo didelio krūvio, viskas veikė gerai, ir visi nuėjo miegoti laimingi. Srautas pradėjo plūsti, o sąsajos buferiai pradėjo perpildyti dėl tinklo plokštės tvarkyklės klaidos.

Jackie Chan gali gerai apibūdinti situaciją.

Tinklo automatizavimas. Atvejis iš savo gyvenimo

Ačiū tau, Jackie.

Nelabai maloni situacija, ar ne?

Palikime savo tinklo brolį su jo liūdnomis mintimis kuriam laikui.

Aptarkime, kaip toliau vystysis įvykiai.

Siūlome tokią medžiagos pateikimo tvarką

  1. Pažiūrėkime į tinklo schemą ir pažiūrėkime, kaip ji veikia;
  2. Aprašysime, kaip perkeliame nustatymus iš vieno maršrutizatoriaus į kitą naudojant Ansible;
  3. Pakalbėkime apie visos IT infrastruktūros automatizavimą.

Tinklo schema ir aprašymas

Schema

Tinklo automatizavimas. Atvejis iš savo gyvenimo

Panagrinėkime loginę mūsų organizacijos schemą. Konkrečių įrangos gamintojų neįvardinsime, šio straipsnio tikslais tai nesvarbu (Dėmesingas skaitytojas atspės, kokia įranga naudojama). Tai tik vienas iš gerų darbo su Ansible privalumų; kai nustatome, mums nesvarbu, kokia tai įranga. Kad suprastume, tai yra gerai žinomų pardavėjų, tokių kaip „Cisco“, „Juniper“, „Check Point“, „Fortinet“, „Palo Alto“, įranga... galite pakeisti savo pasirinkimą.

Turime dvi pagrindines eismo judėjimo užduotis:

  1. Užtikrinti mūsų paslaugų, kurios yra įmonės veikla, publikavimą;
  2. Teikti ryšį su filialais, nuotoliniu duomenų centru ir trečiųjų šalių organizacijomis (partneriais ir klientais), taip pat filialų prieigą prie interneto per centrinį biurą.

Pradėkime nuo pagrindinių elementų:

  1. Du pasienio maršrutizatoriai (BRD-01, BRD-02);
  2. ugniasienės grupė (FW-CLUSTER);
  3. Šerdies jungiklis (L3-CORE);
  4. Maršrutizatorius, kuris taps gelbėjimosi ratu (spręsdami problemą, tinklo nustatymus perkelsime iš FW-CLUSTER į EMERGENCY) (EMERGENCY);
  5. Tinklo infrastruktūros valdymo jungikliai (L2-MGMT);
  6. Virtuali mašina su Git ir Ansible (VM-AUTOMATIJA);
  7. Nešiojamasis kompiuteris, kuriame testuojami ir kuriamos Ansible (nešiojamojo kompiuterio automatizavimo) žaidimų knygos.

Tinklas sukonfigūruotas naudojant dinaminį OSPF maršruto parinkimo protokolą su šiomis sritimis:

  • Sritis 0 – sritis, kurioje yra maršrutizatoriai, atsakingi už judėjimą BEISIŲ zonoje;
  • 1 sritis – sritis, kuri apima maršrutizatorius, atsakingus už įmonės paslaugų veikimą;
  • 2 sritis – sritis, apimanti maršrutizatorius, atsakingus už maršrutų valdymą;
  • N sritis – filialų tinklų zonos.

Pasienio maršrutizatoriuose sukuriamas virtualus maršrutizatorius (VRF-INTERNET), kuriame įdiegtas eBGP pilnas vaizdas su atitinkama priskirta AS. iBGP yra sukonfigūruotas tarp VRF. Bendrovė turi baltų adresų, paskelbtų šiuose VRF-INTERNETE, telkinį. Kai kurie balti adresai nukreipiami tiesiai į FW-CLUSTER (adresai, kuriais veikia įmonės paslaugos), kai kurie nukreipiami per EXCHANGE zoną (vidinės įmonės paslaugos, kurioms reikalingi išoriniai IP adresai, ir išoriniai NAT adresai biurams). Tada srautas nukreipiamas į virtualius maršrutizatorius, sukurtus L3-CORE su baltais ir pilkais adresais (saugos zonomis).

Valdymo tinklas naudoja tam skirtus jungiklius ir yra fiziškai skirtas tinklas. Valdymo tinklas taip pat suskirstytas į apsaugos zonas.
EMERGENCY maršrutizatorius fiziškai ir logiškai dubliuoja FW-CLUSTER. Visos sąsajos jame yra išjungtos, išskyrus tas, kurios žiūri į valdymo tinklą.

Automatika ir jos aprašymas

Mes išsiaiškinome, kaip veikia tinklas. Dabar pažvelkime žingsnis po žingsnio, ką darysime norėdami perkelti srautą iš FW-CLUSTER į EMERGENCY:

  1. Išjungiame pagrindinio jungiklio (L3-CORE) sąsajas, jungiančias jį su FW-CLUSTER;
  2. Išjungiame L2-MGMT branduolio jungiklio sąsajas, jungiančias jį su FW-CLUSTER;
  3. Konfigūruojame EMERGENCY maršrutizatorių (pagal numatytuosius nustatymus jame išjungtos visos sąsajos, išskyrus tas, kurios susijusios su L2-MGMT):

  • Įjungiame sąsajas AVARINIAIS ATVEJAIS;
  • Konfigūruojame išorinį IP adresą (NAT), kuris buvo FW klasteryje;
  • Generuojame gARP užklausas, kad poppy adresai L3-CORE arp lentelėse būtų pakeisti iš FW-Cluster į EMERGENCY;
  • Numatytąjį maršrutą registruojame kaip statinį į BRD-01, BRD-02;
  • Sukurti NAT taisykles;
  • Pakelkite iki AVARINIO OSPF 1 srities;
  • Pakelkite iki AVARINIO OSPF 2 srities;
  • Keičiame 1 zonos maršrutų kainą į 10;
  • Keičiame numatytojo maršruto kainą 1 srityje į 10;
  • Keičiame su L2-MGMT susietus IP adresus (į tuos, kurie buvo FW-CLUSTER);
  • Generuojame gARP užklausas, kad poppy adresai L2-MGMT arp lentelėse būtų pakeisti iš FW-CLUSTER į EMERGENCY.

Vėl grįžtame prie pradinės problemos formuluotės. Trečia valanda nakties, didžiulis stresas, klaida bet kuriame etape gali sukelti naujų problemų. Pasiruošę įvesti komandas per CLI? Taip? Gerai, bent jau nusiprausk veidą, išgerk kavos ir sukaupk valios jėgą.
Bruce, padėk vaikinams.

Tinklo automatizavimas. Atvejis iš savo gyvenimo

Na, mes ir toliau tobuliname savo automatizavimą.
Žemiau pateikiama schema, kaip ši knyga veikia Ansible terminais. Ši schema atspindi tai, ką apibūdinome aukščiau, tai tik konkretus Ansible įgyvendinimas.
Tinklo automatizavimas. Atvejis iš savo gyvenimo

Šiame etape supratome, ką reikia padaryti, sukūrėme žaidimų knygą, atlikome bandymus ir dabar esame pasirengę jį pradėti.

Dar vienas mažas lyrinis nukrypimas. Pasakojimo paprastumas neturėtų jūsų suklaidinti. Žaidimų knygelių rašymo procesas nebuvo toks paprastas ir greitas, kaip gali atrodyti. Testavimas užtruko gana daug laiko, buvo sukurtas virtualus stendas, sprendimas buvo išbandytas daugybę kartų, atlikta apie 100 bandymų.

Paleidžiame... Toks jausmas, kad viskas vyksta labai lėtai, kažkur yra klaida, kažkas galų gale nepavyks. Jausmas, kaip šokinėja su parašiutu, bet parašiutas nenori iš karto atsidaryti... tai normalu.

Toliau skaitome atliktų Ansible žaidimų knygelės operacijų rezultatą (IP adresai buvo pakeisti slaptumo sumetimais):

[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 ************************************************************************

Priimta!

Tiesą sakant, jis dar ne visai paruoštas, nepamirškite apie dinaminių maršrutų parinkimo protokolų konvergenciją ir daugybės maršrutų įkėlimą į FIB. Mes negalime tam niekaip įtakoti. Mes laukiam. Tai pasiteisino. Dabar jis paruoštas.

O Vilabajo kaime (kuris nenori automatizuoti tinklo nustatymo) toliau plauna indus. Bruce'as (tiesa, jau kitoks, bet ne mažiau šaunus) bando suprasti, kiek dar bus rankinis įrangos perkonfigūravimas.

Tinklo automatizavimas. Atvejis iš savo gyvenimo

Taip pat norėčiau pasilikti ties vienu svarbiu dalyku. Kaip galime viską susigrąžinti? Po kurio laiko savo FW-CLUSTER sugrąžinsime į gyvenimą. Tai yra pagrindinė įranga, o ne atsarginė, joje turi veikti tinklas.

Ar jaučiate, kaip tinklininkai pradeda perdegti? Technikos direktorius išgirs tūkstantį argumentų, kodėl to nereikėtų daryti, kodėl taip galima daryti vėliau. Deja, taip tinklas veikia iš daugybės pleistrų, gabalėlių ir buvusios prabangos likučių. Pasirodo, tai kratinio antklodė. Mūsų užduotis apskritai, ne šioje konkrečioje situacijoje, o apskritai iš principo, kaip IT specialistų, yra tinklo darbą privesti prie gražaus angliško žodžio „consistency“, jis yra labai daugialypis, jį galima išversti kaip: darna. , nuoseklumas, logika, nuoseklumas, sistemingumas, palyginamumas, nuoseklumas. Viskas apie jį. Tik tokioje būsenoje tinklas yra valdomas, aiškiai suprantame, kas ir kaip veikia, aiškiai suprantame, ką reikia keisti, jei reikia, aiškiai žinome, kur ieškoti iškilus problemoms. Ir tik tokiame tinkle galima atlikti tokius triukus, kokius ką tik aprašėme.

Tiesą sakant, buvo parengta kita žaidimų knyga, kuri grąžino nustatymus į pradinę būseną. Jo veikimo logika ta pati (svarbu atminti, kad užduočių tvarka yra labai svarbi), kad neprailgtų ir taip gana ilgas straipsnis, nusprendėme neskelbti žaidimo knygos vykdymo sąrašo. Atlikę tokius pratimus, ateityje jausitės daug ramesni ir labiau pasitikėsite savimi, be to, iš karto atsiskleis bet kokie ramentai, kuriuos ten susikrovėte.

Kiekvienas gali mums parašyti ir gauti viso parašyto kodo šaltinius kartu su visomis knygelėmis. Kontaktai profilyje.

išvados

Mūsų nuomone, procesai, kuriuos galima automatizuoti, dar neišsikristalizavo. Remiantis tuo, su kuo susidūrėme ir ką diskutuoja mūsų kolegos iš Vakarų, kol kas matomos šios temos:

  • Įrenginio aprūpinimas;
  • Duomenų rinkimas;
  • Ataskaitų teikimas;
  • Problemų sprendimas;
  • Laikymasis.

Jei yra susidomėjimas, galime tęsti diskusiją viena iš pateiktų temų.

Taip pat norėčiau šiek tiek pakalbėti apie automatizavimą. Kas tai turėtų būti mūsų supratimu:

  • Sistema turi gyventi be žmogaus, o žmogaus tobulinama. Sistema neturėtų priklausyti nuo žmonių;
  • Operacija turi būti profesionali. Nėra specialistų, atliekančių įprastines užduotis, klasės. Yra ekspertų, kurie automatizavo visą rutiną ir sprendžia tik sudėtingas problemas;
  • Įprastos standartinės užduotys atliekamos automatiškai „vieno mygtuko paspaudimu“, resursai nėra švaistomi. Tokių užduočių rezultatas visada nuspėjamas ir suprantamas.

Ir ką turėtų sukelti šie punktai:

  • IT infrastruktūros skaidrumas (Mažiau eksploatavimo, modernizavimo, diegimo rizikų. Mažiau prastovų per metus);
  • Galimybė planuoti IT išteklius (Pajėgumų planavimo sistema - matai kiek suvartojama, matai kiek resursų reikia vienoje sistemoje, o ne laiškais ir apsilankymais aukščiausiuose skyriuose);
  • Galimybė sumažinti IT darbuotojų skaičių.

Straipsnio autoriai: Aleksandras Čelovekovas (CCIE RS, CCIE SP) ir Pavelas Kirillovas. Mums įdomu diskutuoti ir siūlyti sprendimus IT infrastruktūros automatizavimo tema.


Šaltinis: www.habr.com

Добавить комментарий