Llestri Tupper: lladdwr Kubernetes Facebook?

Rheolaeth effeithlon a dibynadwy o glystyrau ar unrhyw raddfa gyda Tupperware

Llestri Tupper: lladdwr Kubernetes Facebook?

Heddiw ymlaen Cynhadledd Systems@Scale cyflwynom Tupperware, ein system rheoli clwstwr sy'n trefnu cynwysyddion ar draws miliynau o weinyddion sy'n rhedeg bron pob un o'n gwasanaethau. Fe wnaethom ddefnyddio Tupperware gyntaf yn 2011, ac ers hynny mae ein seilwaith wedi tyfu o 1 canolfan ddata i'r cyfan 15 o ganolfannau data geo-ddosbarthu. Yr holl amser hwn, nid oedd Tupperware yn sefyll yn ei unfan a datblygodd gyda ni. Byddwn yn dangos i chi sut mae Tupperware yn darparu rheolaeth clwstwr o'r radd flaenaf, gan gynnwys cefnogaeth gyfleus ar gyfer gwasanaethau urddasol, un panel rheoli ar gyfer pob canolfan ddata, a'r gallu i ddosbarthu capasiti rhwng gwasanaethau mewn amser real. Byddwn hefyd yn rhannu'r gwersi yr ydym wedi'u dysgu wrth i'n seilwaith ddatblygu.

Mae Tupperware yn cyflawni gwahanol dasgau. Mae datblygwyr cymwysiadau yn ei ddefnyddio i gyflwyno a rheoli cymwysiadau. Mae'n pecynnu'r cod cais a'r dibyniaethau i mewn i ddelwedd ac yn ei gyflwyno i weinyddion fel cynwysyddion. Mae cynwysyddion yn darparu ynysu rhwng cymwysiadau ar yr un gweinydd fel bod datblygwyr yn delio â rhesymeg y cais ac nad oes rhaid iddynt boeni am ddod o hyd i weinyddion neu reoli diweddariadau. Mae Tupperware hefyd yn monitro perfformiad y gweinydd, ac os yw'n dod o hyd i fethiant, mae'n trosglwyddo cynwysyddion o'r gweinydd problemus.

Mae peirianwyr cynllunio cynhwysedd yn defnyddio Tupperware i ddyrannu capasiti gweinyddwyr i dimau yn seiliedig ar gyllideb a chyfyngiadau. Maent hefyd yn ei ddefnyddio i wella'r defnydd o weinyddion. Mae gweithredwyr canolfannau data yn troi at Tupperware i ddosbarthu cynwysyddion yn iawn ar draws canolfannau data a stopio neu symud cynwysyddion yn ystod gwaith cynnal a chadw. Diolch i hyn, mae cynnal gweinyddwyr, rhwydweithiau ac offer yn gofyn am ychydig iawn o ymyrraeth ddynol.

pensaernïaeth Tupperware

Llestri Tupper: lladdwr Kubernetes Facebook?

Mae pensaernïaeth Tupperware PRN yn un o ranbarthau ein canolfannau data. Mae'r rhanbarth yn cynnwys nifer o adeiladau canolfan ddata (PRN1 a PRN2) sydd wedi'u lleoli gerllaw. Rydym yn bwriadu gwneud un panel rheoli a fydd yn rheoli'r holl weinyddion mewn un rhanbarth.

Mae datblygwyr cymwysiadau yn darparu gwasanaethau ar ffurf swyddi Tupperware. Mae swydd yn cynnwys cynwysyddion lluosog, ac maent i gyd fel arfer yn rhedeg yr un cod cais.

Tupperware sy'n gyfrifol am ddarparu cynwysyddion a rheoli eu cylch bywyd. Mae'n cynnwys nifer o gydrannau:

  • Mae blaen Tupperware yn darparu APIs ar gyfer y rhyngwyneb defnyddiwr, CLI, ac offer awtomeiddio eraill y gallwch chi ryngweithio â Tupperware trwyddynt. Maent yn cuddio'r strwythur mewnol cyfan rhag perchnogion swyddi Tupperware.
  • Mae Tupperware Scheduler yn banel rheoli sy'n gyfrifol am reoli'r cynhwysydd a chylch bywyd y swydd. Fe'i defnyddir ar lefelau rhanbarthol a byd-eang, lle mae'r trefnydd amserlennu rhanbarthol yn rheoli gweinyddwyr mewn un rhanbarth ac mae'r amserlennwr byd-eang yn rheoli gweinyddwyr o wahanol ranbarthau. Rhennir y rhaglennydd yn ddarnau, ac mae pob darn yn rheoli set o swyddi.
  • Mae Tupperware's Scheduler Proxy yn cuddio'r darnio mewnol ac yn darparu cwarel sengl cyfleus o wydr i ddefnyddwyr Tupperware.
  • Mae'r dyrannwr Tupperware yn aseinio cynwysyddion i weinyddion. Mae'r trefnydd yn delio â stopio, cychwyn, diweddaru a methu cynwysyddion. Ar hyn o bryd, gall un dyranwr reoli'r rhanbarth cyfan heb ei rannu'n ddarnau. (Sylwch ar y gwahaniaeth mewn terminoleg. Er enghraifft, mae'r amserlennydd yn Tupperware yn cyfateb i'r panel rheoli yn Kubernetes, a gelwir y dyrannwr Tupperware yn amserlennwr yn Kubernetes.)
  • Mae'r brocer adnoddau yn storio ffynhonnell y gwirionedd ar gyfer y gweinydd a digwyddiadau gwasanaeth. Rydym yn rhedeg un brocer adnoddau ar gyfer pob canolfan ddata, ac mae'n storio'r holl wybodaeth am y gweinyddwyr yn y ganolfan ddata honno. Mae'r brocer adnoddau a'r system rheoli cynhwysedd, neu'r system darparu adnoddau, yn penderfynu'n ddeinamig pa drefnydd cyflenwi sy'n rheoli pa weinydd. Mae'r gwasanaeth gwirio iechyd yn monitro gweinyddion ac yn storio data am eu hiechyd yn y brocer adnoddau. Os oes gan weinydd broblemau neu angen cynnal a chadw, mae'r brocer adnoddau yn dweud wrth y dyrannwr a'r trefnydd i atal y cynwysyddion neu eu symud i weinyddion eraill.
  • Mae'r Asiant Tupperware yn daemon sy'n rhedeg ar bob gweinydd sy'n paratoi ac yn tynnu cynwysyddion. Mae cymwysiadau'n rhedeg y tu mewn i gynhwysydd, sy'n rhoi mwy o arwahanrwydd ac atgynhyrchedd iddynt. Ar cynhadledd Systems @Scale y llynedd Rydym eisoes wedi disgrifio sut mae cynwysyddion Tupperware unigol yn cael eu creu gan ddefnyddio delweddau, btrfs, cgroupv2 a systemd.

Nodweddion unigryw Tupperware

Mae Tupperware yn debyg mewn sawl ffordd i systemau rheoli clwstwr eraill fel Kubernetes a Mesos, ond mae gwahaniaethau hefyd:

  • Cefnogaeth gynwysedig ar gyfer gwasanaethau gwladol.
  • Panel rheoli sengl ar gyfer gweinyddwyr mewn gwahanol ganolfannau data i awtomeiddio'r broses o ddosbarthu cynwysyddion yn seiliedig ar fwriad, datgomisiynu clystyrau a chynnal a chadw.
  • Rhaniad clir o'r panel rheoli ar gyfer chwyddo.
  • Mae cyfrifiadura elastig yn caniatáu ichi ddosbarthu pŵer rhwng gwasanaethau mewn amser real.

Fe wnaethom ddatblygu'r nodweddion cŵl hyn i gefnogi amrywiaeth o gymwysiadau di-wladwriaeth a gwladwriaethol ar draws fflyd gweinyddwyr a rennir byd-eang enfawr.

Cefnogaeth gynwysedig ar gyfer gwasanaethau gwladol.

Mae Tupperware yn gweithredu amrywiaeth o wasanaethau gwladwriaethol hollbwysig sy'n storio data cynnyrch parhaus ar gyfer Facebook, Instagram, Messenger a WhatsApp. Gallai’r rhain fod yn storfeydd mawr o barau gwerth allweddol (e.e. ZippyDB) a monitro storfeydd data (er enghraifft, ODS Gorilla и Scuba). Nid yw'n hawdd cynnal gwasanaethau o safon, oherwydd rhaid i'r system sicrhau y gall y cyflenwad o gynwysyddion wrthsefyll aflonyddwch ar raddfa fawr, gan gynnwys toriadau rhwydwaith neu doriadau pŵer. Ac er bod technegau confensiynol, megis dosbarthu cynwysyddion ar draws meysydd nam, yn gweithio'n dda ar gyfer gwasanaethau heb wladwriaeth, mae angen cymorth ychwanegol ar wasanaethau gwladwriaethol.

Er enghraifft, os bydd methiant gweinydd yn golygu nad yw un copi cronfa ddata ar gael, a ddylech chi alluogi cynnal a chadw awtomatig a fydd yn diweddaru'r creiddiau ar 50 o weinyddion o gronfa o 10? Yn dibynnu ar y sefyllfa. Os oes gan un o'r gweinyddwyr 50 hyn atgynhyrchiad arall o'r un gronfa ddata, mae'n well aros a pheidio â cholli 2 atgynhyrchiad ar unwaith. Er mwyn gwneud penderfyniadau am gynnal a chadw systemau a pherfformiad yn ddeinamig, mae angen gwybodaeth arnom am ddyblygu data mewnol a rhesymeg lleoli pob gwasanaeth nodedig.

Mae rhyngwyneb TaskControl yn caniatáu i wasanaethau gwladol ddylanwadu ar benderfyniadau sy'n effeithio ar argaeledd data. Gan ddefnyddio'r rhyngwyneb hwn, mae'r trefnydd yn hysbysu cymwysiadau allanol am weithrediadau cynhwysydd (ailgychwyn, diweddaru, mudo, cynnal a chadw). Mae gwasanaeth gwladol yn gweithredu rheolydd sy'n dweud wrth Tupperware pryd mae'n ddiogel i gyflawni pob gweithrediad, a gellir cyfnewid neu ohirio'r gweithrediadau hyn dros dro. Yn yr enghraifft uchod, gallai rheolwr y gronfa ddata ddweud wrth Tupperware am ddiweddaru 49 o'r gweinyddwyr 50, ond gadael gweinydd penodol (X) ar ei ben ei hun am y tro. O ganlyniad, os bydd y cyfnod diweddaru cnewyllyn yn mynd heibio ac nid yw'r gronfa ddata yn gallu adfer y replica problemus o hyd, bydd Tupperware yn dal i ddiweddaru'r gweinydd X.

Llestri Tupper: lladdwr Kubernetes Facebook?

Mae llawer o wasanaethau gwladol yn Tupperware yn defnyddio TaskControl nid yn uniongyrchol, ond trwy ShardManager, llwyfan cyffredin ar gyfer creu gwasanaethau urddasol ar Facebook. Gyda Tupperware, gall datblygwyr nodi eu bwriad ar gyfer sut yn union y dylid dosbarthu cynwysyddion ar draws canolfannau data. Gyda ShardManager, mae datblygwyr yn nodi eu bwriad ar gyfer sut y dylid dosbarthu darnau data ar draws cynwysyddion. Mae ShardManager yn ymwybodol o leoliad data ac atgynhyrchu ei gymwysiadau ac mae'n cyfathrebu â Tupperware trwy'r rhyngwyneb TaskControl i amserlennu gweithrediadau cynhwysydd heb gysylltiad cymhwysiad uniongyrchol. Mae'r integreiddio hwn yn symleiddio'n fawr y broses o reoli gwasanaethau gwladwriaethol, ond mae TaskControl yn gallu gwneud mwy. Er enghraifft, mae ein haen we helaeth yn ddi-wladwriaeth ac yn defnyddio TaskControl i addasu cyfradd diweddariadau i gynwysyddion yn ddeinamig. Yn y diwedd mae'r haen we yn gallu cwblhau datganiadau meddalwedd lluosog yn gyflym y dydd heb gyfaddawdu ar argaeledd.

Rheoli gweinyddion mewn canolfannau data

Pan lansiwyd Tupperware gyntaf yn 2011, roedd pob clwstwr gweinydd yn cael ei reoli gan amserlennwr ar wahân. Yn ôl wedyn, roedd clwstwr Facebook yn grŵp o raciau gweinydd wedi'u cysylltu ag un switsh rhwydwaith, ac roedd y ganolfan ddata yn gartref i sawl clwstwr. Dim ond mewn un clwstwr y gallai'r trefnydd reoli gweinyddwyr, sy'n golygu na allai'r swydd ledaenu ar draws sawl clystyrau. Tyfodd ein seilwaith, fe wnaethom ddileu clystyrau fwyfwy. Gan na allai Tupperware symud y swydd o'r clwstwr datgomisiynu i glystyrau eraill heb newidiadau, roedd angen llawer o ymdrech a chydgysylltu gofalus rhwng datblygwyr cymwysiadau a gweithredwyr canolfannau data. Arweiniodd y broses hon at wastraffu adnoddau pan oedd gweinyddion yn segur am fisoedd oherwydd gweithdrefnau datgomisiynu.

Fe wnaethon ni greu brocer adnoddau i ddatrys y broblem datgomisiynu clwstwr a chydlynu mathau eraill o dasgau cynnal a chadw. Mae'r brocer adnoddau yn cadw golwg ar yr holl wybodaeth ffisegol sy'n gysylltiedig â gweinydd ac yn penderfynu'n ddeinamig pa amserlennwr sy'n rheoli pob gweinydd. Mae cysylltu gweinyddion yn ddeinamig â rhaglenwyr yn caniatáu i'r trefnydd reoli gweinyddwyr mewn gwahanol ganolfannau data. Gan nad yw swydd Tupperware bellach yn gyfyngedig i un clwstwr, gall defnyddwyr Tupperware nodi sut y dylid dosbarthu cynwysyddion ar draws parthau nam. Er enghraifft, gall datblygwr ddatgan ei fwriad (gadewch i ni ddweud: "rhedeg fy swydd ar 2 parth nam yn y rhanbarth PRN") heb nodi parthau argaeledd penodol. Bydd Tupperware ei hun yn dod o hyd i weinyddion addas i weithredu'r bwriad hwn, hyd yn oed os yw'r clwstwr neu'r gwasanaeth yn cael ei ddatgomisiynu.

Graddadwy i gefnogi'r system fyd-eang gyfan

Yn hanesyddol, mae ein seilwaith wedi'i rannu'n gannoedd o gronfeydd gweinyddwyr pwrpasol ar gyfer timau unigol. Oherwydd darnio a diffyg safonau, roedd gennym gostau gweithredu uchel, ac roedd gweinyddwyr segur yn fwy anodd eu defnyddio eto. Yn y gynhadledd y llynedd Systemau @Graddfa cyflwynasom seilwaith fel gwasanaeth (IaaS), a ddylai uno ein seilwaith yn barc gweinyddwyr sengl mawr. Ond mae gan barc gweinydd unigol ei anawsterau ei hun. Rhaid iddo fodloni rhai gofynion:

  • Scalability. Tyfodd ein seilwaith wrth i ni ychwanegu canolfannau data ym mhob rhanbarth. Mae gweinyddwyr wedi dod yn llai ac yn fwy ynni-effeithlon, felly mae llawer mwy ohonynt ym mhob rhanbarth. O ganlyniad, ni all un amserlennydd fesul rhanbarth drin nifer y cynwysyddion y gellir eu rhedeg ar gannoedd o filoedd o weinyddion ym mhob rhanbarth.
  • Dibynadwyedd Hyd yn oed os gellir cynyddu cymaint â hynny ar y rhaglennydd, mae cwmpas mawr y rhaglennydd yn golygu bod risg uwch o gamgymeriadau ac y gallai rhanbarth cyfan o gynwysyddion ddod yn anhydrin.
  • Goddefgarwch bai. Mewn achos o fethiant seilwaith enfawr (er enghraifft, mae'r gweinyddwyr sy'n rhedeg y rhaglennydd yn methu oherwydd methiant rhwydwaith neu ddiffyg pŵer), dylai'r canlyniadau negyddol effeithio ar gyfran yn unig o'r gweinyddwyr yn y rhanbarth.
  • Cyfleustra'r defnydd. Efallai ei bod yn ymddangos bod angen i chi redeg sawl rhaglennydd annibynnol ar gyfer un rhanbarth. Ond o safbwynt cyfleustra, mae un pwynt mynediad i gronfa a rennir rhanbarth yn ei gwneud yn haws rheoli capasiti a swyddi.

Fe wnaethom rannu'r rhaglennydd yn ddarnau i ddatrys problemau cynnal pwll mawr a rennir. Mae pob darn o amserlennu yn rheoli ei set ei hun o swyddi yn y rhanbarth, ac mae hyn yn lleihau'r risg sy'n gysylltiedig â'r trefnydd. Wrth i'r pwll a rennir dyfu, gallwn ychwanegu mwy o ddarnau amserlennu. Ar gyfer defnyddwyr Tupperware, mae shards a dirprwyon amserlennu yn edrych fel un panel rheoli. Nid oes rhaid iddynt weithio gyda chriw o ddarnau sy'n trefnu tasgau. Mae darnau amserlennu yn sylfaenol wahanol i'r amserlenwyr clwstwr a ddefnyddiwyd gennym o'r blaen, pan gafodd y panel rheoli ei rannu heb rannu'r gronfa a rennir o weinyddion yn statig yn ôl topoleg y rhwydwaith.

Gwella Effeithlonrwydd Defnydd gyda Chyfrifiadura Elastig

Po fwyaf yw ein seilwaith, y pwysicaf yw hi i ddefnyddio ein gweinyddion yn effeithlon i optimeiddio costau seilwaith a lleihau llwyth. Mae dwy ffordd i gynyddu effeithlonrwydd defnydd gweinydd:

  • Cyfrifiadura elastig - lleihau gwasanaethau ar-lein yn ystod oriau tawel a defnyddio gweinyddwyr wedi'u rhyddhau ar gyfer llwythi gwaith all-lein, megis dysgu peiriant a swyddi MapReduce.
  • Gorlwytho - Rhowch wasanaethau ar-lein a llwythi gwaith swp ar yr un gweinyddwyr fel bod llwythi gwaith swp yn rhedeg ar flaenoriaeth isel.

Y dagfa yn ein canolfannau data yw defnydd pŵer. Felly, mae'n well gennym weinyddion bach, ynni-effeithlon sydd gyda'i gilydd yn darparu mwy o bŵer prosesu. Yn anffodus, ar weinyddion bach heb fawr o CPU a chof, mae gorlwytho yn llai effeithiol. Wrth gwrs, gallwn osod sawl cynhwysydd o wasanaethau bach ar un gweinydd ynni-effeithlon bach sy'n defnyddio ychydig o adnoddau prosesydd a chof, ond bydd gan wasanaethau mawr berfformiad isel yn y sefyllfa hon. Felly, rydym yn cynghori datblygwyr ein gwasanaethau mawr i'w hoptimeiddio fel eu bod yn defnyddio gweinyddwyr cyfan.


Yn y bôn, rydym yn gwella effeithlonrwydd defnydd gan ddefnyddio cyfrifiadura elastig. Mae llawer o'n prif wasanaethau, megis y News Feed, y nodwedd Messaging, a'r haen gwe pen blaen, yn amrywio yn dibynnu ar yr amser o'r dydd. Rydym yn lleihau gwasanaethau ar-lein yn fwriadol yn ystod oriau tawel ac yn defnyddio gweinyddwyr wedi'u rhyddhau ar gyfer llwythi gwaith all-lein, megis dysgu peiriant a swyddi MapReduce.

Llestri Tupper: lladdwr Kubernetes Facebook?

Gwyddom o brofiad mai'r peth gorau yw darparu gweinyddwyr cyfan fel unedau o gapasiti elastig oherwydd bod gwasanaethau mawr yn rhoddwyr mawr ac yn ddefnyddwyr mawr o gapasiti elastig, ac wedi'u hoptimeiddio i ddefnyddio gweinyddwyr cyfan. Pan fydd y gweinydd yn cael ei ryddhau o wasanaeth ar-lein yn ystod oriau tawel, mae'r brocer adnoddau yn prydlesu'r gweinydd i'r trefnydd i redeg llwythi gwaith all-lein arno. Os yw'r gwasanaeth ar-lein yn profi llwyth brig, mae'r brocer adnoddau yn cofio'r gweinydd a fenthycwyd yn gyflym ac, ynghyd â'r trefnydd, yn ei ddychwelyd i'r gwasanaeth ar-lein.

Gwersi a ddysgwyd a chynlluniau ar gyfer y dyfodol

Dros yr 8 mlynedd diwethaf, rydym wedi bod yn datblygu Tupperware i gadw i fyny â thwf cyflym Facebook. Rydyn ni'n rhannu'r hyn rydyn ni wedi'i ddysgu ac yn gobeithio y bydd yn helpu eraill i reoli seilweithiau sy'n tyfu'n gyflym:

  • Sefydlu cysylltiad hyblyg rhwng y panel rheoli a'r gweinyddwyr y mae'n eu rheoli. Mae'r hyblygrwydd hwn yn caniatáu i'r panel rheoli reoli gweinyddwyr mewn gwahanol ganolfannau data, yn helpu i awtomeiddio'r broses o ddatgomisiynu a chynnal a chadw clystyrau, ac yn galluogi dyrannu cynhwysedd deinamig gan ddefnyddio cyfrifiadura elastig.
  • Gyda phanel rheoli sengl yn y rhanbarth, mae'n dod yn fwy cyfleus i weithio gyda thasgau ac yn haws rheoli fflyd gweinydd a rennir mawr. Sylwch fod y panel rheoli yn cynnal un pwynt mynediad, hyd yn oed os yw ei strwythur mewnol wedi'i wahanu am resymau maint neu oddefgarwch bai.
  • Gan ddefnyddio model ategyn, gall y panel rheoli hysbysu cymwysiadau allanol o weithrediadau cynhwysydd sydd ar ddod. Ar ben hynny, gall gwasanaethau urddasol ddefnyddio'r rhyngwyneb ategyn i addasu rheolaeth cynwysyddion. Gyda'r model ategyn hwn, mae'r panel rheoli yn darparu symlrwydd tra'n gwasanaethu llawer o wahanol wasanaethau rhagorol yn effeithlon.
  • Credwn mai cyfrifiadura elastig, lle rydym yn tynnu gweinyddwyr cyfan oddi ar wasanaethau rhoddwyr ar gyfer swp-swyddi, dysgu peiriannau, a gwasanaethau eraill nad ydynt yn rhai brys, yw'r ffordd orau o wella effeithlonrwydd gweinyddwyr bach, ynni-effeithlon.

Newydd ddechrau gweithredu yr ydym fflyd gweinydd a rennir sengl byd-eang. Ar hyn o bryd mae tua 20% o'n gweinyddion mewn cronfa a rennir. Er mwyn cyflawni 100%, mae angen mynd i'r afael â llawer o faterion, gan gynnwys cynnal cronfa storio a rennir, awtomeiddio cynnal a chadw, rheoli gofynion traws-denant, gwella'r defnydd o weinyddion, a gwella cefnogaeth ar gyfer llwythi gwaith dysgu peiriannau. Ni allwn aros i dderbyn yr heriau hyn a rhannu ein llwyddiannau.

Ffynhonnell: hab.com

Ychwanegu sylw