Reta aŭtomatigo. Kazo el sia vivo

Hej Habr!

En ĉi tiu artikolo ni ŝatus paroli pri aŭtomatigo de reto-infrastrukturo. Labordiagramo de la reto, kiu funkcias en unu malgranda sed tre fiera kompanio estos prezentita. Ĉiuj matĉoj kun reala reto-ekipaĵo estas hazardaj. Ni rigardos kazon, kiu okazis en ĉi tiu reto, kiu povus esti kaŭzinta komercan ĉesigon dum longa tempo kaj gravaj financaj perdoj. La solvo al ĉi tiu kazo tre bone kongruas en la koncepton de "Aŭtomatigo de reto-infrastrukturo". Uzante aŭtomatigajn ilojn, ni montros kiel vi povas efike solvi kompleksajn problemojn en mallonga tempo, kaj ni pripensos kial ĉi tiuj problemoj devus esti solvitaj tiel kaj ne alie (per la konzolo).

malgarantio

Niaj ĉefaj iloj por aŭtomatigo estas Ansible (kiel aŭtomatiga ilo) kaj Git (kiel deponejo por Ansible-ludlibroj). Mi ŝatus tuj rezervi, ke ĉi tio ne estas enkonduka artikolo, kie ni parolas pri la logiko de Ansible aŭ Git, kaj klarigas bazajn aferojn (ekzemple, kio estas rolaskimoduloj, inventardosieroj, variabloj en Ansible, aŭ kio okazas kiam vi enigas la komandojn git push aŭ git commit). Ĉi tiu rakonto ne temas pri kiel vi povas praktiki Ansible kaj agordi NTP aŭ SMTP en via ekipaĵo. Ĉi tio estas rakonto pri kiel vi povas rapide kaj prefere solvi retan problemon sen eraroj. Ankaŭ estas konsilinde havi bonan komprenon pri kiel funkcias la reto, precipe kio estas la protokola stako TCP/IP, OSPF, BGP. Ni ankaŭ prenos la elekton de Ansible kaj Git el la ekvacio. Se vi ankoraŭ bezonas elekti specifan solvon, ni tre rekomendas legi la libron "Reta Programebleco kaj Aŭtomatigo. Skills for the Next-Generation Network Engineer" de Jason Edelman, Scott S. Lowe, kaj Matt Oswalt.

Nun al la punkto.

Formulado de la problemo

Ni imagu situacion: 3-a matene, vi profunde dormas kaj revas. Telefonvoko. La teknika direktoro vokas:

- Jes?
— ###, ####, #####, la fajroŝirmilo areto falis kaj ne altiĝas!!!
Vi frotas viajn okulojn, provante kompreni kio okazas kaj imagi kiel tio eĉ povus okazi. Telefone oni povas aŭdi la harojn sur la kapo de la direktoro ŝiri, kaj li petas voki reen ĉar la generalo vokas lin sur la dua linio.

Post duonhoro, vi kolektis la unuajn enkondukajn notojn el la deĵoro, vekis ĉiujn, kiuj povus esti vekitaj. Rezulte, la teknika direktoro ne mensogis, ĉio estas tia, kia ĝi estas, la ĉefa amaso de fajroŝirmiloj falis, kaj neniuj bazaj korpaj movoj rekonsciigas lin. Ĉiuj servoj kiujn la kompanio proponas ne funkcias.

Elektu problemon laŭ via gusto, ĉiuj memoros ion malsaman. Ekzemple, post nokta ĝisdatigo sen peza ŝarĝo, ĉio funkciis bone, kaj ĉiuj enlitiĝis feliĉaj. Trafiko komencis flui, kaj interfacaj bufroj komencis superflui pro cimo en la retkarto-ŝoforo.

Jackie Chan povas bone priskribi la situacion.

Reta aŭtomatigo. Kazo el sia vivo

Dankon, Jackie.

Ne tre agrabla situacio, ĉu?

Ni forlasu nian reton frato kun siaj malĝojaj pensoj dum momento.

Ni diskutu kiel eventoj plu disvolviĝos.

Ni proponas la jenan ordon de prezento de la materialo

  1. Ni rigardu la retan diagramon kaj vidu kiel ĝi funkcias;
  2. Ni priskribos kiel ni translokigas agordojn de unu enkursigilo al alia uzante Ansible;
  3. Ni parolu pri aŭtomatigo de la IT-infrastrukturo entute.

Reta diagramo kaj priskribo

Skemo

Reta aŭtomatigo. Kazo el sia vivo

Ni konsideru la logikan diagramon de nia organizo. Ni ne nomos specifajn ekipaĵojn fabrikistojn; por la celoj de ĉi tiu artikolo ne gravas (La atentema leganto divenos kian ekipaĵon estas uzata). Ĉi tio estas nur unu el la bonaj avantaĝoj de labori kun Ansible; dum agordado, ni ĝenerale ne zorgas pri kia ekipaĵo ĝi estas. Nur por kompreni, ĉi tio estas ekipaĵo de konataj vendistoj, kiel Cisco, Juniper, Check Point, Fortinet, Palo Alto...vi povas anstataŭigi vian propran opcion.

Ni havas du ĉefajn taskojn por movi trafikon:

  1. Certigu la publikigon de niaj servoj, kiuj estas la komerco de la kompanio;
  2. Provizu komunikadon kun branĉoj, fora datumcentro kaj triaj organizoj (partneroj kaj klientoj), same kiel aliron de branĉoj al la Interreto per la centra oficejo.

Ni komencu per la bazaj elementoj:

  1. Du landlimaj enkursigiloj (BRD-01, BRD-02);
  2. Firewall Cluster (FW-CLUSTER);
  3. Kerna ŝaltilo (L3-CORE);
  4. Enkursigilo, kiu fariĝos vivŝnuro (dum ni solvas la problemon, ni translokigos la retajn agordojn de FW-CLUSTER al EMERGENCY) (EMERGENCY);
  5. Ŝaltiloj por administrado de retaj infrastrukturoj (L2-MGMT);
  6. Virtuala maŝino kun Git kaj Ansible (VM-AUTOMATION);
  7. Tekkomputilo sur kiu testado kaj evoluo de ludlibroj por Ansible (Laptop-Automation) estas efektivigita.

La reto estas agordita kun dinamika OSPF-vojprotokolo kun la sekvaj areoj:

  • Areo 0 - areo kiu inkluzivas enkursigilojn respondecajn pri movado de trafiko en la Interŝanĝa zono;
  • Areo 1 - areo, kiu inkluzivas enkursigilojn respondecajn pri la operacio de firmaaj servoj;
  • Areo 2 - areo kiu inkludas enkursigilojn respondecajn por vojiga administradtrafiko;
  • Areo N - areoj de branĉoretoj.

Sur landlimaj enkursigiloj, virtuala enkursigilo (VRF-INTERRETO) estas kreita, sur kiu eBGP plena vido estas instalita kun la responda asignita AS. iBGP estas agordita inter VRFoj. La kompanio havas aron da blankaj adresoj, kiuj estas publikigitaj en ĉi tiuj VRF-INTERRETO. Kelkaj el la blankaj adresoj estas direktitaj rekte al FW-CLUSTER (adresoj sur kiuj la servoj de la firmao funkcias), kelkaj estas direktitaj tra la Interŝanĝa zono (internaj firmaaj servoj kiuj postulas eksterajn IP-adresojn, kaj eksterajn NAT-adresojn por oficejoj). Poste, la trafiko iras al virtualaj enkursigiloj kreitaj sur L3-CORE kun blankaj kaj grizaj adresoj (sekurecaj zonoj).

La Administra reto uzas diligentajn ŝaltilojn kaj reprezentas fizike diligentan reton. La administra reto ankaŭ estas dividita en sekurecajn zonojn.
La URGENCY-enkursigilo fizike kaj logike duobligas la FW-CLUSTER. Ĉiuj interfacoj sur ĝi estas malŝaltitaj krom tiuj kiuj rigardas en la administran reton.

Aŭtomatigo kaj ĝia priskribo

Ni eksciis kiel funkcias la reto. Nun ni rigardu paŝon post paŝo, kion ni faros por translokigi trafikon de FW-CLUSTER al EMERGENCY:

  1. Ni malŝaltas la interfacojn sur la kerna ŝaltilo (L3-CORE), kiuj konektas ĝin al la FW-CLUSTER;
  2. Ni malŝaltas la interfacojn sur la kernelŝaltilo L2-MGMT, kiuj konektas ĝin al la FW-CLUSTER;
  3. Ni agordas la EMERGENCY-enkursigilon (defaŭlte, ĉiuj interfacoj estas malŝaltitaj sur ĝi, krom tiuj asociitaj kun L2-MGMT):

  • Ni ebligas interfacojn sur URUZO;
  • Ni agordas la eksteran IP-adreson (por NAT) kiu estis sur la FW-Cluster;
  • Ni generas gARP-petojn por ke la papavo-adresoj en la L3-CORE-arp-tabeloj estas ŝanĝitaj de FW-Cluster al URUZO;
  • Ni registras la defaŭltan itineron kiel statikan al BRD-01, BRD-02;
  • Krei NAT-regulojn;
  • Levu al EMERGENCY OSPF Areo 1;
  • Levu al EMERGENCY OSPF Areo 2;
  • Ni ŝanĝas la koston de itineroj en Areo 1 al 10;
  • Ni ŝanĝas la koston de la defaŭlta itinero en Areo 1 al 10;
  • Ni ŝanĝas la IP-adresojn asociitajn kun L2-MGMT (al tiuj, kiuj estis sur FW-CLUSTER);
  • Ni generas gARP-petojn por ke la papavo-adresoj en la L2-MGMT arp-tabeloj estas ŝanĝitaj de FW-CLUSTER al EMERGENCY.

Denove, ni revenas al la origina formuliĝo de la problemo. Tria horo matene, grandega streso, eraro en ajna stadio povas konduki al novaj problemoj. Ĉu vi pretas tajpi komandojn per la CLI? Jes? Bone, almenaŭ iru lavi vian vizaĝon, trinki iom da kafo kaj kolekti vian volforton.
Bruce, bonvolu helpi la infanojn.

Reta aŭtomatigo. Kazo el sia vivo

Nu, ni daŭre plibonigas nian aŭtomatigon.
Malsupre estas diagramo pri kiel la ludlibro funkcias en Ansible-kondiĉoj. Ĉi tiu skemo reflektas tion, kion ni priskribis ĝuste supre, ĝi estas nur specifa efektivigo en Ansible.
Reta aŭtomatigo. Kazo el sia vivo

En ĉi tiu etapo, ni rimarkis, kion oni devas fari, evoluigis ludlibron, faris testadon, kaj nun ni pretas lanĉi ĝin.

Alia malgranda lirika digresio. La facileco de la rakonto ne devus trompi vin. La procezo de verkado de ludlibroj ne estis tiel simpla kaj rapida kiel ĝi povus ŝajni. Testado daŭris sufiĉe da tempo, virtuala stando estis kreita, la solvo estis provita multfoje, ĉirkaŭ 100 provoj estis faritaj.

Ni lanĉu... Estas sento, ke ĉio okazas tre malrapide, ie estas eraro, io fine ne funkcios. La sento de salti per paraŝuto, sed la paraŝuto ne volas malfermiĝi tuj... ĉi tio estas normala.

Poste, ni legas la rezulton de la faritaj operacioj de la Ansible-ludlibro (la IP-adresoj estis anstataŭigitaj por sekreteco):

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

Farita!

Fakte, ĝi ne estas tute preta, ne forgesu pri la konverĝo de dinamikaj enrutaj protokoloj kaj ŝarĝi grandan nombron da itineroj en la FIB. Ni neniel ne povas influi ĉi tion. Ni atendas. Ĝi funkciis. Nun ĝi estas preta.

Kaj en la vilaĝo Vilabajo (kiu ne volas aŭtomatigi la reton) oni daŭre lavis la telerojn. Bruce (certe, jam malsama, sed ne malpli mojosa) provas kompreni kiom pli mana reagordo de la ekipaĵo okazos.

Reta aŭtomatigo. Kazo el sia vivo

Mi ankaŭ ŝatus deteni unu gravan punkton. Kiel ni povas rehavi ĉion? Post iom da tempo, ni revivigos nian FW-CLUSTER. Ĉi tio estas la ĉefa ekipaĵo, ne sekurkopio, la reto devas funkcii per ĝi.

Ĉu vi sentas, kiel retoj komencas elĉerpi? La teknika direktoro aŭdos mil argumentojn, kial tio ne faru, kial oni povas fari tion poste. Bedaŭrinde, jen kiel la reto funkcias el amaso da pecetoj, pecoj kaj restaĵoj de sia iama lukso. Ĝi montriĝas esti ĉifona kovrilo. Nia tasko ĝenerale, ne en ĉi tiu specifa situacio, sed ĝenerale principe, kiel IT-specialistoj, estas alporti la laboron de la reto al la bela angla vorto "consistency", ĝi estas tre multfaceta, ĝi povas esti tradukita kiel: kohereco. , konsistenco, logiko, kohereco, sistemeco, komparebleco, kohereco. Ĉio temas pri li. Nur en ĉi tiu stato la reto estas regebla, ni klare komprenas kio funkcias kaj kiel, ni klare komprenas tion, kion oni devas ŝanĝi, se necese, ni klare scias, kien serĉi, se aperos problemoj. Kaj nur en tia reto vi povas fari lertaĵojn kiel tiuj, kiujn ni ĵus priskribis.

Efektive, alia ludlibro estis preparita, kiu resendis la agordojn al sia origina stato. La logiko de ĝia funkciado estas la sama (gravas memori, ke la ordo de taskoj estas tre grava), por ne plilongigi jam sufiĉe longan artikolon, ni decidis ne afiŝi liston de la ekzekuto de ludlibro. Post fari tiajn ekzercojn, vi sentos vin multe pli trankvila kaj memfida en la estonteco, krome, iuj lambastonoj, kiujn vi amasigis tie, tuj malkaŝos sin.

Ĉiu povas skribi al ni kaj ricevi la fontojn de la tuta skribita kodo, kune kun ĉiuj paglibroj. Kontaktoj en profilo.

trovoj

Laŭ nia opinio, procezoj aŭtomatigeblaj ankoraŭ ne kristaliĝis. Surbaze de tio, kion ni renkontis kaj kion niaj okcidentaj kolegoj diskutas, la sekvaj temoj estas videblaj ĝis nun:

  • Aparato provizo;
  • Kolekto de datumoj;
  • Raportado;
  • Solvado de problemoj;
  • Plenumo.

Se estas intereso, ni povas daŭrigi la diskuton pri unu el la donitaj temoj.

Mi ankaŭ ŝatus iom paroli pri aŭtomatigo. Kio ĝi devus esti laŭ nia kompreno:

  • La sistemo devas vivi sen persono, dum ĝi estas plibonigita de homo. La sistemo ne devus dependi de homoj;
  • Operacio devas esti sperta. Ne ekzistas klaso de specialistoj, kiuj plenumas rutinajn taskojn. Estas fakuloj, kiuj aŭtomatigis la tutan rutinon kaj solvas nur kompleksajn problemojn;
  • Rutinaj normaj taskoj estas faritaj aŭtomate "per la tuŝo de butono", neniuj rimedoj estas malŝparitaj. La rezulto de tiaj taskoj estas ĉiam antaŭvidebla kaj komprenebla.

Kaj al kio devus konduki ĉi tiuj punktoj:

  • Travidebleco de IT-infrastrukturo (Malpli da riskoj de operacio, modernigo, efektivigo. Malpli da tempo de malfunkcio jare);
  • La kapablo plani IT-rimedojn (Kapacit-plana sistemo - vi povas vidi kiom konsumiĝas, vi povas vidi kiom da rimedoj estas bezonataj en ununura sistemo, kaj ne per leteroj kaj vizitoj al la ĉefaj fakoj);
  • Ebleco redukti la nombron de IT-personaro.

Aŭtoroj de la artikolo: Alexander Chelovekov (CCIE RS, CCIE SP) kaj Pavel Kirillov. Ni interesiĝas pri diskuti kaj proponi solvojn pri la temo de IT-infrastruktura aŭtomatigo.


fonto: www.habr.com

Aldoni komenton