One-cloud - data center level OS f'Odnoklassniki

One-cloud - data center level OS f'Odnoklassniki

Aloha, nies! Jisimni Oleg Anastasyev, naħdem f'Odnoklassniki fit-tim tal-Pjattaforma. U minbarra lili, hemm ħafna ħardwer li jaħdem f'Odnoklassniki. Għandna erba 'ċentri tad-dejta b'madwar 500 xtilliera b'aktar minn 8 elf servers. F'ċertu punt, aħna rrealizzajna li l-introduzzjoni ta 'sistema ta' ġestjoni ġdida tippermettilna tagħbija tagħmir b'mod aktar effiċjenti, tiffaċilita l-ġestjoni tal-aċċess, awtomat (ri)distribuzzjoni tar-riżorsi tal-kompjuter, tħaffef it-tnedija ta 'servizzi ġodda, u tħaffef ir-risponsi. għal inċidenti fuq skala kbira.

X'sar minnha?

Minbarra lili u mazz ta 'ħardwer, hemm ukoll nies li jaħdmu ma' dan il-ħardwer: inġiniera li jinsabu direttament fiċ-ċentri tad-data; netwerkers li jistabbilixxu softwer tan-netwerk; amministraturi, jew SREs, li jipprovdu reżiljenza tal-infrastruttura; u timijiet ta’ żvilupp, kull wieħed minnhom huwa responsabbli għal parti mill-funzjonijiet tal-portal. Is-softwer li joħolqu jaħdem xi ħaġa bħal din:

One-cloud - data center level OS f'Odnoklassniki

It-talbiet tal-utenti jaslu kemm fuq il-faċċati tal-portal prinċipali www.ok.ru, u fuq oħrajn, pereżempju fuq il-fronti tal-API tal-mużika. Biex tipproċessa l-loġika tan-negozju, huma jsejħu lis-server tal-applikazzjoni, li, meta jipproċessa t-talba, isejjaħ il-mikroservizzi speċjalizzati meħtieġa - one-graph (graff ta 'konnessjonijiet soċjali), user-cache (cache ta' profili tal-utent), eċċ.

Kull wieħed minn dawn is-servizzi huwa skjerat fuq ħafna magni, u kull wieħed minnhom għandu żviluppaturi responsabbli responsabbli għall-funzjonament tal-moduli, it-tħaddim tagħhom u l-iżvilupp teknoloġiku. Dawn is-servizzi kollha jaħdmu fuq servers tal-ħardwer, u sa ftit ilu nedejna eżattament kompitu wieħed għal kull server, jiġifieri kien speċjalizzat għal kompitu speċifiku.

Għalfejn? Dan l-approċċ kellu diversi vantaġġi:

  • Meħlus ġestjoni tal-massa. Ejja ngħidu kompitu jeħtieġ xi libreriji, xi settings. U mbagħad is-server jiġi assenjat eżattament għal grupp speċifiku wieħed, il-politika cfengine għal dan il-grupp hija deskritta (jew diġà ġiet deskritta), u din il-konfigurazzjoni hija mxerrda b'mod ċentrali u awtomatikament għas-servers kollha f'dan il-grupp.
  • Simplifikat dijanjostiċi. Ejja ngħidu li tħares lejn it-tagħbija miżjuda fuq il-proċessur ċentrali u tirrealizza li din it-tagħbija tista 'tiġi ġġenerata biss mill-kompitu li jaħdem fuq dan il-proċessur tal-ħardwer. It-tfittxija għal xi ħadd li twaħħal tispiċċa malajr ħafna.
  • Simplifikat monitoraġġ. Jekk xi ħaġa ħażina fis-server, il-monitor jirrapportaha, u taf eżattament min għandu t-tort.

Servizz li jikkonsisti f'diversi repliki huwa allokat diversi servers - wieħed għal kull wieħed. Imbagħad ir-riżors tal-kompjuter għas-servizz jiġi allokat b'mod sempliċi ħafna: in-numru ta 'servers li għandu s-servizz, l-ammont massimu ta' riżorsi li jista 'jikkonsma. "Faċli" hawnhekk ma jfissirx li huwa faċli biex tużah, iżda fis-sens li l-allokazzjoni tar-riżorsi ssir manwalment.

Dan l-approċċ ippermetta wkoll li nagħmlu konfigurazzjonijiet speċjalizzati tal-ħadid għal biċċa xogħol li taħdem fuq dan is-server. Jekk il-kompitu jaħżen ammonti kbar ta 'dejta, allura nużaw server 4U b'chassis bi 38 diski. Jekk il-kompitu huwa purament komputazzjonali, allura nistgħu nixtru server 1U orħos. Dan huwa komputazzjoni effiċjenti. Fost affarijiet oħra, dan l-approċċ jippermettilna nużaw erba 'darbiet inqas magni b'tagħbija komparabbli ma' netwerk soċjali wieħed faċli.

Tali effiċjenza fl-użu tar-riżorsi tal-kompjuter għandha tiżgura wkoll effiċjenza ekonomika, jekk nipproċedu mill-premessa li l-aktar ħaġa għalja hija s-servers. Għal żmien twil, il-ħardwer kien l-aktar għali, u għamilna ħafna sforz biex innaqqsu l-prezz tal-ħardwer, nibqgħu b'algoritmi ta 'tolleranza għall-ħsarat biex inaqqsu r-rekwiżiti tal-affidabbiltà tal-hardware. U llum wasalna fl-istadju li fih il-prezz tas-server ma baqax deċiżiv. Jekk ma tqisx l-aħħar eżotiċi, allura l-konfigurazzjoni speċifika tas-servers fir-rack ma jimpurtax. Issa għandna problema oħra - il-prezz tal-ispazju okkupat mis-server fiċ-ċentru tad-dejta, jiġifieri, l-ispazju fir-rack.

Billi rrealizzajna li dan kien il-każ, iddeċidejna li nikkalkulaw kemm konna qed nużaw l-ixkafef b'mod effettiv.
Ħadna l-prezz tas-server l-aktar b'saħħtu minn dawk ekonomikament ġustifikabbli, ikkalkulajna kemm servers bħal dawn nistgħu npoġġu f'xtillieri, kemm kompiti konna nħaddmu fuqhom ibbażati fuq il-mudell l-antik "server wieħed = kompitu wieħed," u kemm. kompiti bħal dawn jistgħu jutilizzaw it-tagħmir. Għaddew u xerrdu dmugħ. Irriżulta li l-effiċjenza tagħna ta 'l-użu ta' xtillieri hija ta 'madwar 11%. Il-konklużjoni hija ovvja: għandna bżonn inżidu l-effiċjenza tal-użu taċ-ċentri tad-dejta. Jidher li s-soluzzjoni hija ovvja: għandek bżonn tmexxi diversi kompiti fuq server wieħed f'daqqa. Iżda hawnhekk jibdew id-diffikultajiet.

Il-konfigurazzjoni tal-massa ssir drammatikament aktar ikkumplikata - issa huwa impossibbli li jiġi assenjat xi grupp wieħed lil server. Wara kollox, issa diversi kompiti ta 'kmandi differenti jistgħu jiġu mnedija fuq server wieħed. Barra minn hekk, il-konfigurazzjoni tista 'tkun konfliġġenti għal applikazzjonijiet differenti. Id-dijanjosi ssir ukoll aktar ikkumplikata: jekk tara żieda fil-konsum tas-CPU jew tad-disk fuq server, ma tafx liema kompitu qed jikkawża problemi.

Iżda l-ħaġa prinċipali hija li m'hemm l-ebda iżolament bejn il-kompiti li jaħdmu fuq l-istess magna. Hawnhekk, pereżempju, hemm grafika tal-ħin medju ta 'rispons ta' kompitu ta 'server qabel u wara li applikazzjoni komputazzjonali oħra ġiet imnedija fuq l-istess server, bl-ebda mod relatat mal-ewwel wieħed - il-ħin tar-rispons tal-kompitu prinċipali żdied b'mod sinifikanti.

One-cloud - data center level OS f'Odnoklassniki

Ovvjament, għandek bżonn tmexxi l-kompiti jew f'kontenituri jew f'magni virtwali. Peress li kważi l-kompiti kollha tagħna jaħdmu taħt OS wieħed (Linux) jew huma adattati għaliha, m'għandniex bżonn nappoġġaw ħafna sistemi operattivi differenti. Għaldaqstant, il-virtwalizzazzjoni mhix meħtieġa; minħabba l-overhead addizzjonali, se tkun inqas effiċjenti mill-kontejners.

Bħala implimentazzjoni ta 'kontenituri għat-tmexxija tal-kompiti direttament fuq is-servers, Docker huwa kandidat tajjeb: l-immaġini tas-sistema tal-fajls isolvu tajjeb il-problemi b'konfigurazzjonijiet konfliġġenti. Il-fatt li l-immaġini jistgħu jkunu komposti minn diversi saffi jippermettilna nnaqqsu b'mod sinifikanti l-ammont ta 'dejta meħtieġa biex jiġu skjerati fuq l-infrastruttura, billi nisseparaw partijiet komuni f'saffi bażi separati. Imbagħad is-saffi bażiċi (u l-aktar voluminużi) se jiġu cached pjuttost malajr matul l-infrastruttura kollha, u biex iwasslu ħafna tipi differenti ta 'applikazzjonijiet u verżjonijiet, saffi żgħar biss se jkollhom bżonn jiġu trasferiti.

Barra minn hekk, reġistru lest u tikkettar tal-immaġni f'Docker jagħtuna primittivi lesti għall-verżjoni u l-kunsinna tal-kodiċi għall-produzzjoni.

Docker, bħal kull teknoloġija simili oħra, jipprovdilna xi livell ta 'iżolament tal-kontenitur barra mill-kaxxa. Pereżempju, iżolament tal-memorja - kull kontenitur jingħata limitu fuq l-użu tal-memorja tal-magni, li lil hinn minnu mhux se jikkunsma. Tista 'wkoll tiżola kontenituri bbażati fuq l-użu tas-CPU. Għalina, madankollu, l-insulazzjoni standard ma kinitx biżżejjed. Iżda aktar dwar dan hawn taħt.

Kontenituri li jħaddmu direttament fuq is-servers hija biss parti mill-problema. Il-parti l-oħra hija relatata mal-hosting ta 'kontenituri fuq servers. Trid tifhem liema kontenitur jista 'jitqiegħed fuq liema server. Din mhix ħidma daqshekk faċli, minħabba li l-kontenituri jeħtieġ li jitqiegħdu fuq servers bl-aktar densità possibbli mingħajr ma titnaqqas il-veloċità tagħhom. Tali tqegħid jista 'jkun diffiċli wkoll mil-lat ta' tolleranza għal ħsarat. Ħafna drabi rridu npoġġu repliki tal-istess servizz fi xtillieri differenti jew saħansitra fi kmamar differenti taċ-ċentru tad-dejta, sabiex jekk ixtilliera jew kamra tfalli, ma nitilfux immedjatament ir-repliki kollha tas-servizz.

Id-distribuzzjoni tal-kontenituri manwalment mhix għażla meta jkollok 8 elf servers u 8-16 elf kontenitur.

Barra minn hekk, ridna nagħtu lill-iżviluppaturi aktar indipendenza fl-allokazzjoni tar-riżorsi sabiex ikunu jistgħu jospitaw is-servizzi tagħhom fil-produzzjoni huma stess, mingħajr l-għajnuna ta 'amministratur. Fl-istess ħin, ridna nżommu kontroll sabiex xi servizz minuri ma jikkonsmax ir-riżorsi kollha taċ-ċentri tad-dejta tagħna.

Ovvjament, għandna bżonn saff ta 'kontroll li jagħmel dan awtomatikament.

Allura wasalna għal stampa sempliċi u li tinftiehem li l-periti kollha jaduraw: tliet kwadri.

One-cloud - data center level OS f'Odnoklassniki

one-cloud masters huwa raggruppament ta' failover responsabbli għall-orkestrazzjoni tas-sħab. L-iżviluppatur jibgħat manifest lill-kaptan, li fih l-informazzjoni kollha meħtieġa biex jospita s-servizz. Ibbażat fuqha, il-kaptan jagħti kmandi lil minions magħżula (magni ddisinjati biex imexxu kontenituri). Il-minions għandhom l-aġent tagħna, li jirċievi l-kmand, joħroġ il-kmandi tiegħu lil Docker, u Docker jikkonfigura l-kernel tal-linux biex iniedi l-kontenitur korrispondenti. Minbarra l-eżekuzzjoni tal-kmandi, l-aġent kontinwament jirrapporta lill-kaptan dwar bidliet fl-istat kemm tal-magna minion kif ukoll tal-kontenituri li jaħdmu fuqha.

Allokazzjoni tar-Riżorsi

Issa ejja nħarsu lejn il-problema ta 'allokazzjoni ta' riżorsi aktar kumplessi għal ħafna minions.

Riżorsa tal-kompjuter f'sħaba waħda hija:

  • L-ammont ta 'enerġija tal-proċessur ikkunsmat minn kompitu speċifiku.
  • L-ammont ta 'memorja disponibbli għall-kompitu.
  • Traffiku tan-netwerk. Kull wieħed mill-minions għandu interface tan-netwerk speċifiku b'bandwidth limitat, għalhekk huwa impossibbli li jitqassmu l-kompiti mingħajr ma jitqies l-ammont ta 'dejta li jittrasmettu fuq in-netwerk.
  • Diski. Barra minn hekk, ovvjament, għall-ispazju għal dawn il-kompiti, nallokaw ukoll it-tip ta 'disk: HDD jew SSD. Id-diski jistgħu jservu numru finit ta' talbiet kull sekonda - IOPS. Għalhekk, għal kompiti li jiġġeneraw aktar IOPS milli disk wieħed jista 'jimmaniġġja, aħna nallokaw ukoll "magħżel" - jiġifieri, apparati tad-disk li għandhom ikunu riżervati esklussivament għall-kompitu.

Imbagħad għal xi servizz, pereżempju għal user-cache, nistgħu nirreġistraw ir-riżorsi kkunsmati b'dan il-mod: 400 core tal-proċessur, 2,5 TB ta 'memorja, 50 Gbit/s traffiku fiż-żewġ direzzjonijiet, 6 TB ta' spazju HDD li jinsab fuq 100 magħżel . Jew f'forma aktar familjari bħal din:

alloc:
    cpu: 400
    mem: 2500
    lan_in: 50g
    lan_out: 50g
    hdd:100x6T

Ir-riżorsi tas-servizz tal-cache tal-utent jikkunsmaw biss porzjon tar-riżorsi kollha disponibbli fl-infrastruttura tal-produzzjoni. Għalhekk, irrid niżgura li f'daqqa waħda, minħabba żball tal-operatur jew le, il-cache tal-utent ma jikkonsmax aktar riżorsi milli huma allokati lilha. Jiġifieri rridu nillimitaw ir-riżorsi. Imma ma’ xiex nistgħu norbtu l-kwota?

Ejja nerġgħu lura għad-dijagramma simplifikata ħafna tagħna ta 'l-interazzjoni tal-komponenti u iġbedha b'aktar dettalji - bħal dan:

One-cloud - data center level OS f'Odnoklassniki

Dak li jġiblek għajnejk:

  • Il-frontend tal-web u l-mużika jużaw clusters iżolati tal-istess server tal-applikazzjoni.
  • Nistgħu niddistingwu s-saffi loġiċi li jappartjenu għalihom dawn il-clusters: fronts, caches, ħażna tad-dejta u saff ta 'ġestjoni.
  • Il-frontend huwa eteroġenju; jikkonsisti f'sottosistemi funzjonali differenti.
  • Il-caches jistgħu wkoll ikunu mferrxa madwar is-subsistema li d-data tagħha huma cache.

Ejja nerġgħu nġibu l-istampa:

One-cloud - data center level OS f'Odnoklassniki

Bah! Iva, naraw ġerarkija! Dan ifisser li tista 'tqassam ir-riżorsi f'biċċiet akbar: tassenja żviluppatur responsabbli għal nodu ta' din il-ġerarkija li jikkorrispondi għas-subsistema funzjonali (bħal "mużika" fl-istampa), u ehmeż kwota mal-istess livell tal-ġerarkija. Din il-ġerarkija tippermettilna wkoll norganizzaw is-servizzi b'mod aktar flessibbli għal ġestjoni faċli. Pereżempju, naqsmu l-web kollha, peress li dan huwa grupp kbir ħafna ta 'servers, f'diversi gruppi iżgħar, murija fl-istampa bħala group1, group2.

Billi tneħħi l-linji żejda, nistgħu niktbu kull node tal-istampa tagħna f'forma aktar fissa: group1.web.front, api.music.front, user-cache.cache.

Dan huwa kif naslu għall-kunċett ta '"kju ġerarkiku". Għandu isem bħal "group1.web.front". Kwota għar-riżorsi u d-drittijiet tal-utent hija assenjata lilha. Aħna se nagħtu lill-persuna minn DevOps id-drittijiet biex tibgħat servizz lill-kju, u impjegat bħal dan jista 'jniedi xi ħaġa fil-kju, u l-persuna minn OpsDev se jkollha drittijiet ta' amministrazzjoni, u issa tista 'timmaniġġja l-kju, tassenja nies hemmhekk, agħti dawn in-nies drittijiet, eċċ. Servizzi li jaħdmu fuq dan il-kju se jaħdmu fi ħdan il-kwota tal-kju. Jekk il-kwota tal-kompjuters tal-kju ma tkunx biżżejjed biex tesegwixxi s-servizzi kollha f'daqqa, allura dawn jiġu esegwiti b'mod sekwenzjali, u b'hekk jiffurmaw il-kju innifsu.

Ejja nagħtu ħarsa aktar mill-qrib lejn is-servizzi. Servizz għandu isem ikkwalifikat għal kollox, li dejjem jinkludi l-isem tal-kju. Imbagħad is-servizz tal-web ta 'quddiem ikollu l-isem ok-web.group1.web.front. U s-servizz tas-server tal-applikazzjoni li jaċċessa se jissejjaħ ok-app.group1.web.front. Kull servizz għandu manifest, li jispeċifika l-informazzjoni kollha meħtieġa għat-tqegħid fuq magni speċifiċi: kemm dan il-kompitu jikkonsma riżorsi, liema konfigurazzjoni hija meħtieġa għaliha, kemm għandu jkun hemm repliki, proprjetajiet għall-immaniġġjar ta 'fallimenti ta' dan is-servizz. U wara li s-servizz jitqiegħed direttament fuq il-magni, jidhru l-istanzi tiegħu. Huma wkoll imsemmija mingħajr ambigwità - bħala n-numru tal-istanza u l-isem tas-servizz: 1.ok-web.group1.web.front, 2.ok-web.group1.web.front, …

Dan huwa konvenjenti ħafna: billi nħarsu biss lejn l-isem tal-kontenitur li qed jaħdem, nistgħu immedjatament insiru nafu ħafna.

Issa ejja nagħtu ħarsa aktar mill-qrib lejn dak li attwalment iwettqu dawn l-istanzi: kompiti.

Klassijiet tal-Iżolament tal-Kompitu

Il-kompiti kollha f'OK (u, probabbilment, kullimkien) jistgħu jinqasmu fi gruppi:

  • Ħidmiet ta' Latenza Qasira - prod. Għal kompiti u servizzi bħal dawn, id-dewmien tar-rispons (latenza) huwa importanti ħafna, kemm se tiġi pproċessata malajr kull rikjesta mis-sistema. Eżempji ta’ kompiti: faċċati tal-web, caches, servers tal-applikazzjonijiet, ħażna OLTP, eċċ.
  • Problemi ta' kalkolu - lott. Hawnhekk, il-veloċità tal-ipproċessar ta 'kull talba speċifika mhix importanti. Għalihom, huwa importanti kemm se jagħmel dan il-kompitu kalkoli f'ċertu perjodu (twil) ta 'żmien (throughput). Dawn se jkunu kwalunkwe kompiti ta 'MapReduce, Hadoop, tagħlim bil-magni, statistika.
  • Ħidmiet fl-isfond - idle. Għal kompiti bħal dawn, la latency u lanqas throughput m'huma importanti ħafna. Dan jinkludi diversi testijiet, migrazzjonijiet, kalkolu mill-ġdid, u konverżjoni tad-dejta minn format għal ieħor. Min-naħa l-waħda, huma simili għal dawk ikkalkulati, min-naħa l-oħra, ma tantx jimpurtah għalina kemm jitlestew malajr.

Ejja naraw kif kompiti bħal dawn jikkunsmaw ir-riżorsi, pereżempju, il-proċessur ċentrali.

Ħidmiet ta' dewmien qasir. Kompitu bħal dan ikollu mudell ta' konsum tas-CPU simili għal dan:

One-cloud - data center level OS f'Odnoklassniki

Tiġi riċevuta talba mill-utent għall-ipproċessar, il-kompitu jibda juża l-qlub kollha tas-CPU disponibbli, jipproċessaha, jirritorna tweġiba, jistenna t-talba li jmiss u jieqaf. Waslet it-talba li jmiss - għal darb'oħra għażilna dak kollu li kien hemm, ikkalkulewh, u qed nistennew dik li jmiss.

Biex niggarantixxu l-latenza minima għal tali kompitu, irridu nieħdu r-riżorsi massimi li tikkonsma u nirriżervaw in-numru meħtieġ ta 'qlub fuq il-minion (il-magna li se tesegwixxi l-kompitu). Imbagħad il-formula ta 'riżerva għall-problema tagħna tkun kif ġej:

alloc: cpu = 4 (max)

u jekk għandna magna minion b'16-il qalba, allura eżattament erba 'kompiti bħal dawn jistgħu jitqiegħdu fuqha. Aħna ninnotaw b'mod speċjali li l-konsum medju tal-proċessur ta 'dawn il-kompiti ħafna drabi huwa baxx ħafna - li huwa ovvju, peress li parti sinifikanti tal-ħin il-kompitu jistenna għal talba u ma jagħmel xejn.

Ħidmiet ta' kalkolu. Il-mudell tagħhom se jkun kemmxejn differenti:

One-cloud - data center level OS f'Odnoklassniki

Il-konsum medju tar-riżorsi tas-CPU għal kompiti bħal dawn huwa pjuttost għoli. Ħafna drabi rridu li kompitu ta 'kalkolu jitlesta f'ċertu ammont ta' żmien, għalhekk irridu nirriservaw in-numru minimu ta 'proċessuri li jeħtieġ sabiex il-kalkolu kollu jitlesta fi żmien aċċettabbli. Il-formula tar-riżerva tagħha tidher bħal din:

alloc: cpu = [1,*)

"Jekk jogħġbok poġġiha fuq minion fejn hemm mill-inqas qalba waħda ħielsa, u mbagħad kemm hemm, se devory kollox."

Hawnhekk l-effiċjenza tal-użu hija diġà ħafna aħjar milli fuq kompiti b'dewmien qasir. Iżda l-qligħ se jkun ħafna akbar jekk tgħaqqad iż-żewġ tipi ta 'kompiti fuq magna waħda minion u tqassam ir-riżorsi tagħha fuq il-go. Meta kompitu b'dewmien qasir jeħtieġ proċessur, jirċevih immedjatament, u meta r-riżorsi ma jibqgħux meħtieġa, huma trasferiti għall-kompitu komputazzjonali, jiġifieri xi ħaġa bħal din:

One-cloud - data center level OS f'Odnoklassniki

Imma kif tagħmel dan?

L-ewwel, ejja nħarsu lejn prod u alloc tiegħu: cpu = 4. Għandna bżonn nirriżervaw erba 'qlub. F'Docker run dan jista' jsir b'żewġ modi:

  • B'għażla --cpuset=1-4, jiġifieri talloka erba 'qlub speċifiċi fuq il-magna għall-kompitu.
  • Uża --cpuquota=400_000 --cpuperiod=100_000, tassenja kwota għall-ħin tal-proċessur, jiġifieri indika li kull 100 ms ta 'ħin reali l-kompitu jikkonsma mhux aktar minn 400 ms ta' ħin tal-proċessur. L-istess erba 'qlub huma miksuba.

Imma liema minn dawn il-metodi huwa adattat?

cpuset jidher pjuttost attraenti. Il-kompitu għandu erba 'qlub iddedikati, li jfisser li l-caches tal-proċessuri se jaħdmu bl-aktar mod effiċjenti possibbli. Dan għandu wkoll żvantaġġ: ikollna nieħdu l-kompitu li nqassmu l-kalkoli fuq il-qlub mhux mgħobbija tal-magna minflok l-OS, u dan huwa kompitu pjuttost mhux trivjali, speċjalment jekk nippruvaw inpoġġu kompiti tal-lott fuq tali. magna. It-testijiet urew li l-għażla bi kwota hija aktar adattata hawnhekk: b'dan il-mod is-sistema operattiva għandha aktar libertà fl-għażla tal-qalba biex twettaq il-kompitu fil-mument attwali u l-ħin tal-proċessur jitqassam b'mod aktar effiċjenti.

Ejja nsemmu kif tagħmel riżervi f'Docker ibbażati fuq in-numru minimu ta 'cores. Il-kwota għall-kompiti tal-lott m'għadhiex applikabbli, minħabba li m'hemmx bżonn li jiġi limitat il-massimu, huwa biżżejjed li tiggarantixxi biss il-minimu. U hawn l-għażla taqbel sew docker run --cpushares.

Aħna qbilna li jekk lott jeħtieġ garanzija għal mill-inqas qalba waħda, allura nindikaw --cpushares=1024, u jekk hemm mill-inqas żewġ qlub, allura nindikaw --cpushares=2048. L-ishma tas-Cpu ma jinterferixxu bl-ebda mod mad-distribuzzjoni tal-ħin tal-proċessur sakemm ikun hemm biżżejjed minnu. Għalhekk, jekk prod bħalissa mhux qed juża l-erba 'qlub tiegħu, m'hemm xejn li jillimita l-kompiti tal-lott, u jistgħu jużaw ħin addizzjonali tal-proċessur. Iżda f'sitwazzjoni fejn ikun hemm nuqqas ta 'proċessuri, jekk prod ikun ikkonsma l-erba' qlub tiegħu u jkun laħaq il-kwota tiegħu, il-ħin tal-proċessur li jifdal jinqasam proporzjonalment għal cpushares, jiġifieri f'sitwazzjoni ta 'tliet cores ħielsa, wieħed ikun jingħata għal kompitu b'1024 cpushares, u t-tnejn li jifdal se jingħataw għal kompitu b'2048 cpushares.

Iżda l-użu tal-kwota u l-ishma mhuwiex biżżejjed. Irridu niżguraw li kompitu b'dewmien qasir jirċievi prijorità fuq kompitu tal-lott meta jalloka l-ħin tal-proċessur. Mingħajr tali prijoritizzazzjoni, il-kompitu tal-lott se jieħu l-ħin kollu tal-proċessur fil-mument meta jkun meħtieġ mill-prod. M'hemm l-ebda għażliet ta 'prijoritizzazzjoni tal-kontejners fid-Docker run, iżda l-politiki tal-iskedar tas-CPU Linux huma utli. Tista 'taqra dwarhom fid-dettall hawn, u fil-qafas ta’ dan l-artiklu se ngħadduhom fil-qosor:

  • SCHED_OTHER
    B'mod awtomatiku, il-proċessi kollha tal-utent normali fuq magna Linux jirċievu.
  • SCHED_BATCH
    Iddisinjat għal proċessi li jużaw ħafna riżorsi. Meta titqiegħed kompitu fuq proċessur, tiġi introdotta l-hekk imsejħa penali ta' attivazzjoni: biċċa xogħol bħal din hija inqas probabbli li tirċievi riżorsi tal-proċessur jekk bħalissa qed tintuża minn kompitu ma' SCHED_OTHER
  • SCHED_IDLE
    Proċess fl-isfond bi prijorità baxxa ħafna, saħansitra inqas minn sbieħ -19. Aħna nużaw il-librerija open source tagħna one-nio, sabiex tiġi stabbilita l-politika meħtieġa meta tibda l-kontenitur billi ċċempel

one.nio.os.Proc.sched_setscheduler( pid, Proc.SCHED_IDLE )

Imma anki jekk ma tipprogrammax f'Java, l-istess ħaġa tista' ssir bl-użu tal-kmand chrt:

chrt -i 0 $pid

Ejja nġabru fil-qosor il-livelli kollha ta 'iżolament tagħna f'tabella waħda għaċ-ċarezza:

Klassi ta 'insulazzjoni
Alloc eżempju
Għażliet ta' tmexxija ta' Docker
sched_setscheduler chrt*

Prod
CPU = 4
--cpuquota=400000 --cpuperiod=100000
SCHED_OTHER

Lott
Cpu = [1, *)
--cpushares=1024
SCHED_BATCH

Inattiv
Cpu= [2, *)
--cpushares=2048
SCHED_IDLE

*Jekk qed tagħmel chrt minn ġewwa kontenitur, jista 'jkollok bżonn il-kapaċità sys_nice, għaliex b'mod awtomatiku Docker ineħħi din il-kapaċità meta tibda l-kontenitur.

Iżda l-kompiti jikkunsmaw mhux biss il-proċessur, iżda wkoll it-traffiku, li jaffettwa l-latency ta 'kompitu tan-netwerk saħansitra aktar mill-allokazzjoni żbaljata tar-riżorsi tal-proċessur. Għalhekk, irridu naturalment niksbu eżattament l-istess stampa għat-traffiku. Jiġifieri, meta kompitu prod jibgħat xi pakketti lin-netwerk, aħna nillimitaw il-veloċità massima (formula alloc: lan=[*,500mbps) ), li biha prod jista' jagħmel dan. U għal lott niggarantixxu biss il-fluss minimu, iżda ma nillimitawx il-massimu (formula alloc: lan=[10Mbps,*) ) F'dan il-każ, it-traffiku tal-prodott għandu jirċievi prijorità fuq il-kompiti tal-lott.
Hawnhekk Docker m'għandux primittivi li nistgħu nużaw. Imma tiġi għall-għajnuna tagħna Kontroll tat-Traffiku Linux. Irnexxielna niksbu r-riżultat mixtieq bl-għajnuna tad-dixxiplina Kurva Ġerarkika tas-Servizz Ġust. Bl-għajnuna tagħha, aħna niddistingwu żewġ klassijiet ta 'traffiku: prod ta' prijorità għolja u lott/idle ta 'prijorità baxxa. Bħala riżultat, il-konfigurazzjoni għat-traffiku ħerġin hija bħal din:

One-cloud - data center level OS f'Odnoklassniki

hawn 1:0 huwa l-"qdisc għerq" tad-dixxiplina tal-hsfc; 1:1 - klassi child hsfc b'limitu ta' bandwidth totali ta' 8 Gbit/s, li taħtha jitqiegħdu l-klassijiet child tal-kontenituri kollha; 1:2 - il-klassi tat-tfal hsfc hija komuni għall-kompiti kollha tal-lott u inattivi b'limitu "dinamiku", li huwa diskuss hawn taħt. Il-bqija tal-klassijiet tat-tfal hsfc huma klassijiet iddedikati għal kontenituri prod li bħalissa qed jaħdmu b'limiti li jikkorrispondu mal-manifesti tagħhom - 450 u 400 Mbit/s. Kull klassi hsfc hija assenjata qdisc queue fq jew fq_codel, skont il-verżjoni tal-kernel tal-Linux, biex jiġi evitat it-telf tal-pakketti waqt il-fqigħ tat-traffiku.

Tipikament, tc dixxiplini jservu biex jipprijoritizzaw biss it-traffiku ħerġin. Imma rridu nipprijoritizzaw ukoll it-traffiku li jkun dieħel - wara kollox, xi kompitu tal-lott jista 'faċilment jagħżel il-kanal kollu li jkun dieħel, li jirċievi, pereżempju, lott kbir ta' dejta ta 'input għall-mappa u tnaqqas. Għal dan nużaw il-modulu ifb, li joħloq interface virtwali ifbX għal kull interface tan-netwerk u jidderieġi mill-ġdid it-traffiku li jkun dieħel mill-interface għat-traffiku ħerġin fuq ifbX. Barra minn hekk, għal ifbX, l-istess dixxiplini kollha jaħdmu biex jikkontrollaw it-traffiku ħerġin, li għalih il-konfigurazzjoni tal-hsfc tkun simili ħafna:

One-cloud - data center level OS f'Odnoklassniki

Matul l-esperimenti, sibna li l-hsfc juri l-aħjar riżultati meta l-klassi 1:2 ta 'lott mhux prijoritarju/traffiku idle hija limitata fuq magni minion għal mhux aktar minn ċertu korsija ħielsa. Inkella, it-traffiku mhux prijoritarju għandu impatt wisq fuq il-latenza tal-kompiti tal-prod. miniond jiddetermina l-ammont attwali ta 'bandwidth b'xejn kull sekonda, u jkejjel il-konsum medju tat-traffiku tal-prod-tasks kollha ta' minion partikolari One-cloud - data center level OS f'Odnoklassniki u tnaqqasha mill-bandwidth tal-interface tan-netwerk One-cloud - data center level OS f'Odnoklassniki b'marġni żgħir, i.e.

One-cloud - data center level OS f'Odnoklassniki

Il-meded huma definiti b'mod indipendenti għat-traffiku deħlin u ħerġin. U skont il-valuri l-ġodda, miniond jikkonfigura mill-ġdid il-limitu tal-klassi mhux ta 'prijorità 1:2.

Għalhekk, implimentajna t-tliet klassijiet ta 'iżolament: prod, batch u idle. Dawn il-klassijiet jinfluwenzaw ħafna l-karatteristiċi tal-prestazzjoni tal-kompiti. Għalhekk, iddeċidejna li npoġġu dan l-attribut fil-quċċata tal-ġerarkija, sabiex meta nħarsu lejn l-isem tal-kju ġerarkiku jkun immedjatament ċar dak li qed nittrattaw:

One-cloud - data center level OS f'Odnoklassniki

Il-ħbieb tagħna kollha -web и mużika il-faċċati mbagħad jitqiegħdu fil-ġerarkija taħt prod. Pereżempju, taħt lott, ejja npoġġu s-servizz katalgu tal-mużika, li perjodikament jiġbor katalgu ta' binarji minn sett ta' fajls mp3 imtella' fuq Odnoklassniki. Eżempju ta' servizz taħt idle ikun transformer tal-mużika, li jinnormalizza l-livell tal-volum tal-mużika.

Bil-linji żejda mneħħija mill-ġdid, nistgħu niktbu l-ismijiet tas-servizz tagħna aktar ċatti billi nżidu l-klassi tal-iżolament tal-kompiti fl-aħħar tal-isem sħiħ tas-servizz: web.front.prod, katalogu.mużika.lott, transformer.music.idle.

U issa, meta nħarsu lejn l-isem tas-servizz, nifhmu mhux biss x'funzjoni jwettaq, iżda wkoll il-klassi ta 'iżolament tiegħu, li tfisser il-kritiċità tiegħu, eċċ.

Kollox huwa kbir, imma hemm verità waħda morra. Huwa impossibbli li jiġu iżolati kompletament il-kompiti li jaħdmu fuq magna waħda.

Dak li rnexxielna niksbu: jekk il-lott jikkonsma b'mod intensiv biss Ir-riżorsi tas-CPU, allura l-iskedar tas-CPU Linux integrat jagħmel xogħolha tajjeb ħafna, u prattikament m'hemm l-ebda impatt fuq il-kompitu tal-prod. Imma jekk dan il-kompitu tal-lott jibda jaħdem b'mod attiv bil-memorja, allura l-influwenza reċiproka diġà tidher. Dan jiġri minħabba li l-kompitu tal-prod huwa "maħsul" mill-caches tal-memorja tal-proċessur - bħala riżultat, il-cache missijiet jiżdiedu, u l-proċessur jipproċessa l-kompitu tal-prod aktar bil-mod. Tali kompitu tal-lott jista 'jżid il-latency tal-kontenitur tal-prod tipiku tagħna b'10%.

L-iżolament tat-traffiku huwa saħansitra aktar diffiċli minħabba l-fatt li l-karti tan-netwerk moderni għandhom kju intern ta 'pakketti. Jekk il-pakkett mill-kompitu tal-lott jasal hemm l-ewwel, allura jkun l-ewwel li jiġi trażmess fuq il-kejbil, u ma jista 'jsir xejn dwaru.

Barra minn hekk, s'issa rnexxielna nsolvu biss il-problema tal-prijoritizzazzjoni tat-traffiku TCP: l-approċċ hsfc ma jaħdimx għall-UDP. U anke fil-każ tat-traffiku TCP, jekk il-kompitu tal-lott jiġġenera ħafna traffiku, dan jagħti wkoll madwar 10% żieda fid-dewmien tal-kompitu prod.

tolleranza għall-ħsarat

Wieħed mill-għanijiet meta jiġi żviluppat sħab wieħed kien li tittejjeb it-tolleranza tal-ħsarat ta 'Odnoklassniki. Għalhekk, imbagħad nixtieq nikkunsidra f'aktar dettall xenarji possibbli ta 'fallimenti u inċidenti. Nibdew b'xenarju sempliċi - falliment tal-kontejner.

Il-kontenitur innifsu jista 'jfalli f'diversi modi. Dan jista 'jkun xi tip ta' esperiment, bug jew żball fil-manifest, li minħabba fih il-kompitu prod jibda jikkonsma aktar riżorsi milli indikat fil-manifest. Kellna każ: żviluppatur implimenta algoritmu kumpless wieħed, ħadem mill-ġdid ħafna drabi, ħaseb iżżejjed u tant sar konfuż li fl-aħħar mill-aħħar il-problema daħlet f'linja mhux trivjali ħafna. U peress li l-kompitu tal-prod għandu prijorità ogħla mill-oħrajn kollha fuq l-istess minions, beda jikkonsma r-riżorsi kollha tal-proċessur disponibbli. F'din is-sitwazzjoni, l-iżolament, jew aħjar il-kwota tal-ħin tas-CPU, salva l-ġurnata. Jekk kompitu jiġi allokat kwota, il-kompitu mhux se jikkonsma aktar. Għalhekk, lott u kompiti prod oħra li damu fuq l-istess magna ma ndunaw xejn.

It-tieni problema possibbli hija l-kontenitur li jaqa '. U hawn politiki tal-bidu mill-ġdid issalvana, kulħadd jafhom, Docker innifsu jagħmel xogħol tajjeb. Kważi l-kompiti kollha tal-prod għandhom politika ta' bidu mill-ġdid dejjem. Xi drabi nużaw on_failure għal kompiti tal-lott jew għad-debugging tal-kontenituri tal-prod.

X'tista' tagħmel jekk minion kollu ma jkunx disponibbli?

Ovvjament, ħaddem il-kontenitur fuq magna oħra. Il-parti interessanti hawnhekk hija x'jiġri mill-indirizz(i) IP assenjat(i) lill-kontenitur.

Nistgħu nassenjaw kontenituri l-istess indirizzi IP bħall-magni minion li fuqhom jaħdmu dawn il-kontenituri. Imbagħad, meta l-kontenitur jitnieda fuq magna oħra, l-indirizz IP tiegħu jinbidel, u l-klijenti kollha jridu jifhmu li l-kontenitur mexa, u issa jeħtieġ li jmorru f'indirizz differenti, li jeħtieġ servizz separat ta 'Sejbien ta' Servizz.

Servizz Discovery huwa konvenjenti. Hemm ħafna soluzzjonijiet fis-suq ta 'gradi varji ta' tolleranza għall-ħsarat għall-organizzazzjoni ta 'reġistru tas-servizz. Ħafna drabi tali soluzzjonijiet jimplimentaw loġika tal-bilanċjar tat-tagħbija, jaħżnu konfigurazzjoni addizzjonali fil-forma ta 'ħażna KV, eċċ.
Madankollu, nixtiequ nevitaw il-ħtieġa li jiġi implimentat reġistru separat, għaliex dan ikun ifisser li tiġi introdotta sistema kritika li tintuża mis-servizzi kollha fil-produzzjoni. Dan ifisser li dan huwa punt potenzjali ta 'falliment, u għandek bżonn tagħżel jew tiżviluppa soluzzjoni tolleranti ħafna għall-ħsarat, li ovvjament hija diffiċli ħafna, tieħu ħafna ħin u tiswa ħafna flus.

U żvantaġġ kbir ieħor: sabiex l-infrastruttura l-antika tagħna taħdem ma 'dik il-ġdida, ikollna nerġgħu niktbu l-kompiti assolutament kollha biex nużaw xi tip ta' sistema ta 'Sejbien ta' Servizz. Hemm ĦAFNA xogħol, u f'xi postijiet huwa kważi impossibbli meta niġu għal apparati ta 'livell baxx li jaħdmu fil-livell tal-kernel tal-OS jew direttament mal-hardware. Implimentazzjoni ta 'din il-funzjonalità bl-użu ta' mudelli ta 'soluzzjoni stabbiliti, bħal side-car ikun ifisser f'xi postijiet tagħbija addizzjonali, f'oħrajn - kumplikazzjoni ta 'operazzjoni u xenarji ta' falliment addizzjonali. Ma ridniex nikkomplikaw l-affarijiet, għalhekk iddeċidejna li nagħmlu l-użu ta’ Service Discovery mhux obbligatorju.

F'sħaba waħda, l-IP isegwi l-kontenitur, jiġifieri kull istanza ta 'kompitu għandha l-indirizz IP tagħha stess. Dan l-indirizz huwa "statiku": huwa assenjat għal kull istanza meta s-servizz jintbagħat għall-ewwel darba lill-cloud. Jekk servizz kellu numru differenti ta' każijiet matul il-ħajja tiegħu, allura fl-aħħar jiġi assenjat indirizzi IP daqs kemm kien hemm każijiet massimi.

Sussegwentement, dawn l-indirizzi ma jinbidlux: huma assenjati darba u jibqgħu jeżistu matul il-ħajja tas-servizz fil-produzzjoni. L-indirizzi IP isegwu kontenituri madwar in-netwerk. Jekk il-kontenitur jiġi trasferit għal minion ieħor, allura l-indirizz se jsegwih.

Għalhekk, l-immappjar ta 'isem ta' servizz mal-lista tiegħu ta 'indirizzi IP jinbidel rari ħafna. Jekk terġa' tħares lejn l-ismijiet tal-istanzi tas-servizz li semmejna fil-bidu tal-artiklu (1.ok-web.group1.web.front.prod, 2.ok-web.group1.web.front.prod, …), se nindunaw li jixbħu l-FQDNs użati fid-DNS. Hekk hu, biex nimmappjaw l-ismijiet tal-istanzi tas-servizz mal-indirizzi IP tagħhom, nużaw il-protokoll DNS. Barra minn hekk, dan id-DNS jirritorna l-indirizzi IP riżervati kollha tal-kontenituri kollha - kemm qed jaħdmu kif ukoll waqfien (ejja ngħidu li jintużaw tliet repliki, u għandna ħames indirizzi riservati hemmhekk - il-ħamsa kollha se jiġu rritornati). Il-klijenti, wara li rċevew din l-informazzjoni, se jippruvaw jistabbilixxu konnessjoni mal-ħames repliki kollha - u b'hekk jiddeterminaw dawk li qed jaħdmu. Din l-għażla biex tiġi determinata d-disponibbiltà hija ħafna aktar affidabbli; ma tinvolvix la DNS u lanqas Service Discovery, li jfisser li m'hemm l-ebda problemi diffiċli biex issolvi biex tiġi żgurata r-rilevanza tal-informazzjoni u t-tolleranza tal-ħsarat ta 'dawn is-sistemi. Barra minn hekk, f'servizzi kritiċi li fuqhom tiddependi l-operat tal-portal kollu, ma nistgħux nużaw id-DNS xejn, iżda sempliċement nidħlu indirizzi IP fil-konfigurazzjoni.

L-implimentazzjoni ta' tali trasferiment tal-IP wara kontenituri tista' ma tkunx trivjali - u se nħarsu lejn kif taħdem bl-eżempju li ġej:

One-cloud - data center level OS f'Odnoklassniki

Ejja ngħidu li l-kaptan ta 'sħab wieħed jagħti l-kmand lill-minion M1 biex jaħdem 1.ok-web.group1.web.front.prod bl-indirizz 1.1.1.1. Jaħdem fuq minion GĦASAFAR, li tirreklama dan l-indirizz lil servers speċjali riflettur tar-rotta. Dawn tal-aħħar għandhom sessjoni BGP mal-ħardwer tan-netwerk, li fiha tiġi tradotta r-rotta tal-indirizz 1.1.1.1 fuq M1. M1 imexxi pakketti ġewwa l-kontenitur bl-użu tal-Linux. Hemm tliet servers tar-rifletturi tar-rotot, peress li din hija parti kritika ħafna tal-infrastruttura ta 'sħaba waħda - mingħajrhom, in-netwerk f'sħaba waħda ma jaħdimx. Aħna npoġġuhom fi xtillieri differenti, jekk possibbli jinsabu fi kmamar differenti taċ-ċentru tad-dejta, biex titnaqqas il-probabbiltà li t-tlieta li jfallu fl-istess ħin.

Issa nassumu li l-konnessjoni bejn il-kaptan ta 'sħab wieħed u l-minion M1 tintilef. Il-kaptan ta 'sħaba waħda issa se jaġixxi fuq is-suppożizzjoni li M1 falla kompletament. Jiġifieri, se jagħti l-kmand lill-minion M2 biex iniedi web.group1.web.front.prod bl-istess indirizz 1.1.1.1. Issa għandna żewġ rotot konfliġġenti fuq in-netwerk għal 1.1.1.1: fuq M1 u fuq M2. Sabiex insolvu kunflitti bħal dawn, nużaw il-Multi Exit Discriminator, li huwa speċifikat fit-tħabbira tal-BGP. Dan huwa numru li juri l-piż tar-rotta reklamata. Fost ir-rotot konfliġġenti, ir-rotta bil-valur MED aktar baxx se tintgħażel. Il-kaptan one-cloud jappoġġja MED bħala parti integrali tal-indirizzi IP tal-kontejners. Għall-ewwel darba, l-indirizz huwa miktub b'MED kbir biżżejjed = 1 000 000. Fis-sitwazzjoni ta 'tali trasferiment ta' kontenitur ta 'emerġenza, il-kaptan inaqqas il-MED, u M2 diġà se jirċievi l-kmand biex jirreklama l-indirizz 1.1.1.1 b'MED = 999 999. L-istanza li taħdem fuq M1 se tibqa 'f'dan il-każ m'hemm l-ebda konnessjoni, u d-destin ulterjuri tiegħu ftit jinteressana sakemm il-konnessjoni mal-kaptan tiġi restawrata, meta jitwaqqaf bħal tieħu qadima.

inċidenti

Is-sistemi kollha ta' ġestjoni taċ-ċentru tad-dejta dejjem jimmaniġġjaw fallimenti minuri b'mod aċċettabbli. L-overflow tal-kontenitur huwa n-norma kważi kullimkien.

Ejja nħarsu lejn kif nittrattaw emerġenza, bħal nuqqas ta 'enerġija f'kamra waħda jew aktar ta' ċentru tad-dejta.

Xi jfisser inċident għal sistema ta' ġestjoni ta' ċentru tad-dejta? L-ewwelnett, dan huwa falliment massiv ta 'darba ta' ħafna magni, u s-sistema ta 'kontroll teħtieġ li temigra ħafna kontenituri fl-istess ħin. Imma jekk id-diżastru huwa fuq skala kbira ħafna, allura jista 'jiġri li l-kompiti kollha ma jistgħux jerġgħu jiġu allokati lil minions oħra, minħabba li l-kapaċità tar-riżorsi taċ-ċentru tad-dejta tinżel taħt il-100% tat-tagħbija.

Ħafna drabi l-inċidenti jkunu akkumpanjati minn falliment tas-saff ta 'kontroll. Dan jista 'jiġri minħabba l-falliment tat-tagħmir tiegħu, iżda aktar spiss minħabba l-fatt li l-inċidenti ma jiġux ittestjati, u s-saff ta' kontroll innifsu jaqa 'minħabba t-tagħbija miżjuda.

X'tista' tagħmel dwar dan kollu?

Migrazzjonijiet tal-massa jfissru li hemm numru kbir ta’ attivitajiet, migrazzjonijiet, u skjeramenti li jseħħu fl-infrastruttura. Kull waħda mill-migrazzjoni tista' tieħu xi żmien meħtieġ biex twassal u tħoll immaġini tal-kontejners lil minions, tniedi u inizjalizza kontenituri, eċċ. Għalhekk, huwa mixtieq li kompiti aktar importanti jiġu mnedija qabel dawk inqas importanti.

Ejja nerġgħu nħarsu lejn il-ġerarkija tas-servizzi li aħna familjari magħha u nippruvaw niddeċiedu liema kompiti rridu nwettqu l-ewwel.

One-cloud - data center level OS f'Odnoklassniki

Naturalment, dawn huma l-proċessi li huma direttament involuti fl-ipproċessar tat-talbiet tal-utenti, jiġifieri prod. Nindikaw dan ma prijorità ta’ tqegħid — numru li jista' jiġi assenjat lill-kju. Jekk kju għandu prijorità ogħla, is-servizzi tiegħu jitqiegħdu l-ewwel.

Fuq prod nassenjaw prijoritajiet ogħla, 0; fuq il-lott - ftit aktar baxx, 100; fuq idle - saħansitra aktar baxxi, 200. Il-prijoritajiet huma applikati b'mod ġerarkiku. Il-kompiti kollha aktar baxxi fil-ġerarkija se jkollhom prijorità korrispondenti. Jekk irridu li l-caches ġewwa prod jiġu mnedija qabel il-frontends, allura aħna nassenjaw prijoritajiet għal cache = 0 u għal subqueues ta 'quddiem = 1. Jekk, pereżempju, irridu li l-portal prinċipali jitnieda mill-faċċati l-ewwel, u l-faċċata tal-mużika biss imbagħad, allura nistgħu nassenjaw prijorità aktar baxxa lil dan tal-aħħar - 10.

Il-problema li jmiss hija n-nuqqas ta' riżorsi. Allura, ammont kbir ta 'tagħmir, swali sħaħ taċ-ċentru tad-dejta, fallew, u nedejna mill-ġdid tant servizzi li issa m'hemmx biżżejjed riżorsi għal kulħadd. Trid tiddeċiedi liema kompiti tissagrifika sabiex iżżomm is-servizzi kritiċi ewlenin jaħdmu.

One-cloud - data center level OS f'Odnoklassniki

B'differenza mill-prijorità tat-tqegħid, ma nistgħux nissagrifikaw il-kompiti kollha tal-lott b'mod indiskriminat; xi wħud minnhom huma importanti għat-tħaddim tal-portal. Għalhekk, enfasizzajna separatament prijorità ta' preempzjoni ħidmiet. Meta jitqiegħed, kompitu ta 'prijorità ogħla jista' jipprevjeni, jiġifieri jwaqqaf, kompitu ta 'prijorità aktar baxxa jekk ma jkunx hemm aktar minions ħielsa. F'dan il-każ, kompitu bi prijorità baxxa probabbilment se jibqa 'mhux imqiegħed, jiġifieri mhux se jibqa' jkun hemm minion adattat għaliha b'riżorsi ħielsa biżżejjed.

Fil-ġerarkija tagħna, huwa sempliċi ħafna li tiġi speċifikata prijorità ta' preemption b'tali mod li l-kompiti tal-prod u tal-lott jipprevjenu jew iwaqqfu l-kompiti inattivi, iżda mhux lil xulxin, billi nispeċifikaw prijorità għal idle ugwali għal 200. Bħal fil-każ ta' prijorità ta' tqegħid, aħna jistgħu jużaw il-ġerarkija tagħna sabiex jiddeskrivu regoli aktar kumplessi. Pereżempju, ejja nindikaw li nissagrifikaw il-funzjoni tal-mużika jekk ma jkollniex biżżejjed riżorsi għall-portal tal-web prinċipali, billi nistabbilixxu l-prijorità għan-nodi korrispondenti aktar baxxi: 10.

Inċidenti DC sħaħ

Għaliex jista’ jfalli ċ-ċentru tad-dejta kollu? Element. Kien kariga tajba l-uragan affettwa x-xogħol taċ-ċentru tad-dejta. L-elementi jistgħu jitqiesu bħala nies bla dar li darba ħarqu l-ottika fil-manifold, u ċ-ċentru tad-dejta tilef kompletament il-kuntatt ma 'siti oħra. Il-kawża tal-falliment tista 'tkun ukoll fattur uman: l-operatur se joħroġ tali kmand li ċ-ċentru tad-dejta kollu jaqa'. Dan jista 'jiġri minħabba bug kbir. B'mod ġenerali, il-kollass taċ-ċentri tad-dejta mhuwiex komuni. Dan jiġri lilna darba kull ftit xhur.

U dan huwa dak li nagħmlu biex nipprevjenu lil xi ħadd milli jagħmel tweet #alive.

L-ewwel strateġija hija l-iżolament. Kull istanza ta 'sħaba waħda hija iżolata u tista' timmaniġġja magni f'ċentru tad-dejta wieħed biss. Jiġifieri, it-telf ta 'sħaba minħabba bugs jew kmandi mhux korretti tal-operatur huwa t-telf ta' ċentru tad-dejta wieħed biss. Aħna lesti għal dan: hemm politika ta’ redundancy fejn ir-repliki tal-applikazzjoni u d-dejta jinsabu fiċ-ċentri tad-dejta kollha. Aħna nużaw databases tolleranti għall-ħsarat u perjodikament nittestjaw għal fallimenti.
Peress li llum għandna erba 'ċentri tad-dejta, dan ifisser erba' każijiet separati, kompletament iżolati ta 'sħaba waħda.

Dan l-approċċ mhux biss jipproteġi kontra falliment fiżiku, iżda jista 'wkoll jipproteġi kontra żball tal-operatur.

X'jista' jsir aktar bil-fattur uman? Meta operatur jagħti lis-sħaba xi kmand stramb jew potenzjalment perikoluż, jista 'f'daqqa waħda jintalab isolvi problema żgħira biex jara kemm ħaseb tajjeb. Per eżempju, jekk dan huwa xi tip ta 'waqfien tal-massa ta' ħafna repliki jew sempliċiment kmand stramba - tnaqqas in-numru ta 'repliki jew tbiddel l-isem tal-immaġni, u mhux biss in-numru tal-verżjoni fil-manifest il-ġdid.

One-cloud - data center level OS f'Odnoklassniki

Riżultati ta '

Karatteristiċi distintivi ta' sħaba waħda:

  • Skema ta' ismijiet ġerarkika u viżwali għal servizzi u kontejners, li jippermettilek issib malajr ħafna x'inhu l-kompitu, x'għandu x'jaqsam ma' u kif jaħdem u min huwa responsabbli għalih.
  • Aħna napplikaw tagħna teknika li tgħaqqad il-prodott u l-lottkompiti fuq minions biex tittejjeb l-effiċjenza tal-qsim tal-magni. Minflok cpuset nużaw kwoti tas-CPU, ishma, politiki tal-iskedar tas-CPU u QoS tal-Linux.
  • Ma kienx possibbli li jiġu iżolati kompletament il-kontenituri li jaħdmu fuq l-istess magna, iżda l-influwenza reċiproka tagħhom tibqa’ fi ħdan 20%.
  • L-organizzazzjoni tas-servizzi f'ġerarkija tgħin bl-użu awtomatiku ta 'rkupru minn diżastri prijoritajiet ta' tqegħid u preemption.

FAQ

Għaliex ma ħadniex soluzzjoni lesta?

  • Klassijiet differenti ta 'iżolament tal-kompiti jeħtieġu loġika differenti meta jitqiegħdu fuq minions. Jekk il-kompiti tal-prod jistgħu jitqiegħdu billi sempliċiment jirriservaw ir-riżorsi, allura l-kompiti tal-lott u l-idle għandhom jitqiegħdu, li jsegwu l-użu attwali tar-riżorsi fuq il-magni minion.
  • Il-ħtieġa li jitqiesu r-riżorsi kkunsmati mill-kompiti, bħal:
    • bandwidth tan-netwerk;
    • tipi u “magħżel” ta’ diski.
  • Il-ħtieġa li jiġu indikati l-prijoritajiet tas-servizzi waqt ir-rispons ta 'emerġenza, id-drittijiet u l-kwoti tal-kmandi għar-riżorsi, li tiġi solvuta bl-użu ta' kjuwijiet ġerarkiċi f'sħaba waħda.
  • Il-ħtieġa li jkun hemm ismijiet umani tal-kontenituri biex jitnaqqas il-ħin ta 'rispons għal inċidenti u inċidenti
  • L-impossibbiltà ta' implimentazzjoni mifruxa ta' darba ta' Service Discovery; il-ħtieġa li teżisti għal żmien twil b'ħidmiet ospitati fuq hosts ta 'hardware - xi ħaġa li tissolva b'indirizzi IP "statiċi" li jsegwu kontenituri, u, bħala konsegwenza, il-ħtieġa għal integrazzjoni unika ma' infrastruttura ta 'netwerk kbir.

Dawn il-funzjonijiet kollha jkunu jeħtieġu modifiki sinifikanti ta 'soluzzjonijiet eżistenti biex ikunu adattati għalina, u, wara li vvalutajna l-ammont ta' xogħol, indunajna li nistgħu niżviluppaw is-soluzzjoni tagħna stess b'madwar l-istess spejjeż tax-xogħol. Iżda s-soluzzjoni tiegħek se tkun ħafna aktar faċli biex topera u tiżviluppa - ma fihiex astrazzjonijiet bla bżonn li jappoġġjaw funzjonalità li m'għandniex bżonn.

Lil dawk li jaqraw l-aħħar linji, grazzi tal-paċenzja u l-attenzjoni tagħkom!

Sors: www.habr.com

Żid kumment