Verkkoautomaatio. Tapaus omasta elämästä

Hei Habr!

Tässä artikkelissa haluamme puhua verkkoinfrastruktuurin automatisoinnista. Esitetään toimiva kaavio verkostosta, joka toimii yhdessä pienessä mutta erittäin ylpeässä yrityksessä. Kaikki ottelut todellisilla verkkolaitteilla ovat satunnaisia. Tarkastelemme tässä verkossa tapahtunutta tapausta, joka olisi voinut johtaa liiketoiminnan sulkemiseen pitkäksi aikaa ja vakaviin taloudellisiin menetyksiin. Ratkaisu tähän tapaukseen sopii erittäin hyvin "verkkoinfrastruktuurin automatisoinnin" käsitteeseen. Automaatiotyökalujen avulla näytämme kuinka voit ratkaista monimutkaisia ​​ongelmia tehokkaasti lyhyessä ajassa, ja pohdimme, miksi nämä ongelmat tulisi ratkaista tällä tavalla eikä toisin (konsolin kautta).

Vastuun kieltäminen

Tärkeimmät automaatiotyökalumme ovat Ansible (automaatiotyökaluna) ja Git (Ansible playbookien arkisto). Haluaisin heti tehdä varauksen, että tämä ei ole johdantoartikkeli, jossa puhutaan Ansiblen tai Gitin logiikasta ja selitetään perusasioita (esim. mitä ovat roolitehtävämoduulit, inventaariotiedostot, muuttujat Ansiblessa tai mitä tapahtuu kun annat git push- tai git commit -komennon). Tämä tarina ei kerro kuinka voit harjoitella Ansiblea ja määrittää NTP:n tai SMTP:n laitteellesi. Tämä on tarina siitä, kuinka voit nopeasti ja mieluiten ratkaista verkko-ongelman ilman virheitä. On myös suositeltavaa, että sinulla on hyvä käsitys verkon toiminnasta, erityisesti mikä TCP/IP-, OSPF-, BGP-protokollapino on. Otamme myös Ansiblen ja Gitin valinnan pois yhtälöstä. Jos sinun on vielä valittava tietty ratkaisu, suosittelemme lukemaan kirjan "Verkon ohjelmoitavuus ja automaatio. Taidot seuraavan sukupolven verkkoinsinöörille", Jason Edelman, Scott S. Lowe ja Matt Oswalt.

Nyt asiaan.

Ongelma

Kuvitellaanpa tilanne: kello 3 aamulla nukut syvään ja näet unta. Puhelu. Tekninen johtaja soittaa:

- Joo?
— ###, ####, #####, palomuuriklusteri on pudonnut eikä nouse!!!
Hierot silmiäsi yrittäen ymmärtää, mitä tapahtuu, ja kuvitella, kuinka tämä voisi jopa tapahtua. Puhelimessa kuulet johtajan hiusten repeytyvän päässä, ja hän pyytää soittamaan takaisin, koska kenraali soittaa hänelle toisella linjalla.

Puolen tunnin kuluttua keräsit ensimmäiset esittelyhuomautukset päivystysvuorosta, heräsit kaikki, jotka pystyivät herättämään. Tämän seurauksena tekninen johtaja ei valehdellut, kaikki on niin kuin on, palomuurien päärypäle on pudonnut, eivätkä mikään kehon perusliikkeet saa häntä järkiinsä. Kaikki yrityksen tarjoamat palvelut eivät toimi.

Valitse ongelma makusi mukaan, jokainen muistaa jotain erilaista. Esimerkiksi yön yli tehdyn päivityksen jälkeen raskaan kuorman puuttuessa kaikki toimi hyvin, ja kaikki menivät nukkumaan onnellisina. Liikenne alkoi virrata ja liitäntäpuskurit alkoivat vuotaa yli verkkokortin ajurin virheen vuoksi.

Jackie Chan osaa kuvailla tilannetta hyvin.

Verkkoautomaatio. Tapaus omasta elämästä

Kiitos, Jackie.

Ei kovin miellyttävä tilanne, vai mitä?

Jätetään verkostomme veljemme surullisten ajatusten kanssa hetkeksi.

Pohditaan miten tapahtumat kehittyvät edelleen.

Suosittelemme seuraavaa materiaalin esitysjärjestystä

  1. Katsotaanpa verkkokaaviota ja katsotaan kuinka se toimii;
  2. Kuvaamme kuinka siirrämme asetukset reitittimestä toiseen Ansiblen avulla;
  3. Puhutaanpa IT-infrastruktuurin automatisoinnista kokonaisuutena.

Verkkokaavio ja kuvaus

ohjelma

Verkkoautomaatio. Tapaus omasta elämästä

Tarkastellaanpa organisaatiomme loogista kaaviota. Emme nimeä tiettyjä laitevalmistajia; tämän artikkelin kannalta sillä ei ole merkitystä (Huomaava lukija arvaa millaisia ​​laitteita käytetään). Tämä on vain yksi Ansiblen kanssa työskentelyn hyvistä eduista; asennuksessa emme yleensä välitä siitä, millainen laite on kyseessä. Ymmärtääkseni tämä on tunnettujen valmistajien laitteita, kuten Cisco, Juniper, Check Point, Fortinet, Palo Alto...voit korvata omalla vaihtoehdollasi.

Meillä on kaksi päätehtävää liikenteen siirtämisessä:

  1. Huolehdimme yhtiön toimialaan kuuluvien palveluidemme julkaisemisesta;
  2. Tarjoa yhteydenpito sivukonttoreiden, etäpalvelinkeskuksen ja kolmansien osapuolien organisaatioiden (kumppanien ja asiakkaiden) kanssa sekä sivukonttoreiden pääsy Internetiin keskustoimiston kautta.

Aloitetaan peruselementeistä:

  1. Kaksi rajareititintä (BRD-01, BRD-02);
  2. palomuuriklusteri (FW-CLUSTER);
  3. Ydinkytkin (L3-CORE);
  4. Reititin, josta tulee pelastusköysi (kun ratkaisemme ongelman, siirrämme verkkoasetukset FW-CLUSTERista EMERGENCY-tilaan) (EMERGENCY);
  5. Kytkimet verkkoinfrastruktuurin hallintaan (L2-MGMT);
  6. Virtuaalikone Gitillä ja Ansiblella (VM-AUTOMATION);
  7. Kannettava tietokone, jolla testataan ja kehitetään Ansiblen (Laptop-Automation) pelikirjoja.

Verkko on määritetty dynaamisella OSPF-reititysprotokollalla seuraavilla alueilla:

  • Alue 0 – alue, joka sisältää reitittimet, jotka vastaavat liikenteestä VAIHTO-alueella;
  • Alue 1 – alue, joka sisältää reitittimet, jotka vastaavat yrityksen palveluiden toiminnasta;
  • Alue 2 – alue, joka sisältää reitittimet, jotka vastaavat liikenteen reitittämisestä;
  • Alue N – konttoriverkostojen alueet.

Reunusreitittimille luodaan virtuaalinen reititin (VRF-INTERNET), johon asennetaan eBGP-täysnäkymä vastaavalla määritetyllä AS:lla. iBGP on määritetty VRF:ien välillä. Yrityksellä on joukko valkoisia osoitteita, jotka on julkaistu näissä VRF-INTERNETissä. Osa valkoisista osoitteista reititetään suoraan FW-CLUSTERiin (osoitteet, joissa yrityksen palvelut toimivat), osa EXCHANGE-vyöhykkeen kautta (yrityksen sisäiset palvelut, jotka vaativat ulkoisia IP-osoitteita, ja ulkoiset NAT-osoitteet toimistoille). Seuraavaksi liikenne siirtyy virtuaalisille reitittimille, jotka on luotu L3-CORE:llä valkoisilla ja harmailla osoitteilla (turvavyöhykkeillä).

Hallintaverkko käyttää erillisiä kytkimiä ja edustaa fyysisesti omistettua verkkoa. Hallintaverkko on myös jaettu turvavyöhykkeisiin.
EMERGENCY-reititin kopioi FW-CLUSTERin fyysisesti ja loogisesti. Kaikki sen liitännät on poistettu käytöstä, paitsi ne, jotka katsovat hallintaverkkoon.

Automaatio ja sen kuvaus

Selvitimme kuinka verkko toimii. Katsotaan nyt vaiheittain, mitä teemme siirtääksemme liikenteen FW-CLUSTERISTA HÄTÄ:

  1. Poistamme käytöstä ydinkytkimen (L3-CORE) liitännät, jotka yhdistävät sen FW-CLUSTERiin;
  2. Poistamme käytöstä L2-MGMT-ytimen kytkimen liitännät, jotka yhdistävät sen FW-CLUSTERiin;
  3. Määritämme EMERGENCY-reitittimen (oletusarvoisesti kaikki liitännät on poistettu käytöstä, paitsi ne, jotka liittyvät L2-MGMT:hen):

  • Otamme käyttöliittymät käyttöön HÄTÄ-tilanteessa;
  • Määritämme ulkoisen IP-osoitteen (NAT:lle), joka oli FW-klusterissa;
  • Luomme gARP-pyyntöjä, jotta L3-CORE arp-taulukoiden poppy-osoitteet muutetaan FW-Clusterista EMERGENCY-tilaan;
  • Rekisteröimme oletusreitin staattiseksi kohteisiin BRD-01, BRD-02;
  • Luo NAT-sääntöjä;
  • Nosta EMERGENCY OSPF -alueelle 1;
  • Nosta EMERGENCY OSPF -alueelle 2;
  • Muutamme alueen 1 reittien hintaa 10:ksi;
  • Muutamme alueen 1 oletusreitin hinnan 10:ksi;
  • Muutamme L2-MGMT:hen liittyvät IP-osoitteet (niihin, jotka olivat FW-CLUSTERissa);
  • Luomme gARP-pyyntöjä, jotta L2-MGMT-arp-taulukoiden poppy-osoitteet muutetaan FW-CLUSTERista EMERGENCY:ksi.

Palaamme jälleen ongelman alkuperäiseen muotoiluun. Kello kolme aamulla, valtava stressi, virhe missä tahansa vaiheessa voi johtaa uusiin ongelmiin. Oletko valmis kirjoittamaan komentoja CLI:n kautta? Joo? Ok, mene ainakin huuhtele kasvosi, juo kahvia ja kerää tahdonvoimasi.
Bruce, auta miehiä.

Verkkoautomaatio. Tapaus omasta elämästä

No, jatkamme automaatiomme parantamista.
Alla on kaavio siitä, kuinka pelikirja toimii Ansible-termeillä. Tämä järjestelmä heijastaa sitä, mitä kuvailimme juuri edellä, se on vain Ansiblen erityinen toteutus.
Verkkoautomaatio. Tapaus omasta elämästä

Tässä vaiheessa tajusimme mitä pitää tehdä, kehitimme pelikirjan, suoritimme testauksen ja nyt olemme valmiita käynnistämään sen.

Toinen pieni lyyrinen poikkeama. Tarinan helppous ei saa johtaa sinua harhaan. Pelikirjojen kirjoittaminen ei ollut niin yksinkertaista ja nopeaa kuin miltä se saattaa näyttää. Testaus vei melko paljon aikaa, luotiin virtuaalinen osasto, ratkaisua testattiin monta kertaa, suoritettiin noin 100 testiä.

Käynnistetään... On tunne, että kaikki tapahtuu hyvin hitaasti, jossain on virhe, jokin ei lopulta toimi. Laskuvarjolla hyppäämisen tunne, mutta laskuvarjo ei halua avautua heti... tämä on normaalia.

Seuraavaksi luemme Ansible playbookin suoritettujen toimintojen tuloksen (IP-osoitteet vaihdettiin salassapitosyistä):

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

Itse asiassa se ei ole aivan valmis, älä unohda dynaamisten reititysprotokollien lähentymistä ja suuren määrän reittien lataamista FIB:hen. Emme voi vaikuttaa tähän millään tavalla. Odotamme. Se onnistui. Nyt se on valmis.

Ja Vilabajon kylässä (joka ei halua automatisoida verkon asetuksia) he jatkavat astioiden pesemistä. Bruce (kieltämättä jo erilainen, mutta ei vähemmän siisti) yrittää ymmärtää, kuinka paljon enemmän laitteiden manuaalista uudelleenkonfigurointia tapahtuu.

Verkkoautomaatio. Tapaus omasta elämästä

Haluaisin myös pohtia yhtä tärkeää asiaa. Miten saamme kaiken takaisin? Jonkin ajan kuluttua herätämme FW-CLUSTERimme takaisin henkiin. Tämä on päälaite, ei varmuuskopio, verkon on toimittava siinä.

Tuntuuko sinusta, kuinka verkostoituneet alkavat polttaa loppuun? Tekninen johtaja kuulee tuhat argumenttia, miksi näin ei pitäisi tehdä, miksi näin voidaan tehdä myöhemmin. Valitettavasti näin verkko toimii joukosta laastareita, palasia ja jäänteitä entisestä ylellisyydestään. Se osoittautuu tilkkutäkkiksi. Tehtävämme yleisesti, ei tässä erityistilanteessa, mutta yleensä periaatteessa IT-asiantuntijoina, on viedä verkon työ kauniiseen englanninkieliseen sanaan "consistency", se on hyvin monitahoinen, se voidaan kääntää seuraavasti: koherenssi. , johdonmukaisuus, logiikka, johdonmukaisuus, systemaattisuus, vertailukelpoisuus, johdonmukaisuus. Kaikki on hänestä kiinni. Vain tässä tilassa verkko on hallittavissa, ymmärrämme selkeästi mikä toimii ja miten, ymmärrämme selkeästi mitä pitää muuttaa, jos tarpeen, tiedämme selvästi mistä etsiä, jos ongelmia ilmenee. Ja vain tällaisessa verkossa voit tehdä temppuja, kuten juuri kuvailemme.

Itse asiassa valmisteltiin toinen pelikirja, joka palautti asetukset alkuperäiseen tilaan. Sen toiminnan logiikka on sama (on tärkeää muistaa, että tehtävien järjestys on erittäin tärkeä), jotta emme pidentäisi jo melko pitkää artikkelia, päätimme olla julkaisematta luetteloa pelikirjan suorituksesta. Tällaisten harjoitusten suorittamisen jälkeen tunnet olosi paljon rauhallisemmaksi ja itsevarmemmaksi tulevaisuudessa, lisäksi kaikki sinne kasaamasi kainalosauvat paljastavat itsensä välittömästi.

Kuka tahansa voi kirjoittaa meille ja saada kaiken kirjoitetun koodin lähteet sekä kaikki pelikirjat. Yhteystiedot profiilissa.

Tulokset

Mielestämme prosessit, jotka voidaan automatisoida, eivät ole vielä kiteytyneet. Sen perusteella, mitä olemme kohdanneet ja mistä länsimaiset kollegamme keskustelevat, seuraavat teemat ovat näkyvissä tähän mennessä:

  • Laitteiden hallinta;
  • Tiedonkeruu;
  • Raportointi;
  • Ongelmien karttoittaminen;
  • Noudattamista.

Jos kiinnostusta löytyy, voimme jatkaa keskustelua jostain annetuista aiheista.

Haluaisin myös puhua hieman automaatiosta. Mitä sen käsityksemme mukaan pitäisi olla:

  • Järjestelmän on elettävä ilman henkilöä, samalla kun sitä on parannettava. Järjestelmän ei pitäisi olla riippuvainen ihmisistä;
  • Toiminnan tulee olla asiantuntevaa. Ei ole olemassa rutiinitehtäviä suorittavien asiantuntijoiden luokkaa. On asiantuntijoita, jotka ovat automatisoineet koko rutiinin ja ratkaisevat vain monimutkaisia ​​ongelmia;
  • Normaalit rutiinitehtävät tehdään automaattisesti ”napin painalluksella”, resursseja ei mene hukkaan. Tällaisten tehtävien tulos on aina ennustettavissa ja ymmärrettävissä.

Ja mihin näiden kohtien pitäisi johtaa:

  • IT-infrastruktuurin läpinäkyvyys (Vähemmän käyttöriskejä, modernisointia, käyttöönottoa. Vähemmän seisokkeja vuodessa);
  • Kyky suunnitella IT-resursseja (kapasiteetin suunnittelujärjestelmä - näet, kuinka paljon kulutetaan, voit nähdä kuinka monta resurssia tarvitaan yhdessä järjestelmässä, ei kirjeillä ja käynneillä huippuosastoilla);
  • Mahdollisuus vähentää IT-henkilöstön määrää.

Artikkelin kirjoittajat: Alexander Chelovekov (CCIE RS, CCIE SP) ja Pavel Kirillov. Olemme kiinnostuneita keskustelemaan ja ehdottamaan ratkaisuja IT-infrastruktuurin automaatiosta.


Lähde: will.com

Lisää kommentti