Kif l-arkitettura tal-web tolleranti għall-ħsarat hija implimentata fil-pjattaforma Mail.ru Cloud Solutions

Kif l-arkitettura tal-web tolleranti għall-ħsarat hija implimentata fil-pjattaforma Mail.ru Cloud Solutions

Hello, Habr! Jien Artem Karamyshev, kap tat-tim tal-amministrazzjoni tas-sistema Mail.Ru Cloud Solutions (MCS). Kellna ħafna tniedi ta' prodotti ġodda matul is-sena li għaddiet. Ridna niżguraw li s-servizzi tal-API kienu faċilment skalabbli, tolleranti għall-ħsarat, u lesti għal tkabbir rapidu fit-tagħbija tal-utent. Il-pjattaforma tagħna hija implimentata fuq OpenStack, u rrid ngħidlek liema problemi ta 'tolleranza ta' ħsarat tal-komponenti kellna nsolvu biex niksbu sistema li tollera l-ħsarat. Naħseb li dan se jkun interessanti għal dawk li jiżviluppaw ukoll prodotti fuq OpenStack.

It-tolleranza ġenerali tal-ħsarat ta 'pjattaforma tikkonsisti mir-reżiljenza tal-komponenti tagħha. Għalhekk se ngħaddu bil-mod il-mod mil-livelli kollha fejn identifikajna r-riskji u għalaqnihom.

Verżjoni vidjo ta’ din l-istorja, li s-sors primarju tagħha kien rapport fil-konferenza Uptime jum 4, organizzata minn ITSumma, inti tista tara fuq il-kanal Uptime Community YouTube.

Reżiljenza tal-arkitettura fiżika

Il-parti pubblika tas-sħab MCS issa hija bbażata f'żewġ ċentri tad-dejta tal-Livell III, bejniethom hemm il-fibra skura tagħha stess, riżervata fil-livell fiżiku b'rotot differenti, bi throughput ta '200 Gbit/s. Il-Livell III jipprovdi l-livell meħtieġ ta' tolleranza għall-ħsarat għall-infrastruttura fiżika.

Il-fibra skura hija riżervata kemm fil-livelli fiżiċi kif ukoll loġiċi. Il-proċess ta’ riservazzjoni tal-kanali kien iterattiv, inqalgħu problemi, u qed intejbu kontinwament il-komunikazzjoni bejn iċ-ċentri tad-dejta.

Pereżempju, mhux twil ilu, waqt li kien qed jaħdem f'bir ħdejn wieħed miċ-ċentri tad-dejta, skavatur kisser pajp, u ġewwa dan il-pajp kien hemm kemm kejbil ottiku prinċipali kif ukoll ta 'backup. Il-kanal ta 'komunikazzjoni tagħna li tollera l-ħsara maċ-ċentru tad-dejta rriżulta li kien vulnerabbli f'punt wieħed, fil-bir. Għaldaqstant, tlifna parti mill-infrastruttura. Ġibna konklużjonijiet u ħadna numru ta 'azzjonijiet, inkluż l-installazzjoni ta' ottiċi addizzjonali fil-bir ta 'maġenb.

Fiċ-ċentri tad-dejta hemm punti ta 'preżenza ta' fornituri ta 'komunikazzjoni li lilhom inxandru l-prefissi tagħna permezz ta' BGP. Għal kull direzzjoni tan-netwerk, tintgħażel l-aħjar metrika, li tippermetti li klijenti differenti jiġu pprovduti bl-aħjar kwalità ta 'konnessjoni. Jekk il-komunikazzjoni permezz ta' fornitur wieħed tonqos, nerġgħu nibnu r-rotot tagħna permezz tal-fornituri disponibbli.

Jekk fornitur ifalli, aħna awtomatikament naqilbu għal dak li jmiss. Fil-każ ta 'falliment ta' wieħed miċ-ċentri tad-dejta, għandna kopja mera tas-servizzi tagħna fit-tieni ċentru tad-dejta, li jieħdu t-tagħbija kollha.

Kif l-arkitettura tal-web tolleranti għall-ħsarat hija implimentata fil-pjattaforma Mail.ru Cloud Solutions
Reżiljenza ta' infrastruttura fiżika

Dak li nużaw għat-tolleranza tal-ħsarat fil-livell tal-applikazzjoni

Is-servizz tagħna huwa mibni fuq numru ta’ komponenti opensource.

ExaBGP huwa servizz li jimplimenta numru ta' funzjonijiet bl-użu tal-protokoll ta' routing dinamiku bbażat fuq BGP. Aħna nużawha b'mod attiv biex nirreklamaw l-indirizzi IP tagħna fil-lista bajda li permezz tagħhom l-utenti jaċċessaw l-API.

HAProxy huwa bilanċjar ta 'tagħbija għolja li jippermettilek tikkonfigura regoli ta' bilanċjar tat-traffiku flessibbli ħafna f'livelli differenti tal-mudell OSI. Aħna nużawha biex nibbilanċjaw quddiem is-servizzi kollha: databases, sensara tal-messaġġi, servizzi API, servizzi tal-web, proġetti interni tagħna - kollox huwa wara HAProxy.

applikazzjoni API — applikazzjoni tal-web miktuba f'python, li biha l-utent jimmaniġġja l-infrastruttura tiegħu u s-servizz tiegħu.

Applikazzjoni ta' ħaddiem (minn hawn 'il quddiem sempliċement ħaddiem) - fis-servizzi OpenStack, dan huwa daemon tal-infrastruttura li jippermettilek li xxandar kmandi tal-API lill-infrastruttura. Pereżempju, il-ħolqien tad-disk iseħħ fil-ħaddiem, u t-talba għall-ħolqien sseħħ fl-API tal-applikazzjoni.

Arkitettura Standard tal-Applikazzjoni OpenStack

Il-biċċa l-kbira tas-servizzi li huma żviluppati għal OpenStack jippruvaw isegwu paradigma waħda. Servizz normalment jikkonsisti minn 2 partijiet: API u ħaddiema (eżekuturi backend). Bħala regola, API hija applikazzjoni WSGI f'python, li titnieda jew bħala proċess indipendenti (daemon), jew bl-użu ta 'web server Nginx jew Apache lest. L-API tipproċessa t-talba tal-utent u tgħaddi struzzjonijiet ulterjuri lill-applikazzjoni tal-ħaddiem għall-eżekuzzjoni. It-trasferiment iseħħ bl-użu ta 'sensar tal-messaġġi, ġeneralment RabbitMQ, l-oħrajn huma appoġġjati ħażin. Meta l-messaġġi jaslu għand is-sensar, jiġu pproċessati mill-ħaddiema u, jekk meħtieġ, jirritornaw risposta.

Din il-paradigma tinvolvi punti komuni iżolati ta 'falliment: RabbitMQ u d-database. Iżda RabbitMQ huwa iżolat f'servizz wieħed u, fit-teorija, jista 'jkun individwali għal kull servizz. Għalhekk fl-MCS nisseparaw dawn is-servizzi kemm jista’ jkun; għal kull proġett individwali noħolqu database separata, RabbitMQ separata. Dan l-approċċ huwa tajjeb għax f'każ ta' inċident f'xi punti vulnerabbli, mhux is-servizz kollu jkisser, iżda parti minnu biss.

In-numru ta 'applikazzjonijiet tal-ħaddiema huwa illimitat, għalhekk l-API tista' faċilment tiskala orizzontalment wara l-balancers sabiex tiżdied il-prestazzjoni u t-tolleranza tal-ħsarat.

Xi servizzi jeħtieġu koordinazzjoni fi ħdan is-servizz meta jseħħu operazzjonijiet sekwenzjali kumplessi bejn l-APIs u l-ħaddiema. F'dan il-każ, jintuża ċentru ta 'koordinazzjoni wieħed, sistema ta' cluster bħal Redis, Memcache, eċċd, li tippermetti ħaddiem jgħid lil ieħor li dan il-kompitu huwa assenjat lilu ("jekk jogħġbok ma teħodhiex"). Aħna nużaw etcd. Bħala regola, il-ħaddiema jikkomunikaw b'mod attiv mad-database, jiktbu u jaqraw informazzjoni minn hemm. Aħna nużaw mariadb bħala database, li tinsab fi cluster multimaster.

Dan is-servizz uniku klassiku huwa organizzat b'mod ġeneralment aċċettat għal OpenStack. Jista 'jitqies bħala sistema magħluqa, li għaliha l-metodi ta' skalar u tolleranza għall-ħsarat huma pjuttost ovvji. Pereżempju, għat-tolleranza tal-ħsarat tal-API, huwa biżżejjed li jitqiegħed bilanċatur quddiemhom. L-iskala tal-ħaddiema tinkiseb billi jiżdied in-numru tagħhom.

Il-punt dgħajjef fl-iskema kollha huwa RabbitMQ u MariaDB. L-arkitettura tagħhom jistħoqqilha artiklu separat.F'dan l-artikolu nixtieq niffoka fuq it-tolleranza tal-ħsarat tal-API.

Kif l-arkitettura tal-web tolleranti għall-ħsarat hija implimentata fil-pjattaforma Mail.ru Cloud Solutions
Arkitettura tal-Applikazzjoni Openstack. Ibbilanċjar u tolleranza għall-ħsarat tal-pjattaforma tal-cloud

Nagħmlu l-balancer HAProxy tolleranti għall-ħsarat bl-użu ta 'ExaBGP

Biex nagħmlu l-APIs tagħna skalabbli, veloċi u tolleranti għall-ħsarat, aħna npoġġu load balancer quddiemhom. Aħna għażilna HAProxy. Fl-opinjoni tiegħi, għandu l-karatteristiċi kollha meħtieġa għall-kompitu tagħna: ibbilanċjar f'diversi livelli OSI, interface ta 'ġestjoni, flessibilità u skalabbiltà, numru kbir ta' metodi ta 'ibbilanċjar, appoġġ għal tabelli ta' sessjoni.

L-ewwel problema li kellha tiġi solvuta kienet it-tolleranza tal-ħsarat tal-balancer innifsu. L-installazzjoni sempliċi ta 'balancer toħloq ukoll punt ta' falliment: il-balancer jinqasam u s-servizz jiġġarraf. Biex ma jseħħx dan, użajna HAProxy flimkien ma 'ExaBGP.

ExaBGP jippermettilek li timplimenta mekkaniżmu biex tiċċekkja l-istat ta 'servizz. Aħna użajna dan il-mekkaniżmu biex niċċekkjaw il-funzjonalità ta 'HAProxy u, f'każ ta' problemi, tiddiżattiva s-servizz HAProxy minn BGP.

Skema ExaBGP+HAProxy

  1. Aħna ninstallaw is-softwer meħtieġ, ExaBGP u HAProxy, fuq tliet servers.
  2. Aħna noħolqu interface loopback fuq kull server.
  3. Fuq it-tliet servers kollha aħna jassenjaw l-istess indirizz IP abjad għal din l-interface.
  4. Indirizz IP abjad jiġi reklamat fuq l-Internet permezz ta' ExaBGP.

It-tolleranza tal-ħsarat tinkiseb billi tirreklama l-istess indirizz IP mit-tliet servers kollha. Mil-lat tan-netwerk, l-istess indirizz huwa aċċessibbli minn tliet ħops differenti li jmiss. Ir-router jara tliet rotot identiċi, jagħżel l-ogħla prijorità minnhom abbażi tal-metrika tiegħu stess (din is-soltu tkun l-istess għażla), u t-traffiku jmur biss għal wieħed mis-servers.

F'każ ta 'problemi bl-operat ta' HAProxy jew falliment tas-server, ExaBGP jieqaf iħabbar ir-rotta, u t-traffiku jaqleb bla xkiel għal server ieħor.

Għalhekk, ksibna tolleranza għall-ħsarat tal-balancer.

Kif l-arkitettura tal-web tolleranti għall-ħsarat hija implimentata fil-pjattaforma Mail.ru Cloud Solutions
Tolleranza għall-ħsarat tal-balancers HAProxy

L-iskema rriżulta li kienet imperfetta: tgħallimna kif nirriżervaw HAProxy, iżda ma tgħallimniex kif tqassam it-tagħbija fi ħdan is-servizzi. Għalhekk, wessgħu xi ftit din l-iskema: mxejna għall-ibbilanċjar bejn diversi indirizzi IP bojod.

Ibbilanċjar ibbażat fuq DNS u BGP

Il-kwistjoni tal-ibbilanċjar tat-tagħbija għall-HAProxy tagħna għadha mhux solvuta. Madankollu, jista 'jiġi solvut pjuttost sempliċi, kif għamilna hawn.

Biex tibbilanċja tliet servers ser ikollok bżonn 3 indirizzi IP bojod u DNS antik tajjeb. Kull wieħed minn dawn l-indirizzi huwa determinat fuq l-interface loopback ta’ kull HAProxy u reklamat fuq l-Internet.

F'OpenStack, biex jimmaniġġjaw ir-riżorsi, jintuża direttorju tas-servizz, li jispeċifika l-API tal-endpoint ta' servizz partikolari. F'dan id-direttorju nirreġistraw isem tad-dominju - public.infra.mail.ru, li jiġi solvut permezz tad-DNS bi tliet indirizzi IP differenti. Bħala riżultat, niksbu distribuzzjoni tat-tagħbija bejn tliet indirizzi permezz tad-DNS.

Iżda peress li meta nħabbru indirizzi IP bojod aħna ma nikkontrollawx il-prijoritajiet tal-għażla tas-server, dan għadu mhux qed jibbilanċja. Tipikament, server wieħed biss jintgħażel abbażi tal-anzjanità tal-indirizz IP, u t-tnejn l-oħra jkunu inattivi minħabba li l-ebda metrika ma hija speċifikata fil-BGP.

Bdejna nibagħtu rotot permezz ta' ExaBGP b'metriċi differenti. Kull balancer jirreklama t-tliet indirizzi IP bojod, iżda wieħed minnhom, il-wieħed ewlieni għal dan balancer, huwa reklamat bil-metrika minima. Allura filwaqt li t-tliet balancers kollha jkunu qed joperaw, sejħiet għall-ewwel indirizz IP imorru għall-ewwel balancer, sejħiet għat-tieni għat-tieni, u sejħiet għat-tielet għat-tielet.

X'jiġri meta wieħed mill-balancers jaqa'? Jekk xi balancer ifalli, l-indirizz ewlieni tiegħu għadu reklamat mit-tnejn l-oħra, u t-traffiku jitqassam mill-ġdid bejniethom. Għalhekk, aħna nagħtu lill-utent diversi indirizzi IP f'daqqa permezz tad-DNS. Billi nibbilanċjaw bid-DNS u metriċi differenti, niksbu distribuzzjoni uniformi tat-tagħbija fit-tliet balancers kollha. U fl-istess ħin ma nitilfux it-tolleranza tal-ħtija.

Kif l-arkitettura tal-web tolleranti għall-ħsarat hija implimentata fil-pjattaforma Mail.ru Cloud Solutions
Ibbilanċjar HAProxy ibbażat fuq DNS + BGP

Interazzjoni bejn ExaBGP u HAProxy

Allura, implimentajna t-tolleranza tal-ħsarat f'każ li s-server jitlaq, ibbażat fuq il-waqfien tat-tħabbir tar-rotot. Iżda HAProxy jista' jagħlaq għal raġunijiet oħra għajr falliment tas-server: żbalji fl-amministrazzjoni, fallimenti fis-servizz. Irridu nneħħu l-balancer miksur minn taħt it-tagħbija f'dawn il-każijiet ukoll, u neħtieġu mekkaniżmu differenti.

Għalhekk, espansjoni l-iskema preċedenti, implimentajna taħbit tal-qalb bejn ExaBGP u HAProxy. Din hija implimentazzjoni tas-softwer tal-interazzjoni bejn ExaBGP u HAProxy, meta ExaBGP juża skripts tad-dwana biex jiċċekkja l-istatus tal-applikazzjonijiet.

Biex tagħmel dan, għandek bżonn tikkonfigura kontrollur tas-saħħa fil-konfigurazzjoni ExaBGP, li tista 'tiċċekkja l-istatus ta' HAProxy. Fil-każ tagħna, aħna kkonfigurajna l-backend tas-saħħa f'HAProxy, u min-naħa ExaBGP niċċekkjaw b'talba sempliċi GET. Jekk it-tħabbira tieqaf jiġri, allura HAProxy x'aktarx ma taħdimx u m'hemmx għalfejn tirreklamaha.

Kif l-arkitettura tal-web tolleranti għall-ħsarat hija implimentata fil-pjattaforma Mail.ru Cloud Solutions
Kontroll tas-Saħħa HAProxy

Peers HAProxy: sinkronizzazzjoni tas-sessjoni

Il-ħaġa li jmiss li tagħmel kienet li tissinkronizza s-sessjonijiet. Meta taħdem permezz ta 'balancers distribwiti, huwa diffiċli li torganizza l-ħażna ta' informazzjoni dwar is-sessjonijiet tal-klijenti. Iżda HAProxy huwa wieħed mill-ftit balancers li jista 'jagħmel dan minħabba l-funzjonalità Peers - il-kapaċità li jittrasferixxu tabelli ta' sessjoni bejn proċessi differenti HAProxy.

Hemm metodi ta' bilanċ differenti: dawk sempliċi bħal round robin, u estiż, meta tiġi mfakkar is-sessjoni tal-klijent, u kull darba li jispiċċa fuq l-istess server bħal qabel. Ridna nimplimentaw it-tieni għażla.

HAProxy juża stick-tables biex isalva s-sessjonijiet tal-klijenti ta 'dan il-mekkaniżmu. Huma jiffrankaw l-indirizz IP oriġinali tal-klijent, l-indirizz fil-mira magħżula (backend) u xi informazzjoni tas-servizz. Tipikament, it-tabelli tal-stick jintużaw biex jaħżnu par sors-IP + destinazzjoni-IP, li huwa speċjalment utli għal applikazzjonijiet li ma jistgħux jittrasferixxu l-kuntest tas-sessjoni tal-utent meta jaqilbu għal balancer ieħor, pereżempju, fil-modalità tal-ibbilanċjar RoundRobin.

Jekk stick table tiġi mgħallma biex tiċċaqlaq bejn proċessi HAProxy differenti (bejn iseħħ l-ibbilanċjar), il-balancers tagħna jkunu jistgħu jaħdmu ma 'grupp wieħed ta' stick tables. Dan jagħmilha possibbli li n-netwerk tal-klijent jaqleb bla xkiel jekk wieħed mill-balancers ifalli; ix-xogħol mas-sessjonijiet tal-klijenti se jkompli fuq l-istess backends li ntgħażlu qabel.

Għal tħaddim tajjeb, il-problema tal-indirizz IP tas-sors tal-balancer li minnu ġiet stabbilita s-sessjoni trid tiġi solvuta. Fil-każ tagħna, dan huwa indirizz dinamiku fuq l-interface loopback.

Ix-xogħol korrett tal-pari jinkiseb biss taħt ċerti kundizzjonijiet. Jiġifieri, it-timeouts tat-TCP għandhom ikunu kbar biżżejjed jew il-qlib għandu jkun mgħaġġel biżżejjed sabiex is-sessjoni TCP ma jkollhiex ħin biex tintemm. Madankollu, jippermetti swiċċjar bla xkiel.

Fl-IaaS għandna servizz mibni bl-użu tal-istess teknoloġija. Dan Load Balancer bħala servizz għal OpenStack, li tissejjaħ Octavia. Hija bbażata fuq żewġ proċessi HAProxy u inizjalment tinkludi appoġġ għall-pari. Huma wrew li huma eċċellenti f'dan is-servizz.

L-istampa turi b'mod skematiku l-moviment tat-tabelli tal-pari bejn tliet istanzi HAProxy, hija proposta konfigurazzjoni dwar kif dan jista 'jiġi kkonfigurat:

Kif l-arkitettura tal-web tolleranti għall-ħsarat hija implimentata fil-pjattaforma Mail.ru Cloud Solutions
Peers HAProxy (sinkronizzazzjoni tas-sessjoni)

Jekk timplimenta l-istess skema, it-tħaddim tagħha għandu jiġi ttestjat bir-reqqa. Mhuwiex fatt li se taħdem bl-istess mod 100% tal-ħin. Imma mill-inqas int mhux se titlef it-tabelli tal-stick meta jkollok bżonn tiftakar l-IP sors tal-klijent.

Limitazzjoni tan-numru ta 'talbiet simultanji mill-istess klijent

Kwalunkwe servizz li huwa pubblikament disponibbli, inklużi l-APIs tagħna, jista 'jkun soġġett għal valangi ta' talbiet. Ir-raġunijiet għalihom jistgħu jkunu kompletament differenti, minn żbalji tal-utent għal attakki mmirati. Aħna perjodikament DDoSed mill-indirizzi IP. Il-klijenti spiss jagħmlu żbalji fl-iskripts tagħhom u jagħtuna mini-DDoSs.

B'xi mod jew ieħor, għandha tiġi pprovduta protezzjoni addizzjonali. Is-soluzzjoni ovvja hija li tillimita n-numru ta 'talbiet API u mhux ħela ta' ħin tas-CPU biex tipproċessa talbiet malizzjużi.

Biex nimplimentaw restrizzjonijiet bħal dawn, nużaw limiti tar-rata, organizzati fuq il-bażi ta 'HAProxy, bl-użu ta' l-istess stick tables. It-twaqqif ta 'limiti huwa pjuttost sempliċi u jippermettilek tillimita l-utent bin-numru ta' talbiet lill-API. L-algoritmu jiftakar l-IP tas-sors li minnu jsiru t-talbiet u jillimita n-numru ta 'talbiet simultanji minn utent wieħed. Naturalment, aħna kkalkulajna l-profil tat-tagħbija API medju għal kull servizz u waqqafna limitu ta '≈ 10 darbiet dan il-valur. Inkomplu nissorveljaw is-sitwazzjoni mill-qrib u nżommu subgħajna fuq il-polz.

Kif jidher dan fil-prattika? Għandna klijenti li jużaw l-APIs autoscaling tagħna l-ħin kollu. Huma joħolqu bejn wieħed u ieħor mitejn sa tliet mitt magna virtwali filgħodu u jħassruhom filgħaxija. Għal OpenStack, il-ħolqien ta 'magna virtwali, ukoll b'servizzi PaaS, jeħtieġ mill-inqas 1000 talba API, peress li l-interazzjoni bejn is-servizzi sseħħ ukoll permezz tal-API.

Tali trasferiment ta 'kompiti jikkawża tagħbija pjuttost kbira. Aħna vvalutajna din it-tagħbija, ġabar il-qċaċet ta 'kuljum, żidithom għaxar darbiet, u dan sar il-limitu tar-rata tagħna. Inżommu subgħajna fuq il-polz. Ħafna drabi naraw bots u skaners li qed jippruvaw iħarsu lejna biex naraw jekk għandniex xi skripts CGA li jistgħu jitmexxew, qed naqtgħuhom b'mod attiv.

Kif taġġorna l-codebase tiegħek mingħajr ma l-utenti jindunaw

Aħna nimplimentaw ukoll it-tolleranza tal-ħsarat fil-livell tal-proċessi tal-iskjerament tal-kodiċi. Jista 'jkun hemm problemi waqt it-tnedija, iżda l-impatt tagħhom fuq id-disponibbiltà tas-servizz jista' jiġi minimizzat.

Aħna kontinwament naġġornaw is-servizzi tagħna u għandna niżguraw li l-codebase tiġi aġġornata mingħajr ma taffettwa l-utenti. Irnexxielna nsolvu din il-problema bl-użu tal-kapaċitajiet ta’ ġestjoni ta’ HAProxy u l-implimentazzjoni ta’ Graceful Shutdown fis-servizzi tagħna.

Biex issolvi din il-problema, kien meħtieġ li jiġi żgurat il-kontroll tal-balancer u l-għeluq "korrett" tas-servizzi:

  • Fil-każ ta 'HAProxy, il-kontroll jitwettaq permezz ta' fajl tal-istatistiċi, li essenzjalment huwa socket u huwa definit fil-konfigurazzjoni HAProxy. Tista 'tibgħat kmandi lilha permezz stdio. Iżda l-għodda ewlenija tagħna ta 'kontroll tal-konfigurazzjoni hija ansible, għalhekk għandha modulu integrat għall-ġestjoni ta' HAProxy. Li nużaw b'mod attiv.
  • Ħafna mis-servizzi tal-API u tal-Magna tagħna jappoġġjaw teknoloġiji ta 'għeluq graceful: meta jagħlqu, jistennew li l-kompitu attwali jitlesta, kemm jekk tkun talba http jew xi kompitu ta' servizz. L-istess jiġri mal-ħaddiem. Jaf il-ħidmiet kollha li qed jagħmel u jispiċċa meta temm kollox b'suċċess.

Grazzi għal dawn iż-żewġ punti, l-algoritmu sikur għall-iskjerament tagħna jidher bħal dan.

  1. L-iżviluppatur jiġbor pakkett ġdid ta 'kodiċi (għalina dan huwa RPM), jittestjah fl-ambjent dev, jittestjah fl-istadju, u jħallih fir-repożitorju tal-istadju.
  2. L-iżviluppatur jistabbilixxi l-kompitu għall-iskjerament bl-aktar deskrizzjoni dettaljata tal-"artifatti": il-verżjoni tal-pakkett il-ġdid, deskrizzjoni tal-funzjonalità l-ġdida u dettalji oħra dwar l-iskjerament jekk meħtieġ.
  3. L-amministratur tas-sistema jibda l-aġġornament. Jniedi l-playbook Ansible, li mbagħad jagħmel dan li ġej:
    • Jieħu pakkett mir-repożitorju tal-istadju u jużah biex jaġġorna l-verżjoni tal-pakkett fir-repożitorju tal-prodott.
    • Jiġbor lista ta' backends tas-servizz aġġornat.
    • Twaqqaf l-ewwel servizz li jiġi aġġornat f'HAProxy u jistenna li l-proċessi tiegħu jispiċċaw jaħdmu. Grazzi għal għeluq graceful, aħna kunfidenti li t-talbiet kurrenti kollha tal-klijenti se jlestu b'suċċess.
    • Wara li l-API u l-ħaddiema jitwaqqfu kompletament, u HAProxy jintefa, il-kodiċi jiġi aġġornat.
    • Ansible tmexxi servizzi.
    • Għal kull servizz, ċerti "manki" jinġibdu, li jwettqu ttestjar ta 'unità fuq numru ta' testijiet ewlenin definiti minn qabel. Isseħħ verifika bażika tal-kodiċi l-ġdid.
    • Jekk ma nstabu ebda żbalji fil-pass preċedenti, il-backend jiġi attivat.
    • Ejja ngħaddu għall-backend li jmiss.
  4. Wara li l-backends kollha jiġu aġġornati, jitnedew it-testijiet funzjonali. Jekk huma neqsin, allura l-iżviluppatur iħares lejn kwalunkwe funzjonalità ġdida li ħoloq.

Dan itemm l-iskjerament.

Kif l-arkitettura tal-web tolleranti għall-ħsarat hija implimentata fil-pjattaforma Mail.ru Cloud Solutions
Ċiklu ta' aġġornament tas-servizz

Din l-iskema ma taħdimx kieku ma kellniex regola waħda. Aħna nappoġġjaw kemm il-verżjonijiet qodma kif ukoll il-ġodda fil-battalja. Bil-quddiem, fl-istadju tal-iżvilupp tas-softwer, huwa stabbilit li anki jekk ikun hemm bidliet fid-database tas-servizz, ma jiksrux il-kodiċi preċedenti. Bħala riżultat, il-bażi tal-kodiċi tiġi aġġornata gradwalment.

Konklużjoni

Naqsam il-ħsibijiet tiegħi stess dwar arkitettura WEB li tollera l-ħsarat, nixtieq għal darb'oħra ninnota l-punti ewlenin tagħha:

  • tolleranza għal ħsarat fiżiċi;
  • Tolleranza għal ħsarat tan-netwerk (balancers, BGP);
  • tolleranza għall-ħsarat tas-softwer użat u żviluppat.

Uptime stabbli kulħadd!

Sors: www.habr.com

Żid kumment