Avtomatizacija omrežja. Primer iz svojega življenja

Pozdravljeni, Habr!

V tem članku bi radi govorili o avtomatizaciji omrežne infrastrukture. Predstavljen bo delovni diagram mreže, ki deluje v enem majhnem, a zelo ponosnem podjetju. Vsa ujemanja z resnično omrežno opremo so naključna. Ogledali si bomo primer, ki se je zgodil v tem omrežju, ki bi lahko povzročil dolgotrajno zaustavitev poslovanja in resne finančne izgube. Rešitev tega primera se zelo dobro ujema s konceptom »Avtomatizacija omrežne infrastrukture«. Z orodji za avtomatizacijo bomo pokazali, kako lahko v kratkem času učinkovito rešimo kompleksne probleme in razmislili, zakaj bi te probleme morali reševati tako in ne drugače (preko konzole).

Zavrnitev odgovornosti

Naši glavni orodji za avtomatizacijo sta Ansible (kot orodje za avtomatizacijo) in Git (kot repozitorij za Ansible playbooks). Želel bi takoj opozoriti, da to ni uvodni članek, kjer govorimo o logiki Ansible ali Git in razlagamo osnovne stvari (na primer, kaj so roletaskimoduli, inventarne datoteke, spremenljivke v Ansibleu ali kaj se zgodi, ko vnesete ukaza git push ali git commit). Ta zgodba ne govori o tem, kako lahko vadite Ansible in konfigurirate NTP ali SMTP na svoji opremi. To je zgodba o tem, kako hitro in po možnosti rešiti težavo z omrežjem brez napak. Priporočljivo je tudi, da dobro razumete, kako deluje omrežje, še posebej, kaj je protokolni sklad TCP/IP, OSPF, BGP. Iz oklepaja bomo vzeli tudi izbiro Ansible in Git. Če še vedno morate izbrati določeno rešitev, toplo priporočamo branje knjige »Programiranje in avtomatizacija omrežja. Spretnosti za omrežnega inženirja naslednje generacije« Jasona Edelmana, Scotta S. Loweja in Matta Oswalta.

Zdaj pa k bistvu.

Izjava o težavah

Predstavljajmo si situacijo: 3. ura zjutraj, trdno spite in sanjate. Telefonski klic. Tehnični direktor kliče:

- Ja?
— ###, ####, #####, gruča požarnega zidu je padla in se ne dviguje!!!
Drgneš si oči, poskušaš razumeti, kaj se dogaja in si predstavljaš, kako bi se to sploh lahko zgodilo. Po telefonu se sliši, da se direktorju trgajo lasje na glavi in ​​prosi, da pokliče nazaj, ker ga general kliče na drugi liniji.

Čez pol ure ste zbrali prve uvodne zapiske iz dežurstva, zbudili vse, ki se jih je dalo zbuditi. Posledično tehnični direktor ni lagal, vse je tako, kot je, glavna gruča požarnih zidov je padla in noben osnovni gib telesa ga ne spravi k pameti. Vse storitve, ki jih podjetje ponuja, ne delujejo.

Izberite težavo po svojem okusu, vsak se bo spomnil nekaj drugega. Na primer, po posodobitvi čez noč brez velike obremenitve je vse dobro delovalo in vsi so šli zadovoljni spat. Promet je začel teči in vmesniški medpomnilniki so se začeli prepolnjevati zaradi napake v gonilniku omrežne kartice.

Jackie Chan lahko dobro opiše situacijo.

Avtomatizacija omrežja. Primer iz svojega življenja

Hvala, Jackie.

Ni ravno prijetna situacija, kajne?

Pustimo za nekaj časa našega omrežnega brata z njegovimi žalostnimi mislimi.

Pogovorimo se o nadaljnjem razvoju dogodkov.

Predlagamo naslednji vrstni red podajanja gradiva

  1. Poglejmo omrežni diagram in poglejmo, kako deluje;
  2. Opisali bomo, kako z Ansible prenašamo nastavitve iz enega usmerjevalnika v drugega;
  3. Pogovorimo se o avtomatizaciji IT infrastrukture kot celote.

Omrežni diagram in opis

Shema

Avtomatizacija omrežja. Primer iz svojega življenja

Oglejmo si logični diagram naše organizacije. Ne bomo imenovali posebnih proizvajalcev opreme; za namene tega članka to ni pomembno (Pozoren bralec bo uganil, za kakšno opremo gre). To je le ena od dobrih prednosti dela z Ansibleom, pri postavljanju nam je praviloma vseeno, za kakšno opremo gre. Samo za razumevanje, to je oprema znanih proizvajalcev, kot so Cisco, Juniper, Check Point, Fortinet, Palo Alto...lahko zamenjate svojo možnost.

Za premikanje prometa imamo dve glavni nalogi:

  1. Poskrbeti za objavo naših storitev, ki so dejavnost podjetja;
  2. Zagotoviti komunikacijo s podružnicami, oddaljenim podatkovnim centrom in zunanjimi organizacijami (partnerji in naročniki) ter dostop poslovalnic do interneta preko centrale.

Začnimo z osnovnimi elementi:

  1. dva mejna usmerjevalnika (BRD-01, BRD-02);
  2. Gruča požarnega zidu (FW-CLUSTER);
  3. Jedrno stikalo (L3-CORE);
  4. Usmerjevalnik, ki bo postal rešilna bilka (ko bomo rešili problem, bomo prenesli omrežne nastavitve iz FW-CLUSTER v EMERGENCY) (EMERGENCY);
  5. Stikala za upravljanje omrežne infrastrukture (L2-MGMT);
  6. Virtualni stroj z Git in Ansible (VM-AUTOMATION);
  7. Prenosnik, na katerem se izvaja testiranje in razvoj knjig iger za Ansible (Laptop-Automation).

Omrežje je konfigurirano z dinamičnim usmerjevalnim protokolom OSPF z naslednjimi področji:

  • Območje 0 – območje, ki vključuje usmerjevalnike, odgovorne za premikanje prometa v območju EXCHANGE;
  • Področje 1 – območje, ki vključuje usmerjevalnike, odgovorne za delovanje storitev podjetja;
  • Področje 2 – območje, ki vključuje usmerjevalnike, odgovorne za usmerjanje prometa;
  • Območje N – območja poslovnih mrež.

Na mejnih usmerjevalnikih se ustvari virtualni usmerjevalnik (VRF-INTERNET), na katerem je nameščen eBGP full view s pripadajočim dodeljenim AS. iBGP je konfiguriran med VRF-ji. Podjetje ima skupino belih naslovov, ki so objavljeni na teh VRF-INTERNETIH. Nekateri beli naslovi so usmerjeni neposredno na FW-CLUSTER (naslovi, na katerih delujejo storitve podjetja), nekateri so usmerjeni skozi območje EXCHANGE (notranje storitve podjetja, ki zahtevajo zunanje IP naslove, in zunanji NAT naslovi za pisarne). Nato gre promet do virtualnih usmerjevalnikov, ustvarjenih na L3-CORE z belimi in sivimi naslovi (varnostna območja).

Omrežje za upravljanje uporablja namenska stikala in predstavlja fizično namensko omrežje. Omrežje upravljanja je razdeljeno tudi na varnostne cone.
Usmerjevalnik EMERGENCY fizično in logično podvoji FW-CLUSTER. Vsi vmesniki na njem so onemogočeni, razen tistih, ki gledajo v omrežje za upravljanje.

Avtomatizacija in njen opis

Ugotovili smo, kako deluje omrežje. Zdaj pa poglejmo korak za korakom, kaj bomo naredili za prenos prometa iz FW-CLUSTER v EMERGENCY:

  1. Onemogočimo vmesnike na jedrnem stikalu (L3-CORE), ki ga povezujejo s FW-CLUSTEROM;
  2. Onemogočimo vmesnike na stikalu jedra L2-MGMT, ki ga povezujejo s FW-CLUSTER;
  3. Konfiguriramo usmerjevalnik EMERGENCY (privzeto so na njem onemogočeni vsi vmesniki, razen tistih, povezanih z L2-MGMT):

  • Omogočamo vmesnike na NUJNO;
  • Konfiguriramo zunanji naslov IP (za NAT), ki je bil na FW-Clustru;
  • Generiramo zahteve gARP, tako da se poppy naslovi v tabelah arp L3-CORE spremenijo iz FW-Cluster v EMERGENCY;
  • Registriramo privzeto pot kot statično za BRD-01, BRD-02;
  • Ustvari pravila NAT;
  • Dvignite na območje 1 ZASILJNEGA OSPF;
  • Dvignite na območje 2 ZASILJNEGA OSPF;
  • Spremenimo stroške poti v območju 1 na 10;
  • Stroške privzete poti v območju 1 spremenimo v 10;
  • Spremenimo naslove IP, povezane z L2-MGMT (v tiste, ki so bili na FW-CLUSTER);
  • Generiramo zahteve gARP, tako da se naslovi poppy v tabelah arp L2-MGMT spremenijo iz FW-CLUSTER v EMERGENCY.

Spet se vračamo k prvotni formulaciji problema. Tri ure zjutraj, ogromen stres, napaka v kateri koli fazi lahko privede do novih težav. Ste pripravljeni vnašati ukaze prek CLI? da? Ok, pojdi si vsaj obraz splaknit, popit kavo in zbrat voljo.
Bruce, prosim pomagaj fantom.

Avtomatizacija omrežja. Primer iz svojega življenja

No, še naprej izboljšujemo našo avtomatizacijo.
Spodaj je diagram, kako priročnik deluje v smislu Ansible. Ta shema odraža tisto, kar smo opisali zgoraj, je samo posebna implementacija v Ansible.
Avtomatizacija omrežja. Primer iz svojega življenja

Na tej stopnji smo ugotovili, kaj je treba narediti, razvili priročnik, izvedli testiranje in zdaj smo pripravljeni, da ga lansiramo.

Še ena majhna lirična digresija. Lahkotnost zgodbe vas ne sme zavesti. Proces pisanja iger ni bil tako preprost in hiter, kot se morda zdi. Testiranje je vzelo kar nekaj časa, izdelano je bilo virtualno stojalo, rešitev je bila večkrat testirana, izvedenih je bilo okoli 100 testov.

Zaženimo ... Obstaja občutek, da se vse dogaja zelo počasi, nekje je napaka, nekaj na koncu ne bo delovalo. Občutek skoka s padalom, a se padalo noče takoj odpreti ... to je normalno.

Nato preberemo rezultat izvedenih operacij Ansible playbook (naslovi IP so bili zamenjani zaradi tajnosti):

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

Končano!

Pravzaprav še ni povsem pripravljen, ne pozabite na konvergenco dinamičnih protokolov usmerjanja in nalaganje velikega števila poti v FIB. Na to nikakor ne moremo vplivati. Čakamo. Uspelo je. Zdaj je pripravljeno.

In v vasi Vilabajo (ki ne želi avtomatizirati nastavitve omrežja) še naprej pomivajo posodo. Bruce (resda že drugačen, a nič manj kul) poskuša razumeti, koliko bo še ročne rekonfiguracije opreme.

Avtomatizacija omrežja. Primer iz svojega življenja

Rad bi se osredotočil tudi na eno pomembno točko. Kako lahko dobimo vse nazaj? Čez nekaj časa bomo naš FW-CLUSTER vrnili v življenje. To je glavna oprema, ne rezervna, na njej mora delovati omrežje.

Ali čutite, kako omrežniki začenjajo izgorevati? Tehnični direktor bo slišal tisoč argumentov, zakaj se to ne sme narediti, zakaj se to lahko naredi kasneje. Na žalost tako deluje omrežje iz kopice zaplat, kosov in ostankov nekdanjega luksuza. Izkazalo se je patchwork odeja. Naša naloga na splošno, ne v tej specifični situaciji, ampak na splošno načeloma, kot strokovnjaki za informatiko, je, da delo omrežja pripeljemo do lepe angleške besede "konsistentnost", je zelo večplastna, lahko jo prevedemo kot: koherenca , doslednost, logičnost, koherenca, sistematičnost, primerljivost, koherenca. Vse se vrti okoli njega. Samo v tem stanju je omrežje obvladljivo, jasno razumemo, kaj in kako deluje, jasno razumemo, kaj je treba spremeniti, če je treba, jasno vemo, kam iskati, če se pojavijo težave. In samo v takem omrežju lahko izvajate trike, kot smo jih pravkar opisali.

Pravzaprav je bil pripravljen še en playbook, ki je nastavitve vrnil v prvotno stanje. Logika delovanja je enaka (pomembno je vedeti, da je vrstni red nalog zelo pomemben), da ne bi podaljševali že tako precej dolgega članka, smo se odločili, da ne bomo objavili seznama izvajanja playbooka. Po izvedbi takšnih vaj se boste v prihodnosti počutili veliko mirnejše in samozavestnejše, poleg tega se bodo vse bergle, ki ste jih tam nabrali, takoj pokazale.

Vsakdo nam lahko piše in prejme vire vse napisane kode, skupaj z vsemi palybooks. Kontakti v profilu.

Ugotovitve

Po našem mnenju se procesi, ki jih je mogoče avtomatizirati, še niso izkristalizirali. Glede na to, s čimer smo se srečali in o čemer razpravljajo naši zahodni kolegi, so zaenkrat vidne naslednje teme:

  • Oskrba naprave;
  • Zbiranje podatkov;
  • poročanje;
  • Odpravljanje težav;
  • Skladnost.

Če bo interes, lahko nadaljujemo razpravo na eno od danih tem.

Rad bi spregovoril tudi o avtomatizaciji. Kaj bi moralo biti po našem razumevanju:

  • Sistem mora živeti brez ljudi, medtem ko ga ljudje izboljšujejo. Sistem ne bi smel biti odvisen od ljudi;
  • Delovanje mora biti strokovno. Ni razreda specialistov, ki bi opravljali rutinske naloge. Obstajajo strokovnjaki, ki so avtomatizirali celotno rutino in rešujejo le kompleksne probleme;
  • Rutinska standardna opravila se opravijo samodejno »s pritiskom na gumb«, brez zapravljanja virov. Rezultat takih nalog je vedno predvidljiv in razumljiv.

In do česa naj te točke vodijo:

  • Transparentnost IT infrastrukture (Manj tveganj delovanja, modernizacije, implementacije. Manj izpadov na leto);
  • Sposobnost načrtovanja informacijskih virov (sistem za načrtovanje zmogljivosti - vidi se, koliko se porabi, vidi se, koliko virov je potrebnih v posameznem sistemu, in ne po pismih in obiskih na najvišjih oddelkih);
  • Možnost zmanjšanja števila IT kadrov.

Avtorja članka: Alexander Chelovekov (CCIE RS, CCIE SP) in Pavel Kirillov. Zanima nas razprava in predlaganje rešitev na temo avtomatizacije IT infrastrukture.


Vir: www.habr.com

Dodaj komentar