Võrgu automatiseerimine. Juhtum inimese elust

Tere Habr!

Selles artiklis tahaksime rääkida võrgu infrastruktuuri automatiseerimisest. Esitletakse ühes väikeses, kuid väga uhkes ettevõttes toimiva võrgustiku tööskeemi. Kõik vasted päris võrguseadmetega on juhuslikud. Vaatleme selles võrgus aset leidnud juhtumit, mis oleks võinud kaasa tuua ettevõtte pikaks ajaks seiskamise ja tõsise rahalise kahju. Selle juhtumi lahendus sobib väga hästi võrguinfrastruktuuri automatiseerimise kontseptsiooniga. Automaatikatööriistade abil näitame, kuidas saate lühikese ajaga tõhusalt lahendada keerulisi probleeme ning mõtiskleme selle üle, miks neid probleeme tuleks lahendada just nii ja mitte teisiti (konsooli kaudu).

Kaebused

Meie peamised automatiseerimise tööriistad on Ansible (automaatikatööriistana) ja Git (Ansible mänguraamatute hoidla). Tahaksin kohe teha reservatsiooni, et see ei ole sissejuhatav artikkel, kus räägime Ansible või Giti loogikast ja selgitame põhilisi asju (nt mis on rolliülesannete moodulid, inventuurifailid, muutujad Ansibles või mis juhtub, kui sisestate git push või git commit käsud). See lugu ei räägi sellest, kuidas saate Ansible'i harjutada ja oma seadmetes NTP-d või SMTP-d konfigureerida. See on lugu sellest, kuidas saate võrguprobleemi kiiresti ja soovitavalt vigadeta lahendada. Samuti on soovitatav omada head arusaama võrgu toimimisest, eelkõige sellest, mis on TCP/IP, OSPF, BGP protokollipinn. Samuti võtame võrrandist välja valiku Ansible ja Git. Kui teil on siiski vaja konkreetne lahendus valida, soovitame soojalt lugeda raamatut „Võrgu programmeeritavus ja automatiseerimine. Oskused järgmise põlvkonna võrguinsenerile", autor Jason Edelman, Scott S. Lowe ja Matt Oswalt.

Nüüd asja juurde.

Probleemi avaldus

Kujutagem ette olukorda: kell 3 öösel, sa magad sügavalt ja näed und. Telefonikõne. Tehniline direktor helistab:

- Jah?
— ###, ####, #####, tulemüüri klaster on langenud ja ei tõuse!!!
Sa hõõrud silmi, püüdes toimuvast aru saada ja kujutada ette, kuidas see võib juhtuda. Telefonis on kuulda, kuidas direktori juuksed rebenevad peas ja ta palub tagasi helistada, kuna kindral helistab talle teisel liinil.

Pool tundi hiljem kogusid esimesed sissejuhatavad märkmed valvevahetusest, äratasid kõik, keda sai äratada. Selle tulemusena tehniline direktor ei valetanud, kõik on nagu on, tulemüüride põhiklaster on langenud ja ükski elementaarne kehaliigutamine ei too mõistust pähe. Kõik ettevõtte pakutavad teenused ei tööta.

Valige probleem oma maitse järgi, igaüks mäletab midagi erinevat. Näiteks pärast üleöö värskendust suure koormuse puudumisel toimis kõik hästi ja kõik läksid õnnelikult magama. Liiklus hakkas voolama ja liidese puhvrid hakkasid võrgukaardi draiveri vea tõttu üle ajama.

Jackie Chan oskab olukorda hästi kirjeldada.

Võrgu automatiseerimine. Juhtum inimese elust

Aitäh, Jackie.

Pole just meeldiv olukord, eks?

Jätame mõneks ajaks meie võrguvenna kurbade mõtetega.

Arutame, kuidas sündmused edasi arenevad.

Soovitame materjali esitada järgmises järjekorras

  1. Vaatame võrguskeemi ja vaatame, kuidas see töötab;
  2. Kirjeldame, kuidas me Ansible abil seadeid ühelt ruuterilt teisele edastame;
  3. Räägime IT infrastruktuuri automatiseerimisest tervikuna.

Võrguskeem ja kirjeldus

Kava

Võrgu automatiseerimine. Juhtum inimese elust

Vaatleme meie organisatsiooni loogilist diagrammi. Konkreetseid seadmete tootjaid me ei nimeta, selle artikli tähenduses pole see oluline (Tähelepanelik lugeja arvab ära, millist varustust kasutatakse). See on vaid üks Ansible'iga töötamise headest eelistest; seadistamisel me üldiselt ei hooli sellest, mis seadmega on tegu. Et aru saada, on tegemist tuntud tootjate seadmetega, nagu Cisco, Juniper, Check Point, Fortinet, Palo Alto...saate oma valiku asendada.

Meil on liikluse liikumisel kaks peamist ülesannet:

  1. Tagada meie teenuste avaldamine, mis on ettevõtte äritegevus;
  2. Pakkuge sidet filiaalide, kaugandmekeskuse ja kolmandate osapoolte organisatsioonidega (partnerid ja kliendid), samuti filiaalide juurdepääsu Internetile keskkontori kaudu.

Alustame põhielementidega:

  1. Kaks piiriruuterit (BRD-01, BRD-02);
  2. tulemüüri klaster (FW-CLUSTER);
  3. Südamikulüliti (L3-CORE);
  4. Ruuter, millest saab päästerõngas (probleemi lahendamisel viime võrguseaded FW-CLUSTER-ist üle EMERGENCY-sse) (EMERGENCY);
  5. Võrgu infrastruktuuri haldamise lülitid (L2-MGMT);
  6. Virtuaalne masin koos Giti ja Ansiblega (VM-AUTOMATSIOON);
  7. Sülearvuti, millel testitakse ja arendatakse Ansible (Laptop-Automation) mänguraamatuid.

Võrk on konfigureeritud dünaamilise OSPF-marsruutimisprotokolliga, millel on järgmised alad:

  • Ala 0 – ala, mis sisaldab VAHETUSTsoonis liikluse liikumise eest vastutavaid ruutereid;
  • 1. piirkond – ala, mis hõlmab ettevõtte teenuste toimimise eest vastutavaid ruuteriid;
  • 2. piirkond – ala, mis hõlmab liikluse marsruutimise haldamise eest vastutavaid ruutereid;
  • Piirkond N – haruvõrkude piirkonnad.

Piirruuteritel luuakse virtuaalne ruuter (VRF-INTERNET), millele paigaldatakse eBGP täisvaade koos vastava määratud AS-iga. iBGP on konfigureeritud VRF-ide vahel. Ettevõttel on valgete aadresside kogum, mis on avaldatud nendes VRF-INTERNETIS. Mõned valged aadressid suunatakse otse FW-CLUSTERisse (aadressid, millel ettevõtte teenused töötavad), mõned suunatakse läbi VAHETUSTsooni (ettevõttesisesed teenused, mis nõuavad väliseid IP-aadresse, ja välised NAT-aadressid kontorite jaoks). Järgmisena läheb liiklus L3-CORE-l loodud virtuaalsetesse ruuteritesse, millel on valged ja hallid aadressid (turvatsoonid).

Haldusvõrk kasutab spetsiaalseid lüliteid ja kujutab endast füüsiliselt pühendatud võrku. Haldusvõrk on jagatud ka turvatsoonideks.
EMERGENCY ruuter dubleerib FW-CLUSTERit füüsiliselt ja loogiliselt. Kõik sellel olevad liidesed on keelatud, välja arvatud need, mis vaatavad haldusvõrku.

Automatiseerimine ja selle kirjeldus

Saime aru, kuidas võrk töötab. Nüüd vaatame samm-sammult, mida me teeme liikluse ülekandmiseks FW-CLUSTERist hädaolukorrasse:

  1. Keelame tuumalüliti (L3-CORE) liidesed, mis ühendavad selle FW-CLUSTERiga;
  2. Keelame L2-MGMT kerneli lüliti liidesed, mis ühendavad selle FW-CLUSTERiga;
  3. Konfigureerime EMERGENCY-ruuteri (vaikimisi on sellel keelatud kõik liidesed, välja arvatud need, mis on seotud L2-MGMT-ga):

  • Lubame liidesed hädaolukorras;
  • Konfigureerime välise IP-aadressi (NAT-i jaoks), mis oli FW-klastris;
  • Genereerime gARP-päringuid nii, et L3-CORE arp-tabelites olevad poppy-aadressid muudetakse FW-Cluster-i asemel EMERGENCY;
  • Registreerime vaikemarsruudi staatilisena BRD-01, BRD-02;
  • Loo NAT reeglid;
  • Tõstke EMERGENCY OSPF alale 1;
  • Tõstke EMERGENCY OSPF alale 2;
  • Muudame 1. piirkonna liinide maksumust 10-ks;
  • Muudame piirkonna 1 vaikemarsruudi maksumuse 10-ks;
  • Muudame L2-MGMT-ga seotud IP-aadressid (need, mis olid FW-CLUSTERis);
  • Genereerime gARP-päringuid, nii et L2-MGMT arp-tabelites olevad poppy-aadressid muudetakse FW-CLUSTER-i asemel EMERGENCY-ks.

Jälle pöördume tagasi probleemi algse sõnastuse juurde. Kell kolm öösel, tohutu stress, viga mis tahes etapis võib kaasa tuua uusi probleeme. Kas olete valmis CLI kaudu käske tippima? Jah? Ok, mine vähemalt loputa nägu, joo kohvi ja võta tahtejõud kokku.
Bruce, palun aidake poisse.

Võrgu automatiseerimine. Juhtum inimese elust

Noh, jätkame oma automatiseerimise täiustamist.
Allpool on diagramm selle kohta, kuidas mänguraamat Ansible terminites töötab. See skeem peegeldab seda, mida me just ülalpool kirjeldasime, see on lihtsalt Ansible'i konkreetne teostus.
Võrgu automatiseerimine. Juhtum inimese elust

Selles etapis mõistsime, mida on vaja teha, töötasime välja mänguraamatu, viisime läbi testimise ja nüüd oleme valmis selle käivitama.

Veel üks väike lüüriline kõrvalepõige. Loo lihtsus ei tohiks teid eksitada. Mänguraamatute kirjutamise protsess ei olnud nii lihtne ja kiire, kui võib tunduda. Testimine võttis päris palju aega, tekkis virtuaalstend, lahendust testiti mitmeid kordi, viidi läbi ca 100 testi.

Käivitame... On tunne, et kõik toimub väga aeglaselt, kuskil on viga, midagi ei tööta lõpuks. Langevarjuga hüppamise tunne, aga langevari ei taha kohe avaneda... see on normaalne.

Järgmiseks loeme Ansible mänguraamatu sooritatud toimingute tulemust (IP-aadressid vahetati saladuse hoidmise eesmärgil):

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

Valmis!

Tegelikult pole see veel päris valmis, ärge unustage dünaamiliste marsruutimisprotokollide lähenemist ja suure hulga marsruutide laadimist FIB-i. Me ei saa seda kuidagi mõjutada. Me ootame. See õnnestus. Nüüd on see valmis.

Ja Vilabajo külas (mis ei taha võrgu seadistamist automatiseerida) jätkavad nad nõude pesemist. Bruce (tõsi küll, juba teistsugune, aga mitte vähem lahe) üritab aru saada, kui palju veel toimub seadmete käsitsi ümberseadistamine.

Võrgu automatiseerimine. Juhtum inimese elust

Samuti tahaksin peatuda ühel olulisel punktil. Kuidas me saame kõik tagasi? Mõne aja pärast äratame oma FW-CLUSTERi uuesti ellu. See on põhiseade, mitte varukoopia, võrk peab sellel töötama.

Kas tunnete, kuidas võrgutegijad hakkavad läbi põlema? Tehniline direktor kuuleb tuhat argumenti, miks nii ei tohi teha, miks võib seda teha hiljem. Kahjuks töötab võrk hunniku plaastrite, tükkide ja kunagise luksuse jäänuste tõttu nii. Selgub, et tegemist on lapitekiga. Meie ülesanne üldiselt, mitte selles konkreetses olukorras, aga üldiselt põhimõtteliselt IT-spetsialistidena, on viia võrgu töö kauni ingliskeelse sõnani “consistency”, see on väga mitmetahuline, seda võib tõlkida nii: sidusus. , järjepidevus, loogika, sidusus, süsteemsus, võrreldavus, sidusus. See kõik puudutab teda. Ainult sellises seisus on võrk juhitav, saame selgelt aru, mis ja kuidas töötab, saame selgelt aru, mida on vaja muuta, vajadusel teame selgelt, kust otsida, kui probleemid tekivad. Ja ainult sellises võrgus saate teha selliseid trikke, nagu me just kirjeldasime.

Tegelikult valmis veel üks mänguraamat, mis taastas seaded algsesse olekusse. Selle toimimise loogika on sama (oluline on meeles pidada, et ülesannete järjekord on väga oluline), et niigi üsna pikka artiklit mitte pikendada, otsustasime mitte postitada mänguraamatu täitmise loendit. Pärast selliste harjutuste läbiviimist tunnete end edaspidi palju rahulikuma ja enesekindlamana, lisaks paljastavad end kohe kõik kargud, mille olete sinna kuhjanud.

Igaüks võib meile kirjutada ja saada kogu kirjutatud koodi allikad koos kõigi mänguraamatutega. Kontaktid profiilis.

Järeldused

Meie arvates pole automatiseeritavad protsessid veel kristalliseerunud. Selle põhjal, mida oleme kohanud ja mida meie lääne kolleegid arutavad, on praeguseks nähtavad järgmised teemad:

  • Seadme varustamine;
  • Andmete kogumine;
  • Aruandlus;
  • Tõrkeotsing;
  • Vastavus.

Huvi korral saame jätkata arutelu mõnel etteantud teemal.

Tahaksin rääkida ka veidi automatiseerimisest. Mis see meie arusaamise kohaselt peaks olema:

  • Süsteem peab elama ilma inimeseta, olles samal ajal inimese poolt täiustatud. Süsteem ei tohiks sõltuda inimestest;
  • Operatsioon peab olema asjatundlik. Rutiinseid ülesandeid täitvaid spetsialiste ei ole olemas. On eksperte, kes on automatiseerinud kogu rutiini ja lahendavad ainult keerulisi probleeme;
  • Rutiinsed standardtööd tehakse automaatselt “nupuvajutusega”, ressursse ei raisata. Selliste ülesannete tulemus on alati etteaimatav ja arusaadav.

Ja milleni peaksid need punktid viima:

  • IT-taristu läbipaistvus (Vähem riske toimimisel, moderniseerimisel, juurutamisel. Vähem seisakuid aastas);
  • IT-ressursside planeerimise võimalus (võimsuse planeerimise süsteem - näete, kui palju kulub, näete, kui palju ressursse on vaja ühes süsteemis, mitte kirjade ja tipposakondade külastuste kaudu);
  • Võimalus vähendada IT töötajate arvu.

Artikli autorid: Alexander Chelovekov (CCIE RS, CCIE SP) ja Pavel Kirillov. Oleme huvitatud IT infrastruktuuri automatiseerimise teemal arutlemisest ja lahenduste pakkumisest.


Allikas: www.habr.com

Lisa kommentaar