Automatizacija mreže. Slučaj iz života

Hej Habr!

U ovom članku želimo govoriti o automatizaciji mrežne infrastrukture. Prikazat će se radni dijagram mreže koja djeluje u jednoj maloj, ali vrlo ponosnoj tvrtki. Sva podudaranja sa stvarnom mrežnom opremom su slučajna. Osvrnut ćemo se na slučaj koji se dogodio u ovoj mreži, a koji je mogao dovesti do gašenja poslovanja na duže vrijeme i ozbiljnih financijskih gubitaka. Rješenje za ovaj slučaj vrlo se dobro uklapa u koncept “Automatizacija mrežne infrastrukture”. Pomoću alata za automatizaciju pokazat ćemo kako možete učinkovito riješiti složene probleme u kratkom vremenu te ćemo razmisliti zašto bi te probleme trebalo rješavati na ovaj način, a ne drugačije (preko konzole).

Izjava o odricanju od odgovornosti

Naši glavni alati za automatizaciju su Ansible (kao alat za automatizaciju) i Git (kao repozitorij za Ansible playbooks). Želio bih odmah napomenuti da ovo nije uvodni članak, gdje govorimo o logici Ansiblea ili Gita, i objašnjavamo osnovne stvari (na primjer, što su roletaskimoduli, datoteke inventara, varijable u Ansibleu ili što se događa kada unesete naredbe git push ili git commit). 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đer je preporučljivo dobro razumjeti kako mreža radi, posebno što je TCP/IP, OSPF, BGP protokolni skup. Također ćemo izbaciti izbor Ansible i Git iz zagrada. Ako ipak trebate odabrati određeno rješenje, toplo preporučamo čitanje knjige „Programabilnost mreže i automatizacija. Vještine za mrežnog inženjera sljedeće generacije" Jasona Edelmana, Scotta S. Lowea i Matta Oswalta.

Sada na stvar.

Formuliranje problema

Zamislimo situaciju: 3 sata ujutro, čvrsto spavate i sanjate. Telefonski poziv. Tehnički direktor zove:

- Da?
— ###, ####, #####, klaster vatrozida je pao i ne diže se!!!
Trljate oči pokušavajući shvatiti što se događa i zamisliti kako se to uopće moglo dogoditi. Na telefonu se čuje kako se direktoru kida kosa na glavi, a on traži da se javi jer ga general zove na drugu liniju.

Pola sata kasnije prikupili ste prve uvodne bilješke iz dežurstva, probudili sve koji su se dali probuditi. Kao rezultat toga, tehnički direktor nije lagao, sve je kako jest, glavni klaster vatrozida je pao, a nikakvi osnovni pokreti tijela ga ne dovode k sebi. Sve usluge koje tvrtka nudi ne rade.

Odaberite problem po svom ukusu, svatko će zapamtiti nešto drugo. Na primjer, nakon noćnog ažuriranja bez velikog opterećenja, sve je dobro radilo i svi su sretni otišli u krevet. Promet je počeo teći, a međuspremnici sučelja 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 života

Hvala ti, Jackie.

Nije baš ugodna situacija, zar ne?

Ostavimo našu mrežu brate s njegovim tužnim mislima nakratko.

Razgovarajmo o tome kako će se događaji dalje razvijati.

Predlažemo sljedeći redoslijed izlaganja materijala

  1. Pogledajmo mrežni dijagram i vidimo kako radi;
  2. Opisat ćemo kako prenosimo postavke s jednog routera na drugi koristeći Ansible;
  3. Razgovarajmo o automatizaciji IT infrastrukture u cjelini.

Dijagram mreže i opis

Shema

Automatizacija mreže. Slučaj iz života

Razmotrimo logički dijagram naše organizacije. Nećemo imenovati specifične proizvođače opreme; za potrebe ovog članka to nije važno (Pažljivi čitatelj će pogoditi o kakvoj se opremi radi). Ovo je samo jedna od dobrih prednosti rada s Ansibleom, pri postavljanju nam je uglavnom svejedno o kakvoj se opremi radi. Čisto da se razumijemo, ovo je oprema poznatih proizvođača, kao što su Cisco, Juniper, Check Point, Fortinet, Palo Alto...možete zamijeniti svojom opcijom.

Imamo dva glavna zadatka za kretanje prometa:

  1. Osigurati objavu naših usluga koje su djelatnost tvrtke;
  2. Omogućite komunikaciju s podružnicama, udaljenim podatkovnim centrom i organizacijama trećih strana (partnerima i klijentima), kao i pristup poslovnica internetu putem središnjeg ureda.

Počnimo s osnovnim elementima:

  1. Dva granična rutera (BRD-01, BRD-02);
  2. Klaster vatrozida (FW-CLUSTER);
  3. Jezgreni prekidač (L3-CORE);
  4. Usmjerivač koji će postati slamka spasa (kako riješimo problem, prenijet ćemo mrežne postavke s FW-CLUSTER-a na EMERGENCY) (HITNO);
  5. Preklopnici za upravljanje mrežnom infrastrukturom (L2-MGMT);
  6. Virtualni stroj s Gitom i Ansibleom (VM-AUTOMATION);
  7. Prijenosno računalo na kojem se provodi testiranje i razvoj playbooka za Ansible (Laptop-Automation).

Mreža je konfigurirana dinamičkim OSPF protokolom usmjeravanja sa sljedećim područjima:

  • Područje 0 – područje koje uključuje usmjerivače odgovorne za kretanje prometa u zoni EXCHANGE;
  • Područje 1 – područje koje uključuje usmjerivače odgovorne za rad usluga tvrtke;
  • Područje 2 – područje koje uključuje usmjerivače odgovorne za usmjeravanje prometa;
  • Područje N – područja mreže poslovnica.

Na graničnim ruterima kreira se virtualni ruter (VRF-INTERNET) na koji je instaliran eBGP full view s pripadajućim dodijeljenim AS-om. iBGP je konfiguriran između VRF-ova. Tvrtka ima skup bijelih adresa koje su objavljene na ovim VRF-INTERNETIMA. Neke od bijelih adresa usmjeravaju se direktno na FW-CLUSTER (adrese na kojima posluju usluge tvrtke), neke se usmjeravaju kroz zonu EXCHANGE (interne usluge tvrtke koje zahtijevaju vanjske IP adrese, te vanjske NAT adrese za urede). Zatim, promet ide na virtualne usmjerivače kreirane na L3-CORE s bijelim i sivim adresama (sigurnosne zone).

Upravljačka mreža koristi namjenske preklopnike i predstavlja fizički namjensku mrežu. Upravljačka mreža također je podijeljena na sigurnosne zone.
EMERGENCY router fizički i logički duplicira FW-CLUSTER. Sva sučelja na njemu su onemogućena osim onih koja gledaju u upravljačku mrežu.

Automatizacija i njen opis

Shvatili smo kako mreža funkcionira. Sada pogledajmo korak po korak što ćemo učiniti za prijenos prometa s FW-CLUSTER-a na EMERGENCY:

  1. Onemogućujemo sučelja na jezgrenom prekidaču (L3-CORE) koja ga povezuju s FW-KLUSTEROM;
  2. Onemogućujemo sučelja na L2-MGMT prekidaču kernela koji ga povezuju s FW-CLUSTER-om;
  3. Konfiguriramo EMERGENCY router (prema zadanim postavkama sva su sučelja na njemu onemogućena, osim onih povezanih s L2-MGMT):

  • Omogućujemo sučelja u HITNOM SLUČAJU;
  • Konfiguriramo vanjsku IP adresu (za NAT) koja je bila na FW-klasteru;
  • Generiramo gARP zahtjeve tako da se poppy adrese u L3-CORE arp tablicama mijenjaju iz FW-Cluster u EMERGENCY;
  • Registriramo zadanu rutu kao statičnu na BRD-01, BRD-02;
  • Stvaranje NAT pravila;
  • Podignite na HITNO OSPF područje 1;
  • Podignite na HITNO OSPF područje 2;
  • Mijenjamo cijenu ruta u području 1 u 10;
  • Mijenjamo cijenu zadane rute u području 1 na 10;
  • Mijenjamo IP adrese povezane s L2-MGMT (u one koje su bile na FW-CLUSTER);
  • Generiramo gARP zahtjeve tako da se poppy adrese u L2-MGMT arp tablicama mijenjaju iz FW-CLUSTER u EMERGENCY.

Opet se vraćamo na izvornu formulaciju problema. Tri sata ujutro, ogroman stres, greška u bilo kojoj fazi može dovesti do novih problema. Jeste li spremni za upisivanje naredbi putem CLI-ja? Da? Dobro, idi barem isprati lice, popiti kavu i skupiti snagu volje.
Bruce, molim te pomozi momcima.

Automatizacija mreže. Slučaj iz života

Pa, nastavljamo poboljšavati našu automatizaciju.
Ispod se nalazi dijagram koji prikazuje kako playbook radi u terminima Ansiblea. Ova shema odražava ono što smo gore opisali, to je samo specifična implementacija u Ansibleu.
Automatizacija mreže. Slučaj iz života

U ovoj smo fazi shvatili što treba učiniti, izradili playbook, proveli testiranje i sada smo spremni pokrenuti ga.

Još jedna mala lirska digresija. Lakoća priče ne bi vas trebala zavesti. Proces pisanja knjiga igrokaza nije bio tako jednostavan i brz kao što se čini. Testiranje je oduzelo dosta vremena, napravljen je virtualni štand, rješenje je testirano mnogo puta, provedeno je oko 100 testova.

Pokrenimo... Postoji osjećaj da se sve odvija jako sporo, negdje postoji greška, nešto na kraju neće uspjeti. Osjećaj skakanja s padobranom, ali se padobran ne želi odmah otvoriti... to je normalno.

Zatim čitamo rezultat izvedenih operacija Ansible playbook-a (IP adrese su zamijenjene u svrhu 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 sasvim spreman, ne zaboravite na konvergenciju dinamičkih protokola usmjeravanja i učitavanje velikog broja ruta u FIB. Na to nikako ne možemo utjecati. Čekamo. Uspjelo je. Sada je spreman.

A u selu Vilabajo (koje ne želi automatizirati postavljanje mreže) nastavljaju prati suđe. Bruce (doduše, već drugačiji, ali ništa manje cool) pokušava shvatiti koliko će se još ručnog rekonfiguriranja opreme odvijati.

Automatizacija mreže. Slučaj iz života

Također bih se želio zadržati na jednoj važnoj točki. 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 umreženici počinju izgarati? Tehnički direktor čut će tisuću argumenata zašto se to ne smije učiniti, zašto se to može učiniti kasnije. Nažalost, tako mreža funkcionira od hrpe zakrpa, komada i ostataka nekadašnjeg luksuza. Ispada patchwork poplun. Naš zadatak općenito, ne u ovoj konkretnoj situaciji, nego općenito u principu, kao IT stručnjaci, je dovesti rad mreže do lijepe engleske riječi "consistency", vrlo je višestruka, može se prevesti kao: koherencija , dosljednost, logičnost, koherentnost, sustavnost, usporedivost, koherentnost. Sve se vrti oko njega. Samo u tom stanju mreža je upravljiva, jasno nam je što i kako funkcionira, jasno nam je što 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 postavke vratio u prvobitno stanje. Logika njegovog rada je ista (važno je zapamtiti da je redoslijed zadataka vrlo važan), kako ne bismo duljili ionako prilično dugačak članak, odlučili smo ne objaviti popis izvršenja playbook-a. Nakon izvođenja takvih vježbi, osjećat ćete se mnogo smirenije i sigurnije u budućnost, osim toga, sve štake koje ste tamo nagomilali odmah će se otkriti.

Svatko nam može pisati i dobiti izvore svog napisanog koda, zajedno sa svim palybooksima. Kontakti u profilu.

Zaključci

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

  • Opskrba uređaja;
  • Prikupljanje podataka;
  • Izvještavanje;
  • Rješavanje problema;
  • Usklađenost.

Ako bude interesa, možemo nastaviti razgovor na jednu od zadanih tema.

Također bih želio malo razgovarati o automatizaciji. Što bi to trebalo biti po našem razumijevanju:

  • Sustav mora živjeti bez osobe, dok ga osoba unapređuje. Sustav ne bi trebao ovisiti o ljudima;
  • Operacija mora biti stručna. Ne postoji klasa stručnjaka koji obavljaju rutinske zadatke. Postoje stručnjaci koji su automatizirali cijelu rutinu i rješavaju samo složene probleme;
  • Rutinski standardni zadaci obavljaju se automatski "pritiskom gumba", bez uzaludnog trošenja resursa. Rezultat takvih zadataka uvijek je predvidljiv i razumljiv.

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

  • Transparentnost IT infrastrukture (Manji rizici rada, modernizacije, implementacije. Manje zastoja godišnje);
  • Sposobnost planiranja IT resursa (Capacity-planning system - vidi se koliko se troši, vidi se koliko je resursa potrebno u pojedinom sustavu, a ne po dopisima i posjetima glavnim odjelima);
  • Mogućnost smanjenja broja IT osoblja.

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


Izvor: www.habr.com

Dodajte komentar