Automatització de xarxes. Un cas de la pròpia vida

Hola Habr!

En aquest article ens agradaria parlar de l'automatització de la infraestructura de xarxa. Es presentarà un diagrama de treball de la xarxa que opera en una empresa petita però molt orgullosa. Totes les coincidències amb equips de xarxa reals són aleatòries. Veurem un cas ocorregut en aquesta xarxa, que podria haver provocat un tancament del negoci durant molt de temps i greus pèrdues econòmiques. La solució a aquest cas encaixa molt bé en el concepte d'"Automatització de la infraestructura de xarxa". Mitjançant eines d'automatització, mostrarem com podeu resoldre problemes complexos de manera efectiva en poc temps, i reflexionarem sobre per què aquests problemes s'han de resoldre d'aquesta manera i no d'una altra manera (a través de la consola).

renúncia

Les nostres eines principals per a l'automatització són Ansible (com a eina d'automatització) i Git (com a repositori de llibres de jugades d'Ansible). De seguida m'agradaria fer una reserva que no es tracta d'un article introductori, on parlem de la lògica d'Ansible o Git, i expliquem coses bàsiques (per exemple, què són els roletaskimòduls, fitxers d'inventari, variables a Ansible o què passa quan introduïu les ordres git push o git commit). Aquesta història no tracta sobre com podeu practicar Ansible i configurar NTP o SMTP al vostre equip. Aquesta és una història sobre com podeu resoldre ràpidament i preferiblement un problema de xarxa sense errors. També és recomanable tenir una bona comprensió de com funciona la xarxa, en particular quina és la pila de protocols TCP/IP, OSPF, BGP. També traurem l'elecció d'Ansible i Git de l'equació. Si encara heu de triar una solució específica, us recomanem molt llegir el llibre "Programabilitat i automatització de la xarxa. Skills for the Next-Generation Network Engineer" de Jason Edelman, Scott S. Lowe i Matt Oswalt.

Ara al punt.

Declaració de problemes

Imaginem una situació: a les 3 de la matinada, estàs profundament adormit i somiant. Trucada telefònica. El director tècnic truca:

- Sí?
— ###, ####, #####, el clúster del tallafocs ha caigut i no augmenta!!!
Et fregues els ulls, intentant comprendre què està passant i imaginar com podria passar això. Al telèfon es pot sentir com es trenca el cabell del cap del director, i aquest demana que torni a trucar perquè el general l'està trucant a la segona línia.

Mitja hora més tard, vau recollir les primeres notes introductories del torn de servei, vau despertar tots els que es podien despertar. Com a resultat, el director tècnic no va mentir, tot és així, el grup principal de tallafocs ha caigut i cap moviment corporal bàsic el porta a la raó. Tots els serveis que ofereix l'empresa no funcionen.

Trieu un problema al vostre gust, tothom recordarà alguna cosa diferent. Per exemple, després d'una actualització nocturna en absència d'una càrrega pesada, tot va funcionar bé i tothom es va anar al llit feliç. El trànsit va començar a fluir i els buffers de la interfície van començar a desbordar-se a causa d'un error al controlador de la targeta de xarxa.

Jackie Chan pot descriure bé la situació.

Automatització de xarxes. Un cas de la pròpia vida

Gràcies, Jackie.

No és una situació molt agradable, oi?

Deixem la nostra xarxa germà amb els seus pensaments tristos per una estona.

Parlem de com es desenvoluparan els esdeveniments.

Us proposem el següent ordre de presentació del material

  1. Mirem el diagrama de xarxa i veiem com funciona;
  2. Descriurem com transferim la configuració d'un encaminador a un altre mitjançant Ansible;
  3. Parlem de l'automatització de la infraestructura informàtica en el seu conjunt.

Diagrama de xarxa i descripció

L'esquema

Automatització de xarxes. Un cas de la pròpia vida

Considerem el diagrama lògic de la nostra organització. No anomenarem fabricants d'equips específics; als efectes d'aquest article no importa (El lector atent endevinarà quin tipus d'equip s'utilitza). Aquest és només un dels bons avantatges de treballar amb Ansible; en la configuració, generalment no ens importa quin tipus d'equip és. Només per entendre, es tracta d'equips de venedors coneguts, com ara Cisco, Juniper, Check Point, Fortinet, Palo Alto... pots substituir la teva pròpia opció.

Tenim dues tasques principals per moure el trànsit:

  1. Assegurar la publicació dels nostres serveis, que són el negoci de l'empresa;
  2. Proporcionar comunicació amb oficines, un centre de dades remot i organitzacions de tercers (socis i clients), així com l'accés de les oficines a Internet a través de l'oficina central.

Comencem pels elements bàsics:

  1. Dos encaminadors de frontera (BRD-01, BRD-02);
  2. Clúster de tallafocs (FW-CLUSTER);
  3. Interruptor de nucli (L3-CORE);
  4. Un encaminador que es convertirà en una línia de vida (a mesura que solucionem el problema, transferirem la configuració de la xarxa de FW-CLUSTER a EMERGÈNCIA) (EMERGÈNCIA);
  5. Commutadors per a la gestió de la infraestructura de xarxa (L2-MGMT);
  6. Màquina virtual amb Git i Ansible (VM-AUTOMATION);
  7. Un ordinador portàtil en el qual es realitzen proves i desenvolupament de llibres de jugades per a Ansible (Laptop-Automation).

La xarxa està configurada amb un protocol d'encaminament OSPF dinàmic amb les àrees següents:

  • Àrea 0: àrea que inclou els encaminadors responsables de moure el trànsit a la zona d'EXCHANGE;
  • Àrea 1: àrea que inclou els encaminadors responsables de l'operació dels serveis de l'empresa;
  • Àrea 2: àrea que inclou els encaminadors responsables de la gestió de l'encaminament del trànsit;
  • Àrea N: àrees de xarxes de sucursals.

En els encaminadors de frontera, es crea un encaminador virtual (VRF-INTERNET), en el qual s'instal·la la vista completa eBGP amb l'AS corresponent assignat. iBGP es configura entre VRF. L'empresa té un conjunt d'adreces blanques que es publiquen en aquests VRF-INTERNET. Algunes de les adreces blanques s'encaminen directament a FW-CLUSTER (adreces en les quals operen els serveis de l'empresa), algunes s'encaminen a través de la zona EXCHANGE (serveis interns de l'empresa que requereixen adreces IP externes i adreces NAT externes per a les oficines). A continuació, el trànsit es dirigeix ​​als encaminadors virtuals creats a L3-CORE amb adreces blanques i grises (zones de seguretat).

La xarxa de gestió utilitza commutadors dedicats i representa una xarxa físicament dedicada. La xarxa de gestió també es divideix en zones de seguretat.
L'encaminador d'EMERGÈNCIA duplica físicament i lògicament el FW-CLUSTER. Totes les interfícies estan desactivades, excepte les que miren a la xarxa de gestió.

L'automatització i la seva descripció

Hem descobert com funciona la xarxa. Ara fem una ullada pas a pas al que farem per transferir trànsit de FW-CLUSTER a EMERGENCY:

  1. Desactivem les interfícies de l'interruptor principal (L3-CORE) que el connecten al FW-CLUSTER;
  2. Desactivem les interfícies del commutador del nucli L2-MGMT que el connecten al FW-CLUSTER;
  3. Configurem l'encaminador d'EMERGÈNCIA (per defecte, totes les interfícies hi estan desactivades, excepte les associades a L2-MGMT):

  • Habilitam interfícies en EMERGÈNCIA;
  • Configurem l'adreça IP externa (per a NAT) que hi havia al Clúster FW;
  • Generem peticions gARP perquè les adreces de rosella a les taules arp L3-CORE es canviïn de FW-Cluster a EMERGÈNCIA;
  • Registrem la ruta per defecte com a estàtica a BRD-01, BRD-02;
  • Crear regles NAT;
  • Pujar a EMERGÈNCIA OSPF Àrea 1;
  • Pujar a EMERGÈNCIA OSPF Àrea 2;
  • Canviem el cost de les rutes de l'Àrea 1 a la 10;
  • Canviem el cost de la ruta per defecte de l'Àrea 1 a la 10;
  • Canviem les adreces IP associades a L2-MGMT (a les que estaven a FW-CLUSTER);
  • Generem sol·licituds gARP perquè les adreces de rosella a les taules arp L2-MGMT es canviïn de FW-CLUSTER a EMERGÈNCIA.

De nou, tornem a la formulació original del problema. A les tres de la matinada, estrès enorme, un error en qualsevol moment pot portar a nous problemes. Estàs preparat per escriure ordres mitjançant la CLI? Sí? D'acord, almenys vés a esbandir-te la cara, beu una mica de cafè i reuneix la teva força de voluntat.
Bruce, si us plau, ajuda els nois.

Automatització de xarxes. Un cas de la pròpia vida

Bé, continuem millorant la nostra automatització.
A continuació es mostra un diagrama de com funciona el llibre de jugades en termes d'Ansible. Aquest esquema reflecteix el que hem descrit anteriorment, és només una implementació específica a Ansible.
Automatització de xarxes. Un cas de la pròpia vida

En aquesta etapa, ens vam adonar del que cal fer, vam desenvolupar un llibre de jocs, vam fer proves i ara estem preparats per llançar-lo.

Una altra petita digressió lírica. La facilitat de la història no t'ha d'enganyar. El procés d'escriptura de llibres de joc no va ser tan senzill i ràpid com podria semblar. Les proves van trigar molt de temps, es va crear un estand virtual, la solució es va provar moltes vegades, es van fer unes 100 proves.

Llencem... Hi ha la sensació que tot està passant molt lentament, hi ha un error en algun lloc, alguna cosa al final no funcionarà. La sensació de saltar amb un paracaigudes, però el paracaigudes no es vol obrir de seguida... això és normal.

A continuació, llegim el resultat de les operacions realitzades al llibre de jugades Ansible (les adreces IP es van substituir per a finalitats de secret):

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

Fet!

De fet, no està del tot llest, no us oblideu de la convergència dels protocols d'encaminament dinàmics i la càrrega d'un gran nombre de rutes a la FIB. No podem influir en això de cap manera. Nosaltres esperem. Va funcionar. Ara ja està llest.

I al poble de Vilabajo (que no vol automatitzar la configuració de la xarxa) continuen rentant els plats. Bruce (cert de ser, ja diferent, però no per això menys genial) està intentant entendre quanta més reconfiguració manual de l'equip es farà.

Automatització de xarxes. Un cas de la pròpia vida

També m'agradaria detenir-me en un punt important. Com ho podem recuperar tot? Després d'un temps, tornarem a la vida del nostre FW-CLUSTER. Aquest és l'equip principal, no una còpia de seguretat, la xarxa ha d'executar-hi.

Sents com els networkers comencen a esgotar-se? El director tècnic escoltarà mil arguments per què això no s'ha de fer, per què es pot fer més endavant. Malauradament, així és com funciona la xarxa a partir d'un munt de pegats, peces i restes del seu antic luxe. Resulta ser un edredó de patchwork. La nostra tasca en general, no en aquesta situació concreta, sinó en principi en general, com a especialistes informàtics, és portar el treball de la xarxa a la bonica paraula anglesa "coherència", és molt polièdrica, es pot traduir com: coherència. , coherència, lògica, coherència, sistematicitat, comparabilitat, coherència. Tot es tracta d'ell. Només en aquest estat la xarxa és manejable, entenem clarament què funciona i com, entenem clarament què cal canviar, si cal, sabem clarament on mirar si sorgeixen problemes. I només en aquesta xarxa es poden realitzar trucs com els que acabem de descriure.

De fet, es va preparar un altre llibre de jugades, que va tornar la configuració al seu estat original. La lògica del seu funcionament és la mateixa (és important recordar que l'ordre de les tasques és molt important), per no allargar un article ja força llarg, vam decidir no publicar una llista de l'execució del llibre de jugades. Després de realitzar aquests exercicis, us sentireu molt més tranquils i segurs en el futur, a més, les crosses que hàgiu amuntegat allà es revelaran immediatament.

Qualsevol ens pot escriure i rebre les fonts de tot el codi escrit, juntament amb tots els llibres de pagament. Contactes al perfil.

Troballes

Al nostre parer, els processos que es poden automatitzar encara no s'han cristal·litzat. A partir del que hem trobat i del que estan discutint els nostres col·legues occidentals, els temes següents són visibles fins ara:

  • Provisió de dispositius;
  • Recopilació de dades;
  • Informes;
  • Resolució de problemes;
  • Compliment.

Si hi ha interès, podem continuar la discussió sobre algun dels temes plantejats.

També m'agradaria parlar una mica de l'automatització. Què hauria de ser al nostre entendre:

  • El sistema ha de viure sense una persona, alhora que és millorat per una persona. El sistema no hauria de dependre dels humans;
  • El funcionament ha de ser expert. No hi ha cap classe d'especialistes que realitzin tasques rutinàries. Hi ha experts que han automatitzat tota la rutina i només resolen problemes complexos;
  • Les tasques estàndard rutinàries es fan automàticament "amb només prémer un botó", no es malgasten recursos. El resultat d'aquestes tasques és sempre previsible i comprensible.

I a què han de conduir aquests punts:

  • Transparència de la infraestructura informàtica (Menys riscos d'operació, modernització, implementació. Menys temps d'inactivitat per any);
  • La capacitat de planificar els recursos informàtics (Sistema de planificació de la capacitat: es pot veure quant es consumeix, es pot veure quants recursos es requereixen en un sol sistema, i no per cartes i visites als departaments superiors);
  • Possibilitat de reduir el nombre de personal informàtic.

Autors de l'article: Alexander Chelovekov (CCIE RS, CCIE SP) i Pavel Kirillov. Ens interessa debatre i proposar solucions sobre el tema de l'automatització de la infraestructura informàtica.


Font: www.habr.com

Afegeix comentari