Automatizacija mreže. Razine iz života

Bok, Habr!

U ovom članku želimo razgovarati o automatizaciji mrežne infrastrukture. Predstavit ćemo radnu shemu mreže koja funkcioniše u jednoj maloj, ali vrlo ponosnoj kompaniji. Sve sličnosti sa stvarnom mrežnom opremom su slučajne. Razmotrit ćemo slučaj koji se dogodio u ovoj mreži, a koji bi mogao dovesti do obustave poslovanja na duži period i ozbiljnih finansijskih gubitaka. Rješenje ovog slučaja se vrlo dobro uklapa u koncept "Automatizacija mrežne infrastrukture". Pomoću alata za automatizaciju pokazat ćemo kako efikasno rješavati složene zadatke u kratkom roku i razmisliti o tome zašto je bolje rješavati te zadatke na ovaj način, a ne inače (putem konzole).

Odricanje

Glavni alati za automatizaciju su nam Ansible (kao sredstvo automatizacije) i Git (kao skladište Ansible playbook-a). Odmah napominjemo da ovo nije uvodni članak u kojem govorimo o logici rada Ansible ili Gita, i objašnjavamo osnovne stvari (na primjer, što su uloga, moduli, inventarske datoteke, varijable u Ansible-u, ili što se dešava prilikom unosa komandi git push ili git commit). Ovo nije priča o tome kako se prakticirati u Ansible-u, postaviti NTP ili SMTP na opremi. Ovo je priča o tome kako brzo i poželjno bez grešaka rješavati mrežni problem. Također je poželjno imati dobro razumijevanje kako mreža funkcioniše, posebno što je TCP/IP protokolni stek, OSPF, BGP. Izbor Ansible-a i Gita ćemo također izostaviti. Ako još birate konkretno rješenje, toplo preporučujemo da pročitate knjigu "Network Programmability and Automation. Skills for the Next-Generation Network Engineer" autora Jasona Edelmana, Scotta S. Lowa i Matta Oswalta.

Sada na stvar.

Postavljanje zadatka

Zamislite situaciju: 3 sata ujutro, čvrsto spavate i sanjate. Telefon zvoni. Zove tehnički direktor:

— Da?
— ###, ####, #####, klaster fizičkih zaštitnih zidova je pao i ne diže se!!!
Trebate protrljati oči, pokušavate shvatiti što se događa i zamisliti kako je ovo uopšte moglo da se desi. U slušalici se čuje kako direktor vuče kosu s glave, i traži da se ponovo javi jer ga na drugoj liniji zove generalni direktor.

Nakon pola sata prikupili ste prve informacije od dežurne smene, probudili ste sve koje ste mogli probuditi. Na kraju, tehnički direktor nije lagao, sve točno stoji, glavni klaster vatrozida je pao i nijedna osnovna radnja ga ne pokreće. Sve usluge koje kompanija nudi ne rade.

Odaberite problem po svom ukusu, svatko će se sjetiti nečega svog. Na primjer, nakon noćne nadogradnje, u odsustvu velike opterećenosti, sve je radilo dobro, i svi zadovoljni su otišli na spavanje. Došao je promet, i počeli su se prepunjavati međuspremnici sučelja zbog greške u upravljačkom programu mrežne kartice.

Situaciju dobro može opisati Jackie Chan.

Automatizacija mreže. Razine iz života

Hvala ti, Jackie.

Nema baš ugodne situacije, zar ne?

Ostavimo na trenutak našeg mrežnog prijatelja s njegovim tužnim mislima.

Razgovarajmo o tome kako će se situacija dalje razvijati.

Predlažemo sljedeći redoslijed izlaganja materijala

  1. Razmotrićemo shemu mreže i objasniti kako ona radi;
  2. Opisat ćemo kako prenosimo postavke s jednog usmjerivača na drugi pomoću Ansible-a;
  3. Razgovarat ćemo o automatizaciji IT infrastrukture u cjelini.

Shema mreže i njezin opis

Shema

Automatizacija mreže. Razine iz života

Razmotrićemo logičku shemu naše organizacije. Nećemo navoditi konkretne proizvođače opreme, u okviru ovog članka to nije od značaja. (Pažljivi čitatelj će sam shvatiti koja se oprema koristi). Ovo je jedan od dobrih aspekata rada s Ansible-om, tijekom postavljanja nam u osnovi nije važno koja je to oprema. Samo da bi se razumjelo, radi se o opremi poznatih dobavljača poput Cisco, Juniper, Check Point, Fortinet, Palo Alto ... možete unijeti svoju verziju.

Imamo dva glavna zadatka u vezi s premještanjem prometa:

  1. Osigurati objavljivanje naših usluga koje čine poslovanje kompanije;
  2. Osigurati komunikaciju s podružnicama, udaljenim podatkovnim centrima i vanjskim organizacijama (partnerima i klijentima), kao i izlaz podružnica na internet putem centralnog ureda.

Počnimo s osnovnim elementima:

  1. Dva granična usmjerivača (BRD-01, BRD-02);
  2. Klaster vatrozida (FW-CLUSTER);
  3. Jezgreni prekidač (L3-CORE);
  4. Usmjerivač koji će postati spasilački prsluk (dok rješavamo problem, premjestit ćemo mrežne postavke s FW-CLUSTER na EMERGENCY) (EMERGENCY);
  5. Prekidači za upravljanje mrežnom infrastrukturom (L2-MGMT);
  6. Virtualna mašina s Git i Ansible (VM-AUTOMATION);
  7. Laptop na kojem se provodi testiranje i razvoj playbook-ova za Ansible (Laptop-Automation).

Na mreži je postavljen dinamički protokol usmjeravanja OSPF s sljedećim područjima:

  • Područje 0 – područje koje uključuje usmjerivače odgovorne za preusmjeravanje prometa u zoni EXCHANGE;
  • Područje 1 – područje koje uključuje usmjerivače odgovorne za rad usluga kompanije;
  • Područje 2 – područje koje uključuje usmjerivače odgovorne za usmjeravanje management prometa;
  • Područje N – područja podružničkih mreža.

Na graničnim usmjerivačima stvoren je po virtualni usmjerivač (VRF-INTERNET), na kojima je podignut eBGP full view s odgovarajućim dodijeljenim AS. Između VRF-a je postavljen iBGP. Kompanija ima skup bijelih adresa koje su objavljene na tim VRF-INTERNET. Dio bijelih adresa usmjerava se direktno na FW-CLUSTER (adrese na kojima rade usluge kompanije), dio se usmjerava kroz zonu EXCHANGE (unutarnje usluge kompanije koje zahtijevaju vanjske IP adrese i vanjske NAT adrese za urede). Nakon toga promet dolazi do virtualnih usmjerivača stvorenih na L3-CORE s bijelim i sivim adresama (sigurnosne zone).

U Management mreži koriste se namjenski switchevi i predstavljaju fizički odvojenu mrežu. Management mreža je također podijeljena na sigurnosne zone.
Upravljač EMERGENCY fizički i logički duplicira FW-CLUSTER. Na njemu su isključeni svi interfejsi osim onih koji gledaju u management mrežu.

Automatizacija i njezin opis

Razjasnili smo kako funkcionira mreža. Sada ćemo razraditi korake koje ćemo poduzeti za preusmjeravanje prometa s FW-CLUSTER na EMERGENCY:

  1. Isključujemo interfejse na switchu jezgre (L3-CORE) koji ga povezuju s FW-CLUSTER;
  2. Isključujemo interfejse na switchu jezgre L2-MGMT koji ga povezuju s FW-CLUSTER;
  3. Postavljamo usmjerivač EMERGENCY (po defaultu su isključeni svi interfejsi osim onih koji su povezani s L2-MGMT):

  • Uključujemo interfejse na EMERGENCY;
  • Postavljamo vanjsku IP adresu (za NAT) koja je bila na FW-Cluster;
  • Generiramo gARP zahtjeve kako bi se u arp-tablicama L3-CORE promijenili MAC adrese s FW-Cluster na EMERGENCY;
  • Postavljamo statički zadani put do BRD-01, BRD-02;
  • Kreiramo NAT pravila;
  • Pokrećemo OSPF područje 1 na EMERGENCY;
  • Pokrećemo OSPF područje 2 na EMERGENCY;
  • Mijenjamo troškove ruta u području 1 na 10;
  • Mijenjamo trošak zadane rute u području 1 na 10;
  • Promijenite IP adrese, povezane s L2-MGMT (na one koje su bile na FW-CLUSTER);
  • Generiramo gARP zahtjeve kako bi se u arp-tablicama L2-MGMT promijenile MAC adrese s FW-CLUSTER na EMERGENCY.

Ponovno se vraćamo na izvorno postavljanje zadatka. Tri sata ujutro, ogroman stres, greška na bilo kojem od koraka može dovesti do novih problema. Jeste li spremni unositi naredbe kroz CLI? Da? U redu, idite se barem malo osvježiti, popijte kavu i skupite hrabrost.
Bruce, molim te, pomozi momcima.

Automatizacija mreže. Razine iz života

Nastavljamo s izradom naše automatizacije.
Ispod je prikazan dijagram rada playbook-a u terminima Ansiblea. Ovaj dijagram odražava ono što smo opisali malo prije, samo što je ovo konkretna realizacija u Ansibleu.
Automatizacija mreže. Razine iz života

U ovoj fazi smo shvatili što trebamo napraviti, razvili smo playbook, proveli testiranje, sada smo spremni za njegovo pokretanje.

Još jedno malo lirskog odskakanja. Lakoca pripovijedanja ne bi vas trebala zavesti. Proces pisanja playbooka nije bio jednostavan i brz kao što se može činiti. Testiranje je oduzelo dosta vremena, stvoren je virtualni stožer, rješenje je višekratno isprobano, provedeno je otprilike 100 testova.

Pokrećemo…Imamo osjećaj da sve ide vrlo sporo, negdje postoji greška, nešto na kraju neće proraditi. Osjećaj je kao skakanje s padobranom, a padobran se ne otvara odmah…to je normalno.

Zatim čitamo rezultate izvršenih operacija playbook-a Ansible (IP adrese su zamijenjene zbog urote):

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

PLAY [------->Hitna situacija na VCF] ********************************************************

TASK [vcf_junos_emergency_on : Onemogući PROD sučelja prema FW-CLUSTER] *********************
izmijenjeno: [vcf]

PLAY [------->Hitna situacija na MGMT-CORE] ************************************************

TASK [mgmt_junos_emergency_on : Onemogući MGMT sučelja prema FW-CLUSTER] ******************
izmijenjeno: [m9-03-sw-03-mgmt-core]

PLAY [------->Hitna situacija na] ****************************************************

TASK [mk_routeros_emergency_on : Omogući EXT-INTERNET sučelje] **************************
izmijenjeno: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Generiraj gARP za EXT-INTERNET sučelje] ****************
izmijenjeno: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Omogući statičku zadanu putanju za EXT-INTERNET] ****************
izmijenjeno: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Promijeni NAT pravilo za EXT-INTERNET sučelje] ****************
izmijenjeno: [m9-04-r-04] => (item=12)
izmijenjeno: [m9-04-r-04] => (item=14)
izmijenjeno: [m9-04-r-04] => (item=15)
izmijenjeno: [m9-04-r-04] => (item=16)
izmijenjeno: [m9-04-r-04] => (item=17)

TASK [mk_routeros_emergency_on : Omogući OSPF Zona 1 PROD] ******************************
izmijenjeno: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Omogući OSPF Zona 2 MGMT] *****************************
izmijenjeno: [m9-04-r-04]

TASK [mk_routeros_emergency_on : Promijeni troškove OSPF Zona 1 sučelja na 10] *****************
izmijenjeno: [m9-04-r-04] => (item=VLAN-1001)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1002)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1003)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1004)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1005)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1006)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1007)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1008)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1009)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1010)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1011)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1012)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1013)
izmijenjeno: [m9-04-r-04] => (item=VLAN-1100)

TASK [mk_routeros_emergency_on : Promijeni zadani trošak za OSPF zona1 na 10] ******************
izmijenjeno: [m9-04-r-04]

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

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

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

Gotovo!

Zapravo, nije baš spremno, ne zaboravimo na konvergenciju dinamičkih protokola usmjeravanja i opterećenje velikim brojem ruta u FIB-u. Na to ne možemo utjecati. Čekamo. Složilo se. E sad je spremno.

A u selu Vilabadžo (koje ne želi automatizirati postavljanje mreže) i dalje se pere posuđe. Bruce (doduše, drugi, ali ne manje cool) pokušava shvatiti koliko još treba ručno rekonfigurirati opremu.

Automatizacija mreže. Razine iz života

Želio bih se još osvrnuti na jedan važan trenutak. Kako da sve vratimo natrag? Nakon nekog vremena, oživjet ćemo naš FW-CLUSTER. To je osnovna oprema, a ne rezervna, na njoj mora raditi mreža.

Osjećate li kako se mrežarima počinje zatezati? Tehnički direktor će čuti tisuću argumenata zašto to ne treba raditi, zašto to može učiniti kasnije. Nažalost, tako se i stvara mreža od hrpe zakrpa, komadića, ostataka nekadašnjeg luksuza. Ispada da je to patchwork. Naša zadaća, ne u ovoj konkretnoj situaciji, već općenito kao IT stručnjaka — dovesti rad mreže do lijepog engleskog izraza “consistency”, koji je vrlo višeznačan i može se prevesti kao: dosljednost, neprotivriječnost, logičnost, usklađenost, sistematičnost, komparabilnost, povezanost. Sve se to odnosi na njega. Samo u takvom stanju mreža je upravljiva, jasno razumijemo što i kako radi, jasno smo svjesni što treba promijeniti, u slučaju potrebe, i jasno znamo kuda pogledati u slučaju problema. I samo u takvoj mreži možete napraviti trikove, slične onima koje smo sada opisali.

U stvari, pripremljen je još jedan playbook koji je vraćao postavke u izvorno stanje. Logika njegova rada je ista (važna je jer treba zapamtiti, redoslijed zadataka je vrlo važan), da ne bismo produžavali i ovako prilično dugačak članak, odlučili smo ne objavljivati listing izvršenja playbook-a. Provedbom takvih vježbi, osjećat ćete se mnogo smirenije i sigurnije u budućnosti, osim toga, svi ad hoc dodaci koje ste tamo napravili odmah će se pokazati.

Svi zainteresirani mogu nam se obratiti i dobiti izvorne kodove svega što je napisano, zajedno sa svim playbook-ima. Kontakti su u profilu.

Zaključci

Po našem mišljenju, procesi koji se mogu automatizirati još uvijek se nisu kristalizirali. Na temelju onoga što smo doživjeli i o čemu razgovaraju naši zapadni kolege, trenutno se vide sljedeće teme:

  • Provisioning uređaja;
  • Prikupljanje podataka;
  • Izvještavanje;
  • Otklanjanje problema;
  • Usaglašenost.

Ako postoji interes, možemo nastaviti raspravu o jednoj od postavljenih tema.

Također želim malo razmisliti o automatizaciji. Kakva bi ona trebala biti prema našem shvaćanju:

  • Sustav bi trebao funkcionirati bez čovjeka, uz to se poboljšavati od strane čovjeka. Sustav ne bi trebao ovisiti o čovjeku;
  • Eksploatacija treba biti stručna. Nedostaje klasa stručnjaka koji obavljaju rutinske zadatke. Tu su stručnjaci koji su automatizirali svu rutinu i rješavaju samo složene zadatke;
  • Rutinski standardni zadaci obavljaju se automatski „pušanjem dugmeta“, ne troše se resursi. Rezultat takvih zadataka uvijek je predvidljiv i jasan.

I na što bi ovi stavci trebali dovesti:

  • Prozirnost IT infrastrukture (manji rizici u eksploataciji, modernizaciji, implementaciji. Manje vremena isključenja godišnje);
  • Mogućnost planiranja IT resursa (sustav planiranja kapaciteta — vidljivo koliko se troši, vidljivo koliko resursa je potrebno u jedinstvenom sustavu, a ne putem e-mailova i odlazaka do voditelja odjela);
  • Mogućnost smanjenja broja IT osoblja za podršku.

Autori članka: Aleksandar Čeljenkov (CCIE RS, CCIE SP) i Pavel Kirilov. Zanimljivo nam je raspravljati i predlagati rješenja na temu Automatizacija IT infrastrukture.


Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster