Pag-aautomat ng network. Isang kaso mula sa buhay ng isang tao

Hoy Habr!

Sa artikulong ito nais naming pag-usapan ang tungkol sa automation ng imprastraktura ng network. Ang isang gumaganang diagram ng network na tumatakbo sa isang maliit ngunit napaka-proud na kumpanya ay ipapakita. Ang lahat ng mga laban na may tunay na kagamitan sa network ay random. Titingnan natin ang isang kaso na naganap sa network na ito, na maaaring humantong sa isang pagsara ng negosyo sa mahabang panahon at malubhang pagkalugi sa pananalapi. Ang solusyon sa kasong ito ay akma nang husto sa konsepto ng "Automation of network infrastructure". Gamit ang mga tool sa automation, ipapakita namin kung paano mo epektibong malulutas ang mga kumplikadong problema sa maikling panahon, at isasalamin namin kung bakit dapat lutasin ang mga problemang ito sa ganitong paraan at hindi kung hindi man (sa pamamagitan ng console).

Pagtanggi sa pananagutan

Ang aming mga pangunahing tool para sa automation ay Ansible (bilang isang automation tool) at Git (bilang isang repository para sa Ansible playbook). Gusto kong agad na magpareserba na hindi ito panimulang artikulo, kung saan pinag-uusapan natin ang lohika ng Ansible o Git, at ipaliwanag ang mga pangunahing bagay (halimbawa, ano ang mga roletaskimodules, mga file ng imbentaryo, mga variable sa Ansible, o kung ano ang mangyayari kapag ipinasok mo ang git push o git commit command). Ang kwentong ito ay hindi tungkol sa kung paano mo maaaring isagawa ang Ansible at i-configure ang NTP o SMTP sa iyong kagamitan. Ito ay isang kuwento tungkol sa kung paano mo mabilis at mas mainam na malutas ang isang problema sa network nang walang mga error. Maipapayo rin na magkaroon ng isang mahusay na pag-unawa sa kung paano gumagana ang network, lalo na kung ano ang TCP/IP, OSPF, BGP protocol stack. Aalisin din namin ang pagpili ng Ansible at Git sa equation. Kung kailangan mo pa ring pumili ng isang partikular na solusyon, lubos naming inirerekomenda na basahin ang aklat na “Network Programmability and Automation. Skills for the Next-Generation Network Engineer" ni Jason Edelman, Scott S. Lowe, at Matt Oswalt.

Ngayon sa punto.

Pahayag ng problema

Isipin natin ang isang sitwasyon: Alas 3 ng umaga, mahimbing ang tulog mo at nananaginip. Tawag sa telepono. Ang teknikal na direktor ay tumatawag:

- Oo?
— ###, ####, #####, ang firewall cluster ay bumagsak at hindi tumataas!!!
Kinusot mo ang iyong mga mata, sinusubukang unawain kung ano ang nangyayari at isipin kung paano ito maaaring mangyari. Sa telepono ay maririnig mo ang pagpunit ng buhok sa ulo ng direktor, at hiniling niyang tumawag muli dahil tinatawagan siya ng heneral sa pangalawang linya.

Makalipas ang kalahating oras, nakolekta mo ang mga unang panimulang tala mula sa duty shift, ginising mo ang lahat ng maaaring magising. Bilang isang resulta, ang teknikal na direktor ay hindi nagsisinungaling, ang lahat ay tulad nito, ang pangunahing kumpol ng mga firewall ay bumagsak, at walang mga pangunahing paggalaw ng katawan ang nagdadala sa kanya sa kanyang mga pandama. Ang lahat ng mga serbisyo na inaalok ng kumpanya ay hindi gumagana.

Pumili ng isang problema sa iyong panlasa, maaalala ng lahat ang isang bagay na naiiba. Halimbawa, pagkatapos ng magdamag na pag-update sa kawalan ng mabigat na pagkarga, lahat ay gumana nang maayos, at lahat ay natulog nang masaya. Nagsimulang dumaloy ang trapiko, at nagsimulang umapaw ang mga interface buffer dahil sa isang bug sa driver ng network card.

Mahusay na mailarawan ni Jackie Chan ang sitwasyon.

Pag-aautomat ng network. Isang kaso mula sa buhay ng isang tao

Salamat, Jackie.

Hindi isang napakagandang sitwasyon, hindi ba?

Iwanan muna natin ang ating network bro sa kanyang malungkot na pag-iisip.

Talakayin natin kung paano uunlad ang mga kaganapan.

Iminumungkahi namin ang sumusunod na pagkakasunud-sunod ng presentasyon ng materyal

  1. Tingnan natin ang diagram ng network at tingnan kung paano ito gumagana;
  2. Ilalarawan namin kung paano namin inililipat ang mga setting mula sa isang router patungo sa isa pa gamit ang Ansible;
  3. Pag-usapan natin ang tungkol sa automation ng imprastraktura ng IT sa kabuuan.

Network diagram at paglalarawan

Ang pamamaraan

Pag-aautomat ng network. Isang kaso mula sa buhay ng isang tao

Isaalang-alang natin ang lohikal na diagram ng ating organisasyon. Hindi namin pangalanan ang mga partikular na tagagawa ng kagamitan; para sa mga layunin ng artikulong ito ay hindi mahalaga (Hulaan ng matulungin na mambabasa kung anong uri ng kagamitan ang ginagamit). Isa lang ito sa magagandang bentahe ng pagtatrabaho sa Ansible; kapag nagse-set up, sa pangkalahatan ay wala kaming pakialam kung anong uri ng kagamitan ito. Para lang maintindihan, ito ay kagamitan mula sa mga kilalang vendor, tulad ng Cisco, Juniper, Check Point, Fortinet, Palo Alto...maari mong palitan ang iyong sariling opsyon.

Mayroon kaming dalawang pangunahing gawain para sa paglipat ng trapiko:

  1. Tiyakin ang paglalathala ng aming mga serbisyo, na negosyo ng kumpanya;
  2. Magbigay ng komunikasyon sa mga sangay, isang remote data center at mga third-party na organisasyon (mga kasosyo at kliyente), pati na rin ang pag-access ng mga sangay sa Internet sa pamamagitan ng central office.

Magsimula tayo sa mga pangunahing elemento:

  1. Dalawang border router (BRD-01, BRD-02);
  2. Firewall Cluster (FW-CLUSTER);
  3. Core switch (L3-CORE);
  4. Isang router na magiging isang lifeline (habang nalutas namin ang problema, ililipat namin ang mga setting ng network mula sa FW-CLUSTER patungo sa EMERGENCY) (EMERGENCY);
  5. Mga switch para sa pamamahala ng imprastraktura ng network (L2-MGMT);
  6. Virtual machine na may Git at Ansible (VM-AUTOMATION);
  7. Isang laptop kung saan isinasagawa ang pagsubok at pagbuo ng mga playbook para sa Ansible (Laptop-Automation).

Ang network ay na-configure gamit ang isang dynamic na OSPF routing protocol na may mga sumusunod na lugar:

  • Area 0 – lugar na kinabibilangan ng mga router na responsable sa paglipat ng trapiko sa EXCHANGE zone;
  • Lugar 1 – lugar na kinabibilangan ng mga router na responsable para sa pagpapatakbo ng mga serbisyo ng kumpanya;
  • Lugar 2 – lugar na kinabibilangan ng mga router na responsable para sa pagruruta ng trapiko sa pamamahala;
  • Lugar N - mga lugar ng mga network ng sangay.

Sa mga border router, isang virtual na router (VRF-INTERNET) ang nilikha, kung saan naka-install ang buong view ng eBGP kasama ang kaukulang itinalagang AS. Ang iBGP ay na-configure sa pagitan ng mga VRF. Ang kumpanya ay may isang pool ng mga puting address na na-publish sa mga VRF-INTERNET na ito. Ang ilan sa mga puting address ay direktang dinadala sa FW-CLUSTER (mga address kung saan gumagana ang mga serbisyo ng kumpanya), ang ilan ay dinadala sa EXCHANGE zone (mga panloob na serbisyo ng kumpanya na nangangailangan ng mga panlabas na IP address, at mga panlabas na NAT address para sa mga opisina). Susunod, ang trapiko ay napupunta sa mga virtual na router na ginawa sa L3-CORE na may puti at gray na mga address (mga zone ng seguridad).

Gumagamit ang network ng Pamamahala ng mga nakalaang switch at kumakatawan sa isang pisikal na nakatuong network. Ang network ng pamamahala ay nahahati din sa mga zone ng seguridad.
Ang EMERGENCY router ay pisikal at lohikal na duplicate ang FW-CLUSTER. Ang lahat ng mga interface dito ay hindi pinagana maliban sa mga tumitingin sa network ng pamamahala.

Automation at paglalarawan nito

Nalaman namin kung paano gumagana ang network. Ngayon, tingnan natin ang hakbang-hakbang kung ano ang gagawin natin para ilipat ang trapiko mula sa FW-CLUSTER patungo sa EMERGENCY:

  1. Hindi namin pinagana ang mga interface sa core switch (L3-CORE) na kumokonekta dito sa FW-CLUSTER;
  2. Hindi namin pinagana ang mga interface sa L2-MGMT kernel switch na kumokonekta dito sa FW-CLUSTER;
  3. Kino-configure namin ang EMERGENCY router (bilang default, ang lahat ng mga interface ay hindi pinagana dito, maliban sa mga nauugnay sa L2-MGMT):

  • Pinagana namin ang mga interface sa EMERGENCY;
  • Kino-configure namin ang panlabas na IP address (para sa NAT) na nasa FW-Cluster;
  • Bumubuo kami ng mga kahilingan sa gARP upang ang mga poppy address sa L3-CORE arp table ay mapalitan mula FW-Cluster patungong EMERGENCY;
  • Inirerehistro namin ang default na ruta bilang static sa BRD-01, BRD-02;
  • Lumikha ng mga panuntunan ng NAT;
  • Itaas sa EMERGENCY OSPF Area 1;
  • Itaas sa EMERGENCY OSPF Area 2;
  • Binago namin ang halaga ng mga ruta sa Area 1 hanggang 10;
  • Binago namin ang halaga ng default na ruta sa Area 1 hanggang 10;
  • Binago namin ang mga IP address na nauugnay sa L2-MGMT (sa mga nasa FW-CLUSTER);
  • Bumubuo kami ng mga kahilingan sa gARP upang ang mga poppy address sa L2-MGMT arp table ay mapalitan mula FW-CLUSTER patungong EMERGENCY.

Muli, bumalik tayo sa orihinal na pagbabalangkas ng problema. Alas tres ng umaga, napakalaking stress, isang pagkakamali sa anumang yugto ay maaaring humantong sa mga bagong problema. Handa nang mag-type ng mga command sa pamamagitan ng CLI? Oo? Ok, at least banlawan ang iyong mukha, uminom ng kape at ipunin ang iyong lakas.
Bruce, pakitulungan ang mga lalaki.

Pag-aautomat ng network. Isang kaso mula sa buhay ng isang tao

Well, patuloy naming pinapabuti ang aming automation.
Nasa ibaba ang isang diagram kung paano gumagana ang playbook sa mga terminong Ansible. Ang scheme na ito ay sumasalamin sa kung ano ang inilarawan namin sa itaas, ito ay isang partikular na pagpapatupad lamang sa Ansible.
Pag-aautomat ng network. Isang kaso mula sa buhay ng isang tao

Sa yugtong ito, napagtanto namin kung ano ang kailangang gawin, bumuo ng playbook, nagsagawa ng pagsubok, at ngayon ay handa na kaming ilunsad ito.

Isa pang maliit na lyrical digression. Ang kadalian ng kuwento ay hindi dapat iligaw sa iyo. Ang proseso ng pagsulat ng mga playbook ay hindi kasing simple at mabilis na tila. Ang pagsubok ay tumagal ng maraming oras, isang virtual na paninindigan ang nilikha, ang solusyon ay sinubukan ng maraming beses, mga 100 na pagsubok ang isinagawa.

Ilunsad natin... May pakiramdam na ang lahat ay nangyayari nang napakabagal, mayroong isang pagkakamali sa isang lugar, isang bagay ay hindi gagana sa huli. Ang pakiramdam ng pagtalon gamit ang isang parasyut, ngunit ang parasyut ay hindi nais na magbukas kaagad ... ito ay normal.

Susunod, binasa namin ang resulta ng mga isinagawang operasyon ng Ansible playbook (ang mga IP address ay pinalitan para sa mga layunin ng lihim):

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

Tapos na!

Sa katunayan, hindi pa ito handa, huwag kalimutan ang tungkol sa convergence ng mga dynamic na routing protocol at pag-load ng malaking bilang ng mga ruta sa FIB. Hindi natin ito maiimpluwensyahan sa anumang paraan. Naghihintay kami. Nagtagumpay ito. Ngayon ay handa na.

At sa nayon ng Vilabajo (na ayaw i-automate ang network setup) ay patuloy silang naghuhugas ng mga pinggan. Si Bruce (tinatanggap, naiiba na, ngunit hindi gaanong cool) ay sinusubukan na maunawaan kung gaano pa ang manu-manong muling pagsasaayos ng kagamitan ang magaganap.

Pag-aautomat ng network. Isang kaso mula sa buhay ng isang tao

Nais ko ring talakayin ang isang mahalagang punto. Paano natin maibabalik ang lahat? Pagkaraan ng ilang oras, bubuhayin natin ang ating FW-CLUSTER. Ito ang pangunahing kagamitan, hindi backup, ang network ay dapat tumakbo dito.

Nararamdaman mo ba kung paano nagsisimulang masunog ang mga networker? Ang teknikal na direktor ay makakarinig ng isang libong argumento kung bakit hindi ito dapat gawin, kung bakit ito maaaring gawin sa ibang pagkakataon. Sa kasamaang palad, ito ay kung paano gumagana ang network mula sa isang bungkos ng mga patch, piraso, at mga labi ng dating luho nito. Ito pala ay isang tagpi-tagping kubrekama. Ang aming gawain sa pangkalahatan, hindi sa partikular na sitwasyong ito, ngunit sa pangkalahatan sa prinsipyo, bilang mga espesyalista sa IT, ay dalhin ang gawain ng network sa magandang salitang Ingles na "consistency", ito ay napaka-multifaceted, maaari itong isalin bilang: pagkakaugnay-ugnay , consistency, logic, coherence, systematicity, comparability, coherence. Lahat ng ito ay tungkol sa kanya. Sa ganitong estado lamang ang network ay mapapamahalaan, malinaw nating nauunawaan kung ano ang gumagana at kung paano, malinaw na nauunawaan natin kung ano ang kailangang baguhin, kung kinakailangan, malinaw nating alam kung saan titingnan kung may mga problema. At sa ganoong network ka lang makakagawa ng mga trick tulad ng mga inilarawan namin.

Sa totoo lang, isa pang playbook ang inihanda, na ibinalik ang mga setting sa kanilang orihinal na estado. Ang lohika ng operasyon nito ay pareho (mahalagang tandaan na ang pagkakasunud-sunod ng mga gawain ay napakahalaga), upang hindi pahabain ang isang medyo mahabang artikulo, nagpasya kaming huwag mag-post ng isang listahan ng pagpapatupad ng playbook. Pagkatapos magsagawa ng gayong mga ehersisyo, mas kalmado at mas kumpiyansa ka sa hinaharap, bilang karagdagan, ang anumang saklay na iyong nakasalansan doon ay agad na magbubunyag ng kanilang sarili.

Sinuman ay maaaring sumulat sa amin at tumanggap ng mga mapagkukunan ng lahat ng nakasulat na code, kasama ang lahat ng mga palybook. Mga contact sa profile.

Natuklasan

Sa aming opinyon, ang mga proseso na maaaring awtomatiko ay hindi pa na-kristal. Batay sa aming nakatagpo at kung ano ang tinatalakay ng aming mga kasamahan sa Kanluran, ang mga sumusunod na tema ay nakikita sa ngayon:

  • Paglalaan ng device;
  • Pagkolekta ng data;
  • Pag-uulat;
  • Pag-troubleshoot;
  • Pagsunod.

Kung may interes, maaari nating ipagpatuloy ang talakayan sa isa sa mga ibinigay na paksa.

Gusto ko ring magsalita ng kaunti tungkol sa automation. Ano ang dapat na nasa ating pang-unawa:

  • Ang sistema ay dapat mabuhay nang walang tao, habang pinapabuti ng isang tao. Ang sistema ay hindi dapat umasa sa mga tao;
  • Ang operasyon ay dapat na dalubhasa. Walang klase ng mga espesyalista na nagsasagawa ng mga karaniwang gawain. May mga eksperto na nag-automate ng buong gawain at nilulutas lamang ang mga kumplikadong problema;
  • Ang mga karaniwang karaniwang gawain ay awtomatikong ginagawa "sa pagpindot ng isang pindutan", walang mga mapagkukunan na nasasayang. Ang resulta ng naturang mga gawain ay palaging mahuhulaan at mauunawaan.

At ano ang dapat humantong sa mga puntong ito:

  • Transparency ng IT infrastructure (Mas kaunting panganib ng operasyon, modernisasyon, pagpapatupad. Mas kaunting downtime bawat taon);
  • Ang kakayahang magplano ng mga mapagkukunan ng IT (Capacity-planning system - makikita mo kung gaano karami ang natupok, makikita mo kung gaano karaming mga mapagkukunan ang kinakailangan sa isang sistema, at hindi sa pamamagitan ng mga sulat at pagbisita sa mga nangungunang departamento);
  • Posibilidad na bawasan ang bilang ng mga kawani ng IT.

Mga may-akda ng artikulo: Alexander Chelovekov (CCIE RS, CCIE SP) at Pavel Kirillov. Kami ay interesado sa pagtalakay at pagmumungkahi ng mga solusyon sa paksa ng IT infrastructure automation.


Pinagmulan: www.habr.com

Magdagdag ng komento