Automatizacija mreže. Slučaj iz nečijeg života

Hej Habr!

U ovom članku želimo govoriti o automatizaciji mrežne infrastrukture. Biće predstavljen radni dijagram mreže koja posluje u jednoj maloj, ali veoma ponosnoj kompaniji. Svi mečevi sa stvarnom mrežnom opremom su nasumični. Pogledat ćemo slučaj koji se dogodio u ovoj mreži, a koji je mogao dovesti do gašenja poslovanja na duže vrijeme i ozbiljnih finansijskih gubitaka. Rješenje ovog slučaja se vrlo dobro uklapa u koncept „Automatizacije mrežne infrastrukture“. Koristeći alate za automatizaciju, pokazaćemo kako možete efikasno da rešite složene probleme u kratkom vremenu, a mi ćemo razmisliti zašto ove probleme treba rešavati na ovaj način, a ne drugačije (putem konzole).

odricanje

Naši glavni alati za automatizaciju su Ansible (kao alat za automatizaciju) i Git (kao spremište za Ansible playbooks). Htio bih odmah napraviti rezervu da ovo nije uvodni članak, gdje govorimo o logici Ansible-a ili Git-a, i objašnjavamo osnovne stvari (na primjer, šta su roletaskimoduli, fajlovi inventara, varijable u Ansible-u ili šta se dešava kada unesete git push ili git commit komande). Ova priča nije o tome kako možete vježbati Ansible i konfigurirati NTP ili SMTP na svojoj opremi. Ovo je priča o tome kako možete brzo i po mogućnosti riješiti mrežni problem bez grešaka. Takođe je preporučljivo dobro razumjeti kako mreža radi, posebno šta je stog TCP/IP, OSPF, BGP protokola. Također ćemo izbaciti izbor Ansiblea i Gita iz jednačine. Ako i dalje trebate odabrati određeno rješenje, toplo preporučujemo čitanje knjige „Network Programmability and Automation. Vještine za mrežnog inženjera sljedeće generacije" Jasona Edelmana, Scotta S. Lowea i Matta Oswalta.

Sada na stvar.

Izjava o problemu

Zamislimo situaciju: 3 sata ujutru čvrsto spavate i sanjate. Telefonski poziv. Tehnički direktor poziva:

- Da?
— ###, ####, #####, firewall klaster je pao i ne raste!!!
Trljate oči pokušavajući da shvatite šta se dešava i zamislite kako bi se to uopšte moglo dogoditi. Na telefonu se čuje kako se direktoru suze kosa na glavi, a on traži da se javi jer ga general zove na drugu liniju.

Pola sata kasnije, sakupili ste prve uvodne napomene iz dežurstva, probudili sve koje je bilo moguće probuditi. Kao rezultat toga, tehnički direktor nije lagao, sve je kako je, glavni klaster firewall-a je pao, a nikakvi osnovni pokreti tijela ga ne dovode k pameti. Sve usluge koje kompanija nudi ne rade.

Izaberite problem po svom ukusu, svako će pamtiti nešto drugačije. Na primjer, nakon noćnog ažuriranja u odsustvu velikog opterećenja, sve je funkcionisalo dobro, i svi su otišli u krevet sretni. Saobraćaj je počeo teći, a međuspremnici su se počeli prelijevati zbog greške u upravljačkom programu mrežne kartice.

Jackie Chan može dobro opisati situaciju.

Automatizacija mreže. Slučaj iz nečijeg života

Hvala ti, Jackie.

Nije baš prijatna situacija, zar ne?

Ostavimo našu mrežu brate sa njegovim tužnim mislima na neko vrijeme.

Hajde da razgovaramo o tome kako će se događaji dalje razvijati.

Predlažemo sljedeći redoslijed prezentacije materijala

  1. Pogledajmo mrežni dijagram i vidimo kako radi;
  2. Opisat ćemo kako prenosimo postavke s jednog rutera na drugi koristeći Ansible;
  3. Hajde da pričamo o automatizaciji IT infrastrukture u celini.

Mrežni dijagram i opis

Shema

Automatizacija mreže. Slučaj iz nečijeg života

Pogledajmo logički dijagram naše organizacije. Nećemo imenovati određene proizvođače opreme; za potrebe ovog članka to nije važno (Pažljivi čitalac će pogoditi kakva se oprema koristi). Ovo je samo jedna od dobrih prednosti rada sa Ansible-om; prilikom postavljanja, generalno nas nije briga o kakvoj se opremi radi. Samo da razumemo, ovo je oprema poznatih proizvođača, kao što su Cisco, Juniper, Check Point, Fortinet, Palo Alto...možete da zamenite svojom opcijom.

Imamo dva glavna zadatka za kretanje saobraćaja:

  1. Osigurati objavljivanje naših usluga, koje su djelatnost kompanije;
  2. Omogućiti komunikaciju sa poslovnicama, udaljenim data centrom i trećim organizacijama (partnerima i klijentima), kao i pristup poslovnicama Internetu preko centrale.

Počnimo sa osnovnim elementima:

  1. Dva granična rutera (BRD-01, BRD-02);
  2. Klaster zaštitnog zida (FW-CLUSTER);
  3. Prekidač jezgra (L3-CORE);
  4. Ruter koji će postati spas (kako budemo rješavali problem, prebacit ćemo mrežne postavke iz FW-CLUSTER u HITNO) (HITNO);
  5. Prekidači za upravljanje mrežnom infrastrukturom (L2-MGMT);
  6. Virtuelna mašina sa Git i Ansible (VM-AUTOMATION);
  7. Laptop na kojem se vrši testiranje i razvoj playbook-a za Ansible (Laptop-Automation).

Mreža je konfigurisana sa dinamičkim OSPF protokolom za usmjeravanje sa sljedećim područjima:

  • Područje 0 – područje koje uključuje rutere odgovorne za kretanje saobraćaja u zoni EXCHANGE;
  • Područje 1 – područje koje uključuje rutere odgovorne za rad usluga kompanije;
  • Područje 2 – područje koje uključuje rutere odgovorne za rutiranje upravljanja prometom;
  • Područje N – područja mreže ekspozitura.

Na graničnim ruterima se kreira virtuelni ruter (VRF-INTERNET) na koji je instaliran eBGP full view sa odgovarajućim dodijeljenim AS. iBGP se konfiguriše između VRF-ova. Kompanija ima skup bijelih adresa koje se objavljuju na ovim VRF-INTERNET-u. Neke od bijelih adresa se rutiraju direktno u FW-CLUSTER (adrese na kojima posluju usluge kompanije), neke se rutiraju kroz zonu EXCHANGE (interne usluge kompanije koje zahtijevaju eksterne IP adrese, a eksterne NAT adrese za urede). Zatim, promet ide na virtuelne rutere kreirane na L3-CORE sa bijelim i sivim adresama (sigurnosne zone).

Mreža upravljanja koristi namjenske prekidače i predstavlja fizički namjensku mrežu. Mreža upravljanja je također podijeljena na sigurnosne zone.
EMERGENCY ruter fizički i logički duplira FW-CLUSTER. Svi interfejsi na njemu su onemogućeni osim onih koji gledaju u mrežu upravljanja.

Automatizacija i njen opis

Shvatili smo kako mreža funkcionira. Sada pogledajmo korak po korak šta ćemo učiniti da prebacimo saobraćaj sa FW-CLUSTER na HITNI:

  1. Onemogućavamo interfejse na prekidaču jezgra (L3-CORE) koji ga povezuju sa FW-CLUSTER;
  2. Onemogućavamo interfejse na L2-MGMT prekidaču kernela koji ga povezuju sa FW-CLUSTER;
  3. Konfigurišemo HITNI ruter (podrazumevano, svi interfejsi su onemogućeni na njemu, osim onih povezanih sa L2-MGMT):

  • Omogućavamo interfejse u hitnim slučajevima;
  • Konfigurišemo eksternu IP adresu (za NAT) koja je bila na FW-klasteru;
  • Generiramo gARP zahtjeve tako da se makove adrese u L3-CORE arp tablicama mijenjaju iz FW-Cluster u HITNO;
  • Registriramo zadanu rutu kao statičnu na BRD-01, BRD-02;
  • Kreirajte NAT pravila;
  • Podignite do HITNE OSPF oblasti 1;
  • Podignite do HITNE OSPF oblasti 2;
  • Mijenjamo cijenu ruta u području 1 u 10;
  • Mijenjamo cijenu zadane rute u području 1 u 10;
  • Mijenjamo IP adrese povezane sa L2-MGMT (u one koje su bile na FW-CLUSTER);
  • Mi generišemo gARP zahtjeve tako da se makove adrese u L2-MGMT arp tabelama mijenjaju iz FW-CLUSTER u HITNO.

Ponovo se vraćamo na prvobitnu formulaciju problema. Tri sata ujutru, ogroman stres, greška u bilo kojoj fazi može dovesti do novih problema. Spremni za unos komandi putem CLI-a? Da? Ok, idi barem isperi lice, popi kafu i skupi snagu volje.
Bruce, pomozi momcima.

Automatizacija mreže. Slučaj iz nečijeg života

Pa, nastavljamo da poboljšavamo našu automatizaciju.
Ispod je dijagram kako priručnik radi u Ansible terminima. Ova šema odražava ono što smo opisali gore, to je samo specifična implementacija u Ansibleu.
Automatizacija mreže. Slučaj iz nečijeg života

U ovoj fazi smo shvatili šta treba da se uradi, razvili smo playbook, sproveli testiranje i sada smo spremni da ga pokrenemo.

Još jedna mala lirska digresija. Lakoća priče ne bi trebalo da vas zavede. Proces pisanja knjiga nije bio tako jednostavan i brz kao što se čini. Testiranje je oduzelo dosta vremena, kreiran je virtuelni štand, rješenje je testirano više puta, obavljeno je oko 100 testova.

Pokrenimo... Ima osjećaj da se sve odvija jako sporo, negdje je greška, nešto na kraju neće uspjeti. Osećaj skakanja sa padobranom, ali padobran ne želi da se otvori odmah... ovo je normalno.

Zatim čitamo rezultat izvršenih operacija Ansible playbook-a (IP adrese su zamijenjene radi 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 ************************************************************************

Gotovo!

Zapravo, nije baš spreman, ne zaboravite na konvergenciju dinamičkih protokola rutiranja i učitavanje velikog broja ruta u FIB. Na to ne možemo uticati ni na koji način. Čekamo. Upalilo je. Sada je spreman.

A u selu Vilabajo (koje ne želi automatizirati postavljanje mreže) nastavljaju da peru suđe. Bruce (doduše, već drugačiji, ali ništa manje kul) pokušava shvatiti koliko će se još ručno rekonfigurirati oprema.

Automatizacija mreže. Slučaj iz nečijeg života

Takođe bih želeo da se zadržim na jednoj važnoj stvari. Kako možemo sve vratiti? Nakon nekog vremena, vratit ćemo naš FW-CLUSTER u život. Ovo je glavna oprema, a ne rezervna, mreža mora raditi na njoj.

Osjećate li kako mrežari počinju da izgaraju? Tehnički direktor će čuti hiljadu argumenata zašto se to ne radi, zašto to može kasnije. Nažalost, tako mreža funkcionira od gomile zakrpa, komada, ostataka nekadašnjeg luksuza. Ispada da je to jorgan. Naš zadatak generalno, ne u ovoj konkretnoj situaciji, već u principu, kao IT stručnjaci, je da rad mreže dovedemo do prelepe engleske reči „consistency“, veoma je višestruka, može se prevesti kao: koherentnost , doslednost, logika, koherentnost, sistematičnost, uporedivost, koherentnost. Sve je o njemu. Samo u tom stanju je mreža upravljiva, jasno razumijemo šta i kako funkcionira, jasno razumijemo šta treba promijeniti, ako je potrebno, jasno znamo gdje tražiti ako se pojave problemi. I samo u takvoj mreži možete izvoditi trikove poput ovih koje smo upravo opisali.

Zapravo, pripremljen je još jedan playbook, koji je vratio postavke u prvobitno stanje. Logika njegovog rada je ista (važno je zapamtiti da je redoslijed zadataka vrlo važan), kako ne bismo produžili ionako prilično dug članak, odlučili smo da ne objavljujemo popis izvođenja playbook-a. Nakon izvođenja ovakvih vježbi osjećat ćete se mnogo mirnije i sigurnije u budućnost, osim toga, sve štake koje ste tamo nagomilali odmah će se otkriti.

Svako nam može pisati i dobiti izvore svih pisanih kodova, zajedno sa svim knjigama. Kontakti u profilu.

nalazi

Po našem mišljenju, procesi koji se mogu automatizovati još se nisu iskristalizovali. Na osnovu onoga s čime smo se susreli i o čemu razgovaraju naše zapadne kolege, do sada su vidljive sljedeće teme:

  • Omogućavanje uređaja;
  • Prikupljanje podataka;
  • Izvještavanje;
  • Rešavanje problema;
  • Usklađenost.

Ako postoji interesovanje, možemo nastaviti diskusiju na jednu od zadatih tema.

Takođe bih želeo da pričam malo o automatizaciji. Šta bi to trebalo da bude po našem shvatanju:

  • Sistem mora da živi bez osobe, a da ga osoba unapređuje. Sistem ne treba da zavisi od ljudi;
  • Operacija mora biti stručna. Ne postoji klasa specijalista koji obavljaju rutinske poslove. Postoje stručnjaci koji su automatizirali cijelu rutinu i rješavaju samo složene probleme;
  • Rutinski standardni zadaci se obavljaju automatski „pritiskom na dugme“, ne troše se resursi. Rezultat takvih zadataka je uvijek predvidljiv i razumljiv.

I do čega bi ove točke trebale dovesti:

  • Transparentnost IT infrastrukture (manje rizika rada, modernizacije, implementacije. Manje zastoja godišnje);
  • Mogućnost planiranja IT resursa (Sistem planiranja kapaciteta - vidi se koliko je potrošeno, vidi se koliko resursa je potrebno u jednom sistemu, a ne pismima i posjetama najvišim odjeljenjima);
  • Mogućnost smanjenja broja IT osoblja.

Autori članka: Alexander Chelovekov (CCIE RS, CCIE SP) i Pavel Kirillov. Zainteresovani smo za diskusiju i predlaganje rješenja na temu automatizacije IT infrastrukture.


izvor: www.habr.com

Dodajte komentar