Tupperware: il-qattiel ta' Kubernetes ta' Facebook?

Ġestjoni effiċjenti u affidabbli ta 'clusters fi kwalunkwe skala ma' Tupperware

Tupperware: il-qattiel ta' Kubernetes ta' Facebook?

Illum 'il quddiem Konferenza Systems@Scale introduċejna Tupperware, is-sistema tagħna ta 'ġestjoni tal-clusters li orkestra kontenituri fuq miljuni ta' servers li jħaddmu kważi s-servizzi kollha tagħna. L-ewwel użajna Tupperware fl-2011, u minn dak iż-żmien 'l hawn l-infrastruttura tagħna kibret ċentru tad-dejta 1 sa sħaħ 15-il ċentru tad-dejta ġeo distribwiti. Dan iż-żmien kollu, Tupperware ma waqafx u żviluppa magħna. Aħna ser nuruk kif Tupperware jipprovdi ġestjoni ta 'clusters tal-ewwel klassi, inkluż appoġġ konvenjenti għal servizzi stateful, pannell tal-kontroll wieħed għaċ-ċentri tad-dejta kollha, u l-abbiltà li tqassam il-kapaċità bejn is-servizzi f'ħin reali. Aħna ser naqsmu wkoll il-lezzjonijiet li tgħallimna hekk kif l-infrastruttura tagħna tevolvi.

Tupperware twettaq kompiti differenti. L-iżviluppaturi tal-applikazzjonijiet jużawha biex iwasslu u jimmaniġġjaw l-applikazzjonijiet. Jippakkja l-kodiċi tal-applikazzjoni u d-dipendenzi f'immaġni u jwassalha lis-servers bħala kontenituri. Il-kontenituri jipprovdu iżolament bejn l-applikazzjonijiet fuq l-istess server sabiex l-iżviluppaturi jittrattaw il-loġika tal-applikazzjoni u ma jkollhomx għalfejn joqogħdu jinkwetaw dwar li jsibu servers jew jimmaniġġjaw aġġornamenti. Tupperware jimmonitorja wkoll il-prestazzjoni tas-server, u jekk isib falliment, jittrasferixxi kontenituri mis-server problematiku.

L-inġiniera tal-ippjanar tal-kapaċità jużaw Tupperware biex jallokaw il-kapaċità tas-server lil timijiet ibbażati fuq il-baġit u r-restrizzjonijiet. Jużawha wkoll biex itejbu l-utilizzazzjoni tas-server. L-operaturi taċ-ċentru tad-dejta jirrikorru lejn Tupperware biex iqassmu sew il-kontenituri madwar iċ-ċentri tad-dejta u jwaqqfu jew iċċaqilqu l-kontenituri waqt il-manutenzjoni. Grazzi għal dan, iż-żamma ta 'servers, netwerks u tagħmir teħtieġ intervent uman minimu.

Arkitettura Tupperware

Tupperware: il-qattiel ta' Kubernetes ta' Facebook?

L-arkitettura Tupperware PRN hija waħda mir-reġjuni taċ-ċentri tad-dejta tagħna. Ir-reġjun jikkonsisti f'diversi bini taċ-ċentru tad-dejta (PRN1 u PRN2) li jinsabu fil-qrib. Qed nippjanaw li nagħmlu pannell tal-kontroll wieħed li jamministra s-servers kollha f'reġjun wieħed.

L-iżviluppaturi tal-applikazzjonijiet jagħtu servizzi fil-forma ta’ impjiegi Tupperware. Xogħol jikkonsisti minn kontenituri multipli, u kollha tipikament iħaddmu l-istess kodiċi ta 'applikazzjoni.

Tupperware huwa responsabbli għall-forniment tal-kontenituri u l-ġestjoni taċ-ċiklu tal-ħajja tagħhom. Tikkonsisti f'diversi komponenti:

  • Il-frontend Tupperware jipprovdi APIs għall-interface tal-utent, CLI, u għodod oħra ta 'awtomazzjoni li permezz tagħhom tista' tinteraġixxi ma 'Tupperware. Huma jaħbu l-istruttura interna kollha mis-sidien tal-impjiegi Tupperware.
  • Tupperware Scheduler huwa pannell tal-kontroll responsabbli għall-ġestjoni tal-kontenitur u ċ-ċiklu tal-ħajja tax-xogħol. Huwa skjerat fil-livelli reġjonali u globali, fejn l-iskedar reġjonali jamministra servers f'reġjun wieħed u l-iskedar globali jimmaniġġja servers minn reġjuni differenti. L-iskedar huwa maqsum fi shards, u kull shard tamministra sett ta 'impjiegi.
  • Il-Prokura Scheduler ta' Tupperware jaħbi t-tqattigħ intern u jipprovdi ħġieġa waħda konvenjenti għall-utenti ta' Tupperware.
  • L-allokatur Tupperware jassenja kontenituri lis-servers. L-iskeder jimmaniġġja l-waqfien, il-bidu, l-aġġornament u l-falliment tal-kontenituri. Bħalissa, allokatur wieħed jista 'jmexxi r-reġjun kollu mingħajr ma jinqasam fi frak. (Innota d-differenza fit-terminoloġija. Pereżempju, l-iskedar f'Tupperware jikkorrispondi mal-pannell tal-kontroll fi Kubernetes, u l-allokatur Tupperware jissejjaħ Scheduler f'Kubernetes.)
  • Is-sensar tar-riżorsi jaħżen is-sors tal-verità għas-server u l-avvenimenti tas-servizz. Aħna nħaddmu sensar tar-riżorsi wieħed għal kull ċentru tad-dejta, u jaħżen l-informazzjoni kollha dwar is-servers f'dak iċ-ċentru tad-dejta. Is-sensar tar-riżorsi u s-sistema ta' ġestjoni tal-kapaċità, jew is-sistema ta' forniment tar-riżorsi, jiddeċiedu b'mod dinamiku liema kunsinna tal-iskeduler tikkontrolla liema server. Is-servizz tal-kontroll tas-saħħa jimmonitorja s-servers u jaħżen data dwar is-saħħa tagħhom fis-sensar tar-riżorsi. Jekk server ikollu problemi jew jeħtieġ manutenzjoni, is-sensar tar-riżorsi jgħid lill-allokatur u lill-iskedar biex iwaqqaf il-kontenituri jew iċċaqlaqhom għal servers oħra.
  • It-Tupperware Agent huwa daemon li jaħdem fuq kull server li jieħu ħsieb il-forniment u t-tneħħija tal-kontenituri. L-applikazzjonijiet jimxu ġewwa kontenitur, li jagħtihom aktar iżolament u riproduċibbiltà. Fuq il-konferenza Systems @Scale tas-sena l-oħra Diġà ddeskrivejna kif jinħolqu kontenituri Tupperware individwali bl-użu ta’ immaġini, btrfs, cgroupv2 u systemd.

Karatteristiċi distintivi ta 'Tupperware

Tupperware huwa simili f'ħafna modi għal sistemi oħra ta 'ġestjoni ta' cluster bħal Kubernetes u Mesos, iżda hemm ukoll differenzi:

  • Appoġġ integrat għal servizzi stateful.
  • Pannell ta 'kontroll wieħed għal servers f'ċentri tad-dejta differenti biex awtomat il-kunsinna ta' kontenituri abbażi tal-intenzjoni, id-dekummissjonar ta 'clusters u l-manutenzjoni.
  • Diviżjoni ċara tal-pannell tal-kontroll għall-zoom.
  • Kompjuter elastiku jippermettilek tqassam l-enerġija bejn is-servizzi f'ħin reali.

Aħna żviluppajna dawn il-karatteristiċi friski biex nappoġġjaw varjetà ta' applikazzjonijiet mingħajr stat u b'istat tul flotta enormi ta' servers kondiviżi globali.

Appoġġ integrat għal servizzi stateful.

Tupperware topera varjetà ta’ servizzi kritiċi ta’ stat li jaħżnu dejta persistenti tal-prodott għal Facebook, Instagram, Messenger u WhatsApp. Dawn jistgħu jkunu ħażniet kbar ta’ pari ta’ valuri ewlenin (eż. ZippyDB) u repożitorji tad-dejta tal-monitoraġġ (pereżempju, ODS Gorilla и Scuba). Iż-żamma ta 'servizzi stateful mhix faċli, minħabba li s-sistema trid tiżgura li l-provvista ta' kontenituri tista 'tiflaħ tfixkil fuq skala kbira, inklużi qtugħ tan-netwerk jew qtugħ tad-dawl. U filwaqt li t-tekniki konvenzjonali, bħad-distribuzzjoni ta' kontenituri f'dominji ta' ħsara, jaħdmu tajjeb għal servizzi mingħajr stat, is-servizzi b'stat jeħtieġu appoġġ addizzjonali.

Pereżempju, jekk falliment tas-server jirrendi replika waħda tad-database mhux disponibbli, għandek tattiva manutenzjoni awtomatika li taġġorna l-qlub fuq 50 server minn ġabra ta' 10? Jiddependi mis-sitwazzjoni. Jekk wieħed minn dawn il-50 server għandu replika oħra tal-istess database, huwa aħjar li tistenna u ma titlefx 2 repliki f'daqqa. Sabiex nieħdu deċiżjonijiet b'mod dinamiku dwar il-manutenzjoni u l-prestazzjoni tas-sistema, neħtieġu informazzjoni dwar ir-replikazzjoni interna tad-dejta u l-loġika tat-tqegħid ta 'kull servizz stateful.

L-interface TaskControl jippermetti li servizzi stateful jinfluwenzaw deċiżjonijiet li jaffettwaw id-disponibbiltà tad-dejta. Bl-użu ta 'din l-interface, l-iskedar jinnotifika applikazzjonijiet esterni dwar l-operazzjonijiet tal-kontejners (startjar mill-ġdid, aġġornament, migrazzjoni, manutenzjoni). Servizz stateful jimplimenta kontrollur li jgħid lil Tupperware meta huwa sikur li twettaq kull operazzjoni, u dawn l-operazzjonijiet jistgħu jiġu skambjati jew ittardjati temporanjament. Fl-eżempju ta 'hawn fuq, il-kontrollur tad-database jista' jgħid lil Tupperware biex jaġġorna 49 mill-50 servers, iżda jħalli server speċifiku (X) waħdu għalissa. Bħala riżultat, jekk jgħaddi l-perjodu tal-aġġornament tal-qalba u d-database għadha ma tistax tirrestawra r-replika problematika, Tupperware xorta se taġġorna s-server X.

Tupperware: il-qattiel ta' Kubernetes ta' Facebook?

Ħafna servizzi stateful f'Tupperware jużaw TaskControl mhux direttament, iżda permezz ta 'ShardManager, pjattaforma komuni għall-ħolqien ta' servizzi stateful fuq Facebook. Ma 'Tupperware, l-iżviluppaturi jistgħu jispeċifikaw l-intenzjoni tagħhom għal eżattament kif il-kontenituri għandhom jitqassmu madwar iċ-ċentri tad-dejta. Bi ShardManager, l-iżviluppaturi jispeċifikaw l-intenzjoni tagħhom dwar kif il-frak tad-dejta għandhom jitqassmu fil-kontenituri. ShardManager huwa konxju tat-tqegħid tad-dejta u r-replikazzjoni tal-applikazzjonijiet tiegħu u jikkomunika ma 'Tupperware permezz tal-interface TaskControl biex jiskeda l-operazzjonijiet tal-kontejners mingħajr involviment dirett tal-applikazzjoni. Din l-integrazzjoni tissimplifika bil-kbir il-ġestjoni ta 'servizzi stateful, iżda TaskControl huwa kapaċi għal aktar. Pereżempju, il-livell tal-web estensiv tagħna huwa mingħajr stat u juża TaskControl biex jaġġusta b'mod dinamiku r-rata tal-aġġornamenti tal-kontenituri. Eventwalment il-livell tal-web huwa kapaċi jlesti malajr rilaxxi multipli tas-softwer kuljum mingħajr ma tiġi kompromessa d-disponibbiltà.

Ġestjoni ta' servers f'ċentri tad-dejta

Meta Tupperware tnieda għall-ewwel darba fl-2011, kull cluster tas-server kien immexxi minn scheduler separat. Dakinhar, raggruppament ta 'Facebook kien grupp ta' xtillieri ta 'server konnessi ma' swiċċ wieħed tan-netwerk, u ċ-ċentru tad-dejta kien fih diversi gruppi. L-iskedar seta' biss jimmaniġġja servers fi cluster wieħed, li jfisser li l-impjieg ma setax jinfirex fuq clusters multipli. L-infrastruttura tagħna kibret, aħna dejjem aktar ħassru raggruppamenti. Peress li Tupperware ma setax iċċaqlaq ix-xogħol mill-cluster dekummissjonat għal clusters oħra mingħajr bidliet, kien jeħtieġ ħafna sforz u koordinazzjoni bir-reqqa bejn l-iżviluppaturi tal-applikazzjoni u l-operaturi taċ-ċentru tad-dejta. Dan il-proċess irriżulta f’riżorsi moħlija meta s-servers kienu inattivi għal xhur sħaħ minħabba proċeduri ta’ dekummissjonar.

Ħloqna sensar tar-riżorsi biex issolvi l-problema tad-dekummissjonar tal-clusters u nikkoordina tipi oħra ta 'kompiti ta' manutenzjoni. Is-sensar tar-riżorsi jżomm kont tal-informazzjoni fiżika kollha assoċjata ma 'server u jiddeċiedi b'mod dinamiku liema scheduler jikkontrolla kull server. Li tgħaqqad b'mod dinamiku s-servers ma' schedulers jippermetti lis-scheduler jimmaniġġja servers f'ċentri tad-dejta differenti. Peress li xogħol Tupperware m'għadux limitat għal raggruppament wieħed, l-utenti ta 'Tupperware jistgħu jispeċifikaw kif il-kontenituri għandhom jitqassmu f'dominji ta' ħsara. Per eżempju, żviluppatur jista 'jiddikjara l-intenzjoni tiegħu (jiġifieri: "run ix-xogħol tiegħi fuq 2 dominji ta' ħsara fir-reġjun PRN") mingħajr ma jispeċifika żoni ta 'disponibbiltà speċifiċi. Tupperware innifsu se jsib servers adattati biex jimplimenta din l-intenzjoni, anke jekk il-cluster jew is-servizz jiġi dekummissjonat.

Skalabbli biex tappoġġja s-sistema globali kollha

Storikament, l-infrastruttura tagħna ġiet maqsuma f'mijiet ta 'pools ta' servers iddedikati għal timijiet individwali. Minħabba l-frammentazzjoni u n-nuqqas ta 'standards, kellna spejjeż operattivi għoljin, u servers idle kienu aktar diffiċli biex jerġgħu jintużaw. Fil-konferenza tas-sena l-oħra Sistemi @Scale ippreżentajna infrastruttura bħala servizz (IaaS), li għandha tgħaqqad l-infrastruttura tagħna f'park wieħed kbir ta 'server. Iżda park ta 'server wieħed għandu d-diffikultajiet tiegħu stess. Għandu jissodisfa ċerti rekwiżiti:

  • Skalabbiltà. L-infrastruttura tagħna kibret hekk kif żidna ċentri tad-dejta f'kull reġjun. Is-servers saru iżgħar u aktar effiċjenti fl-enerġija, għalhekk hemm ħafna aktar minnhom f'kull reġjun. Bħala riżultat, scheduler wieħed għal kull reġjun ma jistax jimmaniġġja n-numru ta 'kontenituri li jistgħu jitħaddmu fuq mijiet ta' eluf ta 'servers f'kull reġjun.
  • Affidabilità Anke jekk l-iskeder jista 'jiġi skalat daqshekk, l-ambitu kbir ta' l-iskedar ifisser li hemm riskju ogħla ta 'żbalji u reġjun sħiħ ta' kontenituri jista 'jsir inmaniġjabbli.
  • Tolleranza għall-ħsarat. F'każ ta' falliment kbir fl-infrastruttura (pereżempju, is-servers li jmexxu l-iskeduler ifallu minħabba falliment tan-netwerk jew qtugħ tad-dawl), il-konsegwenzi negattivi għandhom jaffettwaw biss porzjon tas-servers fir-reġjun.
  • Faċilità ta 'użu. Jista 'jidher li għandek bżonn tmexxi diversi schedulers indipendenti għal reġjun wieħed. Iżda minn perspettiva ta' konvenjenza, punt uniku ta' dħul f'pool kondiviż ta' reġjun jagħmilha aktar faċli biex jiġu mmaniġġjati l-kapaċità u l-impjiegi.

Qassamna l-ischeduler fi shards biex insolvu l-problemi taż-żamma ta 'pool kondiviż kbir. Kull shard Scheduler jimmaniġġja s-sett ta 'impjiegi tiegħu stess fir-reġjun, u dan inaqqas ir-riskju assoċjat mal-Scheduler. Hekk kif il-ġabra kondiviża tikber, nistgħu nżidu aktar shards Scheduler. Għall-utenti ta 'Tupperware, shards u prokuri tal-iskedar jidhru qishom pannell tal-kontroll wieħed. Huma m'għandhomx għalfejn jaħdmu ma 'mazz ta' shards li orkestraw il-kompiti. Shards Scheduler huma fundamentalment differenti mill-clusters schedulers li użajna qabel, meta l-pannell tal-kontroll kien maqsum mingħajr ma jaqsam b'mod statiku l-grupp kondiviż ta 'servers skont it-topoloġija tan-netwerk.

Ittejjeb l-Effiċjenza tal-Użu b'Kompjuter Elastiku

Iktar ma tkun kbira l-infrastruttura tagħna, iktar ikun importanti li nużaw is-servers tagħna b'mod effiċjenti biex nottimizzaw l-ispejjeż tal-infrastruttura u nnaqqsu t-tagħbija. Hemm żewġ modi kif tiżdied l-effiċjenza tal-użu tas-server:

  • Kompjuter elastiku - tnaqqas is-servizzi online waqt sigħat kwieti u uża servers meħlusa għal xogħol offline, bħal tagħlim bil-magni u impjiegi MapReduce.
  • Tagħbija żejda - Poġġi servizzi online u lottijiet ta' xogħol fuq l-istess servers sabiex lottijiet ta' xogħol jaħdmu bi prijorità baxxa.

Il-konġestjoni fiċ-ċentri tad-dejta tagħna hija Konsum tal-enerġija. Għalhekk, nippreferu servers żgħar u effiċjenti fl-enerġija li flimkien jipprovdu aktar saħħa tal-ipproċessar. Sfortunatament, fuq servers żgħar bi ftit CPU u memorja, it-tagħbija żejda hija inqas effettiva. Naturalment, nistgħu npoġġu diversi kontenituri ta 'servizzi żgħar fuq server wieħed żgħir effiċjenti fl-enerġija li jikkonsma ftit riżorsi u memorja tal-proċessur, iżda servizzi kbar se jkollhom prestazzjoni baxxa f'din is-sitwazzjoni. Għalhekk, aħna nagħtu parir lill-iżviluppaturi tas-servizzi kbar tagħna biex jottimizzawhom sabiex jużaw servers sħaħ.


Bażikament, intejbu l-effiċjenza fl-użu bl-użu tal-kompjuter elastiku. Ħafna mis-servizzi ewlenin tagħna, bħall-Feed tal-Aħbarijiet, il-karatteristika tal-Messaġġi, u l-livell tal-web front-end, ivarjaw skont il-ħin tal-ġurnata. Aħna intenzjonalment innaqqsu s-servizzi online waqt sigħat kwieti u nużaw servers meħlusa għal xogħol offline, bħal tagħlim bil-magni u impjiegi MapReduce.

Tupperware: il-qattiel ta' Kubernetes ta' Facebook?

Aħna nafu mill-esperjenza li huwa aħjar li tipprovdi servers sħaħ bħala unitajiet ta 'kapaċità elastika minħabba li servizzi kbar huma kemm donaturi ewlenin kif ukoll konsumaturi ewlenin ta' kapaċità elastika, u huma ottimizzati biex jużaw servers sħaħ. Meta s-server jinħeles mis-servizz onlajn waqt sigħat kwieti, is-sensar tar-riżorsi jikri s-server lill-iskeduler biex imexxi xogħol offline fuqu. Jekk is-servizz onlajn jesperjenza l-ogħla tagħbija, is-sensar tar-riżorsi malajr ifakkar is-server misluf u, flimkien ma 'l-iskeder, jirritornah lis-servizz online.

Lezzjonijiet meħuda u pjanijiet għall-futur

Matul l-aħħar 8 snin, ilna niżviluppaw Tupperware biex ilaħħqu mat-tkabbir mgħaġġel ta 'Facebook. Aħna naqsmu dak li tgħallimna u nittamaw li jgħin lil oħrajn jimmaniġġjaw infrastrutturi li qed jikbru malajr:

  • Stabbilixxi konnessjoni flessibbli bejn il-pannell tal-kontroll u s-servers li jamministra. Din il-flessibbiltà tippermetti lill-pannell tal-kontroll biex jimmaniġġja servers f'ċentri tad-dejta differenti, jgħin fl-awtomatizzazzjoni tad-dekummissjonar u l-manutenzjoni ta 'clusters, u jippermetti allokazzjoni dinamika tal-kapaċità bl-użu ta' komputazzjoni elastika.
  • B'pannell tal-kontroll wieħed fir-reġjun, isir aktar konvenjenti li taħdem mal-kompiti u aktar faċli biex timmaniġġja flotta kbira ta 'server kondiviż. Innota li l-pannell tal-kontroll iżomm punt wieħed tad-dħul, anki jekk l-istruttura interna tiegħu hija separata għal raġunijiet ta 'skala jew tolleranza għall-ħsarat.
  • Bl-użu ta 'mudell ta' plugin, il-pannell tal-kontroll jista 'jinnotifika applikazzjonijiet esterni ta' operazzjonijiet ta 'kontejners li jmiss. Barra minn hekk, is-servizzi stateful jistgħu jużaw l-interface tal-plugin biex jippersonalizzaw il-ġestjoni tal-kontejners. B'dan il-mudell ta 'plugin, il-pannell tal-kontroll jipprovdi sempliċità filwaqt li jservi b'mod effiċjenti ħafna servizzi differenti ta' stat.
  • Aħna nemmnu li l-informatika elastika, fejn nieħdu servers sħaħ mis-servizzi tad-donaturi għal impjiegi ta 'lott, tagħlim tal-magni, u servizzi oħra mhux urġenti, huwa l-aħjar mod biex tittejjeb l-effiċjenza ta' servers żgħar u effiċjenti fl-enerġija.

Għadna qed nibdew nimplimentaw flotta waħda ta' servers kondiviżi globali. Bħalissa madwar 20% tas-servers tagħna jinsabu f'pool kondiviż. Biex jinkiseb 100%, jeħtieġ li jiġu indirizzati ħafna kwistjonijiet, inkluż iż-żamma ta 'pool ta' ħażna kondiviż, l-awtomatizzazzjoni tal-manutenzjoni, il-ġestjoni tar-rekwiżiti bejn il-kerrejja, it-titjib tal-utilizzazzjoni tas-server, u t-titjib tal-appoġġ għall-tagħbija tax-xogħol tat-tagħlim tal-magni. Ma nistgħux nistennew li nieħdu dawn l-isfidi u naqsmu s-suċċessi tagħna.

Sors: www.habr.com

Żid kumment