Tupperware: Kubernetes morðingi Facebook?

Skilvirk og áreiðanleg stjórnun klasa á hvaða mælikvarða sem er með Tupperware

Tupperware: Kubernetes morðingi Facebook?

Í dag Systems @Scale ráðstefna við kynntum Tupperware, klasastjórnunarkerfið okkar sem skipuleggur gáma yfir milljónir netþjóna sem keyra næstum alla þjónustu okkar. Við settum Tupperware fyrst í notkun árið 2011 og síðan þá hafa innviðir okkar vaxið úr 1 gagnaver til heils 15 landfræðileg dreifð gagnaver. Allan þennan tíma stóð Tupperware ekki í stað og þróaðist með okkur. Við sýnum þér hvernig Tupperware veitir fyrsta flokks klasastjórnun, þar á meðal þægilegan stuðning fyrir staðbundna þjónustu, eitt stjórnborð fyrir allar gagnaver og getu til að dreifa getu milli þjónustu í rauntíma. Við munum einnig deila lærdómnum sem við höfum lært eftir því sem innviðir okkar þróast.

Tupperware sinnir mismunandi verkefnum. Forritaframleiðendur nota það til að afhenda og stjórna forritum. Það pakkar forritskóðanum og ósjálfstæði í mynd og afhendir það til netþjóna sem ílát. Gámar veita einangrun milli forrita á sama netþjóni þannig að forritarar takast á við rökfræði forritsins og þurfa ekki að hafa áhyggjur af því að finna netþjóna eða stjórna uppfærslum. Tupperware fylgist einnig með frammistöðu netþjónsins og ef hann finnur bilun flytur hann gáma frá vandamála netþjóninum.

Skipulagsverkfræðingar nota Tupperware til að úthluta getu netþjóna til teyma út frá fjárhagsáætlun og takmörkunum. Þeir nota það líka til að bæta nýtingu netþjóna. Rekstraraðilar gagnavera leita til Tupperware til að dreifa gámum á réttan hátt yfir gagnaver og stöðva eða færa gáma meðan á viðhaldi stendur. Þökk sé þessu þarf lágmarks mannleg íhlutun til að viðhalda netþjónum, netkerfum og búnaði.

Tupperware arkitektúr

Tupperware: Kubernetes morðingi Facebook?

Tupperware PRN arkitektúr er eitt af svæðum gagnavera okkar. Svæðið samanstendur af nokkrum byggingum gagnavera (PRN1 og PRN2) staðsettar í nágrenninu. Við ætlum að búa til eitt stjórnborð sem mun stjórna öllum netþjónum á einu svæði.

Forritaframleiðendur veita þjónustu í formi Tupperware starfa. Verk samanstendur af mörgum gámum og þeir keyra venjulega allir sama forritakóðann.

Tupperware ber ábyrgð á útvegun gáma og stjórnun líftíma þeirra. Það samanstendur af nokkrum hlutum:

  • Tupperware framhliðin veitir API fyrir notendaviðmótið, CLI og önnur sjálfvirkniverkfæri þar sem þú getur haft samskipti við Tupperware. Þeir fela alla innri uppbyggingu frá Tupperware atvinnueigendum.
  • Tupperware Scheduler er stjórnborð sem ber ábyrgð á að stjórna gámnum og líftíma verksins. Það er notað á svæðis- og alþjóðlegum vettvangi, þar sem svæðisbundinn tímaáætlun stjórnar netþjónum á einu svæði og alþjóðlegi tímaáætlunarmaðurinn stjórnar netþjónum frá mismunandi svæðum. Tímaáætluninni er skipt í brot og hvert brot heldur utan um sett af verkum.
  • Tupperware's Scheduler Proxy felur innri klippingu og veitir þægilegan eina glerrúðu fyrir Tupperware notendur.
  • Tupperware úthlutunartækið úthlutar gámum á netþjóna. Tímaáætlunin sér um stöðvun, ræsingu, uppfærslu og bilun gáma. Eins og er getur einn úthlutunaraðili stjórnað öllu svæðinu án þess að skipta sér í mola. (Athugaðu muninn á hugtökum. Til dæmis samsvarar tímaáætlun í Tupperware stjórnborðinu í Kubernetes, og Tupperware úthlutunartækið er kallað tímaáætlun í Kubernetes.)
  • Auðlindamiðlarinn geymir uppsprettu sannleikans fyrir netþjóninn og þjónustuviðburði. Við rekum einn auðlindamiðlara fyrir hvert gagnaver og það geymir allar upplýsingar um netþjóna í þeirri gagnaver. Auðlindamiðlarinn og afkastagetustjórnunarkerfið, eða auðlindaúthlutunarkerfið, ákveða á kraftmikinn hátt hvaða tímaáætlunarsending stjórnar hvaða netþjóni. Heilbrigðiseftirlitsþjónustan fylgist með netþjónum og geymir gögn um heilsu þeirra í auðlindamiðlaranum. Ef netþjónn er í vandræðum eða þarfnast viðhalds, segir auðlindamiðlarinn úthlutunaraðilanum og tímaáætlunaraðilanum að stöðva gámana eða færa þá á aðra netþjóna.
  • Tupperware Agent er púki sem keyrir á hverjum netþjóni sem sér um útvegun og fjarlægingu gáma. Forrit keyra inni í íláti, sem gefur þeim meiri einangrun og endurgerðanleika. Á Systems @Scale ráðstefnu á síðasta ári Við höfum þegar lýst því hvernig einstakir Tupperware gámar eru búnir til með því að nota myndir, btrfs, cgroupv2 og systemd.

Sérkenni Tupperware

Tupperware er á margan hátt svipað og önnur klasastjórnunarkerfi eins og Kubernetes og Mesos, en það er líka munur:

  • Innbyggður stuðningur fyrir opinbera þjónustu.
  • Eitt stjórnborð fyrir netþjóna í mismunandi gagnaverum til að gera sjálfvirkan afhendingu gáma byggt á ásetningi, niðurlagningu þyrpinga og viðhaldi.
  • Skýr skipting á stjórnborði fyrir aðdrátt.
  • Elastic computing gerir þér kleift að dreifa krafti milli þjónustu í rauntíma.

Við þróuðum þessa flottu eiginleika til að styðja við margs konar ríkisfangslaus og ríkjandi forrit í risastórum alþjóðlegum sameiginlegum netþjónaflota.

Innbyggður stuðningur fyrir opinbera þjónustu.

Tupperware rekur margvíslega mikilvæga ríkisþjónustu sem geymir viðvarandi vörugögn fyrir Facebook, Instagram, Messenger og WhatsApp. Þetta gætu verið stórar birgðir af lykilgilda pörum (t.d. ZippyDB) og eftirlit með gagnageymslum (til dæmis, ODS górilla и Köfun). Það er ekki auðvelt að viðhalda staðbundinni þjónustu, því kerfið þarf að tryggja að framboð gáma þoli stórfelldar truflanir, þar á meðal netleysi eða rafmagnsleysi. Og þó að hefðbundin tækni, eins og að dreifa gámum yfir bilunarlén, virki vel fyrir ríkisfangslausa þjónustu, þá þarf staðbundin þjónusta viðbótarstuðning.

Til dæmis, ef miðlarabilun gerir eina gagnagrunnseftirmynd ótiltæka, ættir þú að virkja sjálfvirkt viðhald sem mun uppfæra kjarna á 50 netþjónum úr 10 hópi? Fer eftir aðstæðum. Ef einn af þessum 50 netþjónum er með aðra eftirmynd af sama gagnagrunni, þá er betra að bíða og missa ekki 2 eftirlíkingar í einu. Til að geta tekið ákvarðanir um viðhald og frammistöðu kerfisins á kraftmikinn hátt, þurfum við upplýsingar um innri gagnaafritun og staðsetningarrökfræði hverrar staðbundinnar þjónustu.

TaskControl viðmótið gerir opinberri þjónustu kleift að hafa áhrif á ákvarðanir sem hafa áhrif á aðgengi gagna. Með því að nota þetta viðmót tilkynnir tímaáætlunarmaðurinn ytri forritum um gámaaðgerðir (endurræsa, uppfæra, flutning, viðhald). Yfirlitsþjónusta útfærir stjórnanda sem segir Tupperware hvenær óhætt sé að framkvæma hverja aðgerð og hægt er að skipta um þessar aðgerðir eða fresta þeim tímabundið. Í dæminu hér að ofan gæti gagnagrunnsstýringin sagt Tupperware að uppfæra 49 af 50 netþjónum, en látið ákveðinn netþjón (X) í friði í bili. Þar af leiðandi, ef kjarnauppfærslutímabilið líður og gagnagrunnurinn er enn ófær um að endurheimta erfiða eftirmynd, mun Tupperware samt uppfæra X þjóninn.

Tupperware: Kubernetes morðingi Facebook?

Margar opinberar þjónustur í Tupperware nota TaskControl ekki beint, heldur í gegnum ShardManager, sameiginlegan vettvang til að búa til opinbera þjónustu á Facebook. Með Tupperware geta verktaki tilgreint ásetning þeirra nákvæmlega hvernig ílátum ætti að dreifa milli gagnavera. Með ShardManager tilgreina verktaki áform sín um hvernig gagnabrotum ætti að dreifa yfir gáma. ShardManager er meðvitað um staðsetningu gagna og afritun forrita sinna og hefur samskipti við Tupperware í gegnum TaskControl viðmótið til að skipuleggja gámaaðgerðir án beinnar þátttöku umsóknar. Þessi samþætting einfaldar til muna stjórnun staðbundinnar þjónustu, en TaskControl er fær um meira. Til dæmis er umfangsmikið veflag okkar ríkisfangslaust og notar TaskControl til að stilla hraða uppfærslu á gámum á virkan hátt. Að lokum vefstigið er fær um að klára margar hugbúnaðarútgáfur fljótt á dag án þess að skerða framboð.

Umsjón með netþjónum í gagnaverum

Þegar Tupperware var fyrst hleypt af stokkunum árið 2011 var hverjum netþjónaklasa stjórnað af sérstökum tímaáætlun. Þá var Facebook þyrping hópur netþjónarekka tengdur einum netrofa og gagnaverið hýsti nokkra klasa. Tímaáætlunin gat aðeins stjórnað netþjónum í einum klasa, sem þýðir að starfið gæti ekki dreift sér yfir marga klasa. Innviðir okkar óx, við afskrifuðum klasa í auknum mæli. Þar sem Tupperware gat ekki flutt starfið úr aflögðum klasa yfir í aðra klasa án breytinga, krafðist það mikillar fyrirhafnar og nákvæmrar samhæfingar milli forritara og rekstraraðila gagnavera. Þetta ferli leiddi til sóunar á auðlindum þegar netþjónar voru aðgerðalausir í marga mánuði vegna úreldingarferla.

Við bjuggum til auðlindamiðlara til að leysa úrvinnsluvanda klasans og samræma aðrar tegundir viðhaldsverkefna. Auðlindamiðlarinn heldur utan um allar líkamlegar upplýsingar sem tengjast netþjóni og ákveður á virkan hátt hvaða tímaáætlun stjórnar hverjum netþjóni. Að tengja netþjóna á virkan hátt við tímaáætlun gerir tímaáætlunarmanninum kleift að stjórna netþjónum í mismunandi gagnaverum. Þar sem Tupperware starf er ekki lengur takmarkað við einn þyrping, geta Tupperware notendur tilgreint hvernig gámum skuli dreift yfir bilunarlén. Til dæmis getur verktaki lýst yfir ásetningi sínum (segðu: „keyra starf mitt á 2 bilunarlénum á PRN svæðinu“) án þess að tilgreina sérstök framboðssvæði. Tupperware mun sjálft finna hentuga netþjóna til að framkvæma þessa áform, jafnvel þótt þyrpingin eða þjónustan sé tekin úr notkun.

Skalanlegt til að styðja við allt alþjóðlegt kerfið

Sögulega hefur innviðum okkar verið skipt í hundruð sérstakra netþjóna fyrir einstök teymi. Vegna sundrungar og skorts á stöðlum vorum við með háan rekstrarkostnað og aðgerðalausir netþjónar voru erfiðari í notkun aftur. Á ráðstefnunni í fyrra Kerfi @Scale við kynntum innviði sem þjónusta (IaaS), sem ætti að sameina innviði okkar í stóran einn netþjónagarð. En einn netþjónagarður hefur sína erfiðleika. Það verður að uppfylla ákveðnar kröfur:

  • Skalanleiki. Innviðir okkar óx þegar við bættum við gagnaverum á hverju svæði. Netþjónar eru orðnir minni og orkunýtnari, þannig að þeir eru miklu fleiri á hverju svæði. Þar af leiðandi getur einn tímaáætlun á hvert svæði ekki séð um fjölda gáma sem hægt er að keyra á hundruðum þúsunda netþjóna á hverju svæði.
  • Надежность. Jafnvel þó að hægt sé að stækka tímaáætlunarmanninn svo mikið þýðir hið stóra umfang tímaáætlunar að það er meiri hætta á villum og heilt svæði gáma gæti orðið óviðráðanlegt.
  • Bilunarþol. Ef um er að ræða mikla innviðabilun (til dæmis, þjónar sem keyra tímaáætlun bila vegna netbilunar eða rafmagnsleysis) ættu neikvæðu afleiðingarnar aðeins að hafa áhrif á hluta netþjónanna á svæðinu.
  • The þægindi af notkun. Það kann að virðast sem þú þarft að keyra nokkra sjálfstæða tímaáætlun fyrir eitt svæði. En frá þægindasjónarmiði gerir einn aðgangsstaður í sameiginlega laug svæðis það auðveldara að stjórna getu og störfum.

Við skiptum tímaáætluninni í brot til að leysa vandamálin við að viðhalda stórri sameiginlegri laug. Hver tímaáætlunarbrot stjórnar sínu eigin setti af störfum á svæðinu og það dregur úr áhættunni sem tengist tímaáætlunarbúnaðinum. Eftir því sem sameiginlega laugin stækkar getum við bætt við fleiri tímaáætlunarbrotum. Fyrir Tupperware notendur líta brot og tímasetningarumboð út eins og eitt stjórnborð. Þeir þurfa ekki að vinna með fullt af brotum sem skipuleggja verkefni. Tímasetningarbrot eru í grundvallaratriðum frábrugðin þyrpingaráætlunargerðinni sem við notuðum áður, þar sem stjórnborðið var skipt í skiptingu án þess að skipta sameiginlega netþjónahópnum í samræmi við staðfræði netkerfisins.

Bættu notkunarskilvirkni með teygjanlegri tölvuvinnslu

Því stærri innviði sem við erum, því mikilvægara er að nota netþjóna okkar á skilvirkan hátt til að hámarka innviðakostnað og draga úr álagi. Það eru tvær leiðir til að auka skilvirkni netþjónsnotkunar:

  • Teygjanleg tölvumál - minnkaðu netþjónustuna á rólegum tímum og notaðu lausa netþjóna fyrir vinnuálag án nettengingar, svo sem vélanám og MapReduce störf.
  • Ofhleðsla - Settu netþjónustur og hópvinnuálag á sömu netþjóna þannig að hópvinnuálag keyri með lágan forgang.

Flöskuhálsinn í gagnaverum okkar er orkunotkun. Þess vegna kjósum við litla, orkunýtna netþjóna sem saman veita meiri vinnsluafl. Því miður, á litlum netþjónum með lítinn CPU og minni, er ofhleðsla minna árangursrík. Auðvitað getum við sett nokkra gáma af lítilli þjónustu á einn lítinn orkunýtan netþjón sem eyðir litlum örgjörvaauðlindum og minni, en stórar þjónustur munu hafa litla afköst í þessum aðstæðum. Þess vegna ráðleggjum við hönnuðum stóru þjónustu okkar að hagræða þeim þannig að þeir noti alla netþjóna.


Í grundvallaratriðum bætum við notkunarskilvirkni með því að nota teygjanlega tölvuvinnslu. Margar af helstu þjónustum okkar, eins og fréttastraumur, skilaboðaeiginleikar og framhlið vefstigs, eru mismunandi eftir tíma dags. Við minnkum viljandi niður þjónustu á netinu á rólegum tímum og notum lausa netþjóna fyrir vinnuálag án nettengingar, svo sem vélanám og MapReduce störf.

Tupperware: Kubernetes morðingi Facebook?

Við vitum af reynslu að það er best að útvega heila netþjóna sem einingar af teygjanlegri getu vegna þess að stórar þjónustur eru bæði stórir gjafar og stórneytendur teygjanlegrar afkastagetu, og eru fínstilltar til að nota heila netþjóna. Þegar þjónninn er losaður úr netþjónustu á rólegum tímum, leigir auðlindamiðlarinn þjóninn til tímaáætlunaraðilans til að keyra ónettengda vinnuálag á hann. Ef netþjónustan verður fyrir hámarksálagi, kallar auðlindamiðlarinn fljótt inn lánaða netþjóninn og, ásamt tímaáætlunarmanni, skilar honum aftur í netþjónustuna.

Lærdómur og áætlanir um framtíðina

Undanfarin 8 ár höfum við verið að þróa Tupperware til að fylgjast með örum vexti Facebook. Við deilum því sem við höfum lært og vonum að það muni hjálpa öðrum að stjórna ört vaxandi innviðum:

  • Settu upp sveigjanlega tengingu milli stjórnborðsins og netþjónanna sem það stjórnar. Þessi sveigjanleiki gerir stjórnborðinu kleift að stjórna netþjónum í mismunandi gagnaverum, hjálpar til við að gera sjálfvirkan niðurlagningu og viðhald klasa og gerir kraftmikla úthlutun afkastagetu með teygjanlegri tölvuvinnslu.
  • Með einu stjórnborði á svæðinu verður þægilegra að vinna með verkefni og auðveldara að stjórna stórum sameiginlegum netþjónaflota. Athugið að stjórnborðið heldur einum aðkomustað, jafnvel þótt innri uppbygging þess sé aðskilin vegna stærðar eða bilanaviks.
  • Með því að nota viðbótalíkan getur stjórnborðið tilkynnt ytri forritum um væntanlegar gámaaðgerðir. Þar að auki getur staðbundin þjónusta notað viðmótsviðmótið til að sérsníða gámastjórnun. Með þessu viðbótalíkani veitir stjórnborðið einfaldleika á meðan það þjónar á skilvirkan hátt margar mismunandi opinberar þjónustur.
  • Við teljum að teygjanleg tölvumál, þar sem við tökum heila netþjóna frá gjafaþjónustu fyrir hópvinnu, vélanám og aðra þjónustu sem ekki er brýn, sé ákjósanlegasta leiðin til að bæta skilvirkni lítilla, orkusparandi netþjóna.

Við erum rétt að byrja að innleiða einn alþjóðlegur sameiginlegur netþjónafloti. Eins og er eru um 20% netþjóna okkar í sameiginlegri laug. Til að ná 100% þarf að taka á mörgum málum, þar á meðal að viðhalda sameiginlegri geymslu, gera viðhald sjálfvirkt, stjórna kröfum milli leigjenda, bæta nýtingu netþjóna og bæta stuðning við vinnuálag vélanáms. Við getum ekki beðið eftir að takast á við þessar áskoranir og deila árangri okkar.

Heimild: www.habr.com

Bæta við athugasemd