Automatizácia siete. Prípad z vlastného života

Čau Habr!

V tomto článku by sme chceli hovoriť o automatizácii sieťovej infraštruktúry. Bude predstavený pracovný diagram siete, ktorá funguje v jednej malej, ale veľmi hrdej spoločnosti. Všetky zápasy so skutočným sieťovým vybavením sú náhodné. Pozrieme sa na prípad, ktorý sa stal v tejto sieti a ktorý mohol viesť k dlhodobému odstaveniu prevádzky a vážnym finančným stratám. Riešenie tohto prípadu veľmi dobre zapadá do konceptu „Automatizácia sieťovej infraštruktúry“. Pomocou automatizačných nástrojov si ukážeme, ako sa dajú efektívne riešiť zložité problémy v krátkom čase a zamyslíme sa nad tým, prečo by sa tieto problémy mali riešiť práve takto a nie inak (cez konzolu).

Vylúčenie zodpovednosti

Naše hlavné nástroje pre automatizáciu sú Ansible (ako automatizačný nástroj) a Git (ako úložisko pre Ansible playbooky). Hneď by som chcel urobiť výhradu, že toto nie je úvodný článok, kde sa bavíme o logike Ansible alebo Gitu, a vysvetlíme si základné veci (napríklad čo sú roletaskimoduly, inventárne súbory, premenné v Ansible alebo čo sa stane, keď zadáte príkazy git push alebo git commit). Tento príbeh nie je o tom, ako môžete precvičiť Ansible a nakonfigurovať NTP alebo SMTP na vašom zariadení. Toto je príbeh o tom, ako môžete rýchlo a najlepšie vyriešiť problém so sieťou bez chýb. Odporúča sa tiež dobre pochopiť, ako sieť funguje, najmä čo je zásobník protokolov TCP/IP, OSPF, BGP. Z rovnice tiež odstránime výber Ansible a Git. Ak si predsa len potrebujete vybrať konkrétne riešenie, vrelo odporúčame prečítať si knihu „Programovateľnosť siete a automatizácia. Skills for the Next-Generation Network Engineer“ od Jasona Edelmana, Scotta S. Lowa a Matta Oswalta.

Teraz k veci.

Vyhlásenie o probléme

Predstavme si situáciu: 3 hodiny ráno, tvrdo spíte a snívate. Hovor. Technický riaditeľ volá:

- Áno?
— ###, ####, #####, klaster firewallu padol a nestúpa!!!
Pretierate si oči, snažíte sa pochopiť, čo sa deje a predstavujete si, ako sa to vôbec mohlo stať. V telefóne počujete, ako sa režisérovi trhajú vlasy na hlave a žiada, aby zavolal späť, pretože mu volá generál na druhej linke.

Po polhodine ste zozbierali prvé úvodné poznámky zo služobnej zmeny, zobudili všetkých, ktorých bolo možné zobudiť. V dôsledku toho technický riaditeľ neklamal, všetko je tak, ako je, hlavný zhluk firewallov padol a žiadne základné pohyby tela ho neprivádzajú k rozumu. Všetky služby, ktoré firma ponúka, nefungujú.

Vyberte si problém podľa svojho gusta, každý si bude pamätať niečo iné. Napríklad po nočnej aktualizácii bez veľkej záťaže všetko fungovalo dobre a všetci išli spať spokojní. Prevádzka začala prúdiť a vyrovnávacie pamäte rozhrania začali pretekať kvôli chybe v ovládači sieťovej karty.

Jackie Chan vie dobre opísať situáciu.

Automatizácia siete. Prípad z vlastného života

Ďakujem, Jackie.

Nie veľmi príjemná situácia, však?

Nechajme na chvíľu našu sieť brata s jeho smutnými myšlienkami.

Poďme diskutovať o tom, ako sa budú udalosti vyvíjať ďalej.

Odporúčame nasledovné poradie prezentácie materiálu

  1. Pozrime sa na sieťový diagram a uvidíme, ako to funguje;
  2. Popíšeme, ako prenášame nastavenia z jedného smerovača do druhého pomocou Ansible;
  3. Povedzme si niečo o automatizácii IT infraštruktúry ako celku.

Schéma a popis siete

Schéma

Automatizácia siete. Prípad z vlastného života

Uvažujme o logickom diagrame našej organizácie. Nebudeme menovať konkrétnych výrobcov zariadení, pre účely tohto článku je to jedno (Pozorný čitateľ uhádne, aké zariadenie sa používa). Toto je len jedna z dobrých výhod práce s Ansible; pri nastavovaní nás vo všeobecnosti nezaujíma, o aký druh zariadenia ide. Len pre pochopenie, ide o vybavenie od známych predajcov, ako sú Cisco, Juniper, Check Point, Fortinet, Palo Alto...môžete si ho nahradiť vlastnou voľbou.

Na presun dopravy máme dve hlavné úlohy:

  1. Zabezpečiť zverejňovanie našich služieb, ktoré sú predmetom podnikania spoločnosti;
  2. Zabezpečiť komunikáciu s pobočkami, vzdialeným dátovým centrom a organizáciami tretích strán (partnermi a klientmi), ako aj prístup pobočiek na internet prostredníctvom centrály.

Začnime základnými prvkami:

  1. Dva hraničné smerovače (BRD-01, BRD-02);
  2. Firewall Cluster (FW-CLUSTER);
  3. Prepínač jadra (L3-CORE);
  4. Router, ktorý sa stane záchranným lanom (keď vyriešime problém, prenesieme nastavenia siete z FW-CLUSTER do NÚDZOVÉHO) (NÚDZOVÉ);
  5. Prepínače pre správu sieťovej infraštruktúry (L2-MGMT);
  6. Virtuálny stroj s Git a Ansible (VM-AUTOMATION);
  7. Notebook, na ktorom prebieha testovanie a vývoj príručiek pre Ansible (Laptop-Automation).

Sieť je nakonfigurovaná pomocou dynamického smerovacieho protokolu OSPF s nasledujúcimi oblasťami:

  • Oblasť 0 – oblasť, ktorá zahŕňa smerovače zodpovedné za presun prevádzky v zóne VÝMENY;
  • Oblasť 1 – oblasť, ktorá zahŕňa smerovače zodpovedné za prevádzku služieb spoločnosti;
  • Oblasť 2 – oblasť, ktorá zahŕňa smerovače zodpovedné za riadenie smerovania prevádzky;
  • Oblasť N – oblasti pobočkových sietí.

Na hraničných smerovačoch je vytvorený virtuálny smerovač (VRF-INTERNET), na ktorom je nainštalovaný eBGP full view s príslušným priradeným AS. iBGP je nakonfigurovaný medzi VRF. Spoločnosť má skupinu bielych adries, ktoré sú zverejnené na týchto VRF-INTERNET. Niektoré biele adresy sú smerované priamo na FW-CLUSTER (adresy, na ktorých fungujú služby spoločnosti), niektoré sú smerované cez zónu EXCHANGE (interné služby spoločnosti vyžadujúce externé IP adresy a externé adresy NAT pre kancelárie). Ďalej prevádzka smeruje do virtuálnych smerovačov vytvorených na L3-CORE s bielou a sivou adresou (bezpečnostné zóny).

Sieť Management používa vyhradené prepínače a predstavuje fyzicky vyhradenú sieť. Riadiaca sieť je tiež rozdelená na bezpečnostné zóny.
NÚDZOVÝ router fyzicky a logicky duplikuje FW-CLUSTER. Všetky rozhrania na ňom sú deaktivované okrem tých, ktoré sa pozerajú do riadiacej siete.

Automatizácia a jej popis

Zistili sme, ako funguje sieť. Teraz sa pozrime krok za krokom na to, čo urobíme, aby sme presunuli prevádzku z FW-CLUSTER do NÚDZOVÉHO:

  1. Deaktivujeme rozhrania na prepínači jadra (L3-CORE), ktoré ho pripájajú k FW-CLUSTER;
  2. Deaktivujeme rozhrania na prepínači jadra L2-MGMT, ktoré ho pripájajú k FW-CLUSTER;
  3. Nakonfigurujeme NÚDZOVÝ smerovač (v predvolenom nastavení sú na ňom všetky rozhrania vypnuté, okrem tých, ktoré sú spojené s L2-MGMT):

  • Povoľujeme rozhrania v NÚDZI;
  • Nakonfigurujeme externú IP adresu (pre NAT), ktorá bola na FW-Cluster;
  • Požiadavky gARP generujeme tak, že adresy maku v arp tabuľkách L3-CORE sa menia z FW-Cluster na NÚDZOVÉ;
  • Predvolenú trasu registrujeme ako statickú do BRD-01, BRD-02;
  • Vytvorte pravidlá NAT;
  • Zvýšte na NÚDZOVÚ OSPF oblasť 1;
  • Zvýšte na NÚDZOVÚ OSPF oblasť 2;
  • Zmeníme cenu trás v oblasti 1 na 10;
  • Zmeníme cenu predvolenej trasy v oblasti 1 na 10;
  • Zmeníme IP adresy spojené s L2-MGMT (na tie, ktoré boli na FW-CLUSTER);
  • Požiadavky gARP generujeme tak, že adresy maku v arp tabuľkách L2-MGMT sa menia z FW-CLUSTER na NÚDZOVÉ.

Opäť sa vraciame k pôvodnej formulácii problému. Tri hodiny ráno, obrovský stres, chyba v ktorejkoľvek fáze môže viesť k novým problémom. Ste pripravení zadávať príkazy cez CLI? Áno? Dobre, choď si aspoň opláchnuť tvár, vypiť kávu a pozbierať silu vôle.
Bruce, prosím pomôžte chlapcom.

Automatizácia siete. Prípad z vlastného života

Pokračujeme v zlepšovaní našej automatizácie.
Nižšie je uvedený diagram toho, ako príručka funguje v podmienkach Ansible. Táto schéma odráža to, čo sme opísali vyššie, je to len špecifická implementácia v Ansible.
Automatizácia siete. Prípad z vlastného života

V tejto fáze sme si uvedomili, čo je potrebné urobiť, vyvinuli sme príručku, vykonali testovanie a teraz sme pripravení ju spustiť.

Ďalšia malá lyrická odbočka. Ľahkosť príbehu by vás nemala zavádzať. Proces písania zošitov nebol taký jednoduchý a rýchly, ako by sa mohlo zdať. Testovanie zabralo pomerne veľa času, vznikol virtuálny stojan, riešenie bolo mnohokrát testované, zrealizovaných bolo okolo 100 testov.

Spustíme... Je tu pocit, že všetko sa deje veľmi pomaly, niekde je chyba, niečo nakoniec nebude fungovať. Pocit, že skáčete s padákom, ale padák sa nechce hneď otvoriť... to je normálne.

Ďalej si prečítame výsledok vykonaných operácií Ansible playbooku (IP adresy boli nahradené pre účely utajenia):

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

Hotovo!

V skutočnosti to nie je úplne pripravené, nezabudnite na konvergenciu dynamických smerovacích protokolov a načítanie veľkého počtu ciest do FIB. Toto nevieme nijako ovplyvniť. Čakáme. Vyšlo to. Teraz je to pripravené.

A v dedine Vilabajo (ktorá nechce automatizovať nastavenie siete) pokračujú v umývaní riadu. Bruce (pravdaže už iný, no o nič menej cool) sa snaží pochopiť, o koľko viac prebehne manuálna rekonfigurácia výbavy.

Automatizácia siete. Prípad z vlastného života

Chcel by som sa tiež pozastaviť nad jedným dôležitým bodom. Ako môžeme získať všetko späť? Po nejakom čase privedieme náš FW-CLUSTER späť k životu. Toto je hlavné zariadenie, nie záloha, musí na ňom bežať sieť.

Cítite, ako networkeri začínajú horieť? Technický riaditeľ si vypočuje tisíc argumentov, prečo by sa to nemalo robiť, prečo sa to dá urobiť neskôr. Žiaľ, takto funguje sieť z kopy záplat, kúskov a pozostatkov svojho bývalého luxusu. Ukáže sa, že ide o patchworkovú prikrývku. Našou úlohou vo všeobecnosti, nie v tejto konkrétnej situácii, ale všeobecne v zásade, ako IT špecialistov, je priviesť prácu siete ku krásnemu anglickému slovu „konzistencia“, je veľmi mnohostranné, dá sa preložiť ako: koherencia , konzistentnosť, logika, koherencia, systematickosť, porovnateľnosť, koherencia. Všetko je o ňom. Iba v tomto stave je sieť zvládnuteľná, jasne rozumieme tomu, čo a ako funguje, jasne chápeme, čo je potrebné zmeniť, v prípade potreby jasne vieme, kde hľadať, ak nastanú problémy. A len v takejto sieti môžete vykonávať triky, aké sme práve opísali.

Vlastne bol pripravený ďalší playbook, ktorý vrátil nastavenia do pôvodného stavu. Logika jeho fungovania je rovnaká (je dôležité mať na pamäti, že poradie úloh je veľmi dôležité), aby sme nenaťahovali už aj tak dosť dlhý článok, rozhodli sme sa neuverejniť výpis spustenia playbooku. Po vykonaní takýchto cvičení sa budete v budúcnosti cítiť oveľa pokojnejšie a sebavedomejšie, navyše sa okamžite odhalia akékoľvek barly, ktoré ste tam nahromadili.

Ktokoľvek nám môže napísať a získať zdroje všetkého napísaného kódu spolu so všetkými palybookmi. Kontakty v profile.

Závery

Podľa nášho názoru sa procesy, ktoré sa dajú automatizovať, ešte nevykryštalizovali. Na základe toho, s čím sme sa stretli a o čom diskutujú naši západní kolegovia, sú zatiaľ viditeľné tieto témy:

  • Poskytovanie zariadení;
  • Zber dát;
  • podávanie správ;
  • Riešenie problémov;
  • Compliance.

V prípade záujmu môžeme pokračovať v diskusii na niektorú z daných tém.

Rád by som tiež povedal niečo o automatizácii. Čo by to malo byť v našom chápaní:

  • Systém musí žiť bez človeka, pričom ho človek vylepšuje. Systém by nemal závisieť od ľudí;
  • Prevádzka musí byť odborná. Neexistuje žiadna trieda špecialistov, ktorí vykonávajú rutinné úlohy. Sú odborníci, ktorí celú rutinu zautomatizovali a riešia len zložité problémy;
  • Rutinné štandardné úlohy sa vykonávajú automaticky „stlačením tlačidla“, neplytvajú sa žiadne zdroje. Výsledok takýchto úloh je vždy predvídateľný a zrozumiteľný.

A k čomu by mali viesť tieto body:

  • Transparentnosť IT infraštruktúry (Menej rizík prevádzky, modernizácie, implementácie. Menej prestojov ročne);
  • Schopnosť plánovať zdroje IT (systém plánovania kapacít - môžete vidieť, koľko sa spotrebuje, môžete vidieť, koľko zdrojov je potrebných v jednom systéme, a nie listami a návštevami najvyšších oddelení);
  • Možnosť zníženia počtu IT pracovníkov.

Autori článku: Alexander Chelovekov (CCIE RS, CCIE SP) a Pavel Kirillov. Máme záujem diskutovať a navrhovať riešenia na tému automatizácie IT infraštruktúry.


Zdroj: hab.com

Pridať komentár