Sut mae blaenoriaethau codennau yn Kubernetes wedi achosi amser segur yn Grafana Labs

Nodyn. traws.: Rydym yn cyflwyno i'ch sylw fanylion technegol am y rhesymau dros yr amser segur diweddar yn y gwasanaeth cwmwl a gynhelir gan grewyr Grafana. Mae hon yn enghraifft glasurol o sut y gall nodwedd newydd sy'n ymddangos yn hynod ddefnyddiol sydd wedi'i dylunio i wella ansawdd seilwaith ... achosi niwed os na fyddwch yn darparu ar gyfer naws niferus ei gymhwysiad yn realiti cynhyrchu. Mae'n wych pan fydd deunyddiau fel hyn yn ymddangos sy'n eich galluogi i ddysgu nid yn unig o'ch camgymeriadau. Mae manylion yn y cyfieithiad o'r testun hwn gan is-lywydd cynnyrch o Grafana Labs.

Sut mae blaenoriaethau codennau yn Kubernetes wedi achosi amser segur yn Grafana Labs

Ddydd Gwener, Gorffennaf 19, rhoddodd gwasanaeth Hosted Prometheus yn Grafana Cloud y gorau i weithredu am tua 30 munud. Rwy'n ymddiheuro i'r holl gwsmeriaid yr effeithiwyd arnynt gan y toriad. Ein gwaith ni yw darparu'r offer monitro sydd eu hangen arnoch, a deallwn y gall peidio â'u cael ar gael wneud eich bywyd yn fwy anodd. Rydym yn cymryd y digwyddiad hwn o ddifrif. Mae'r nodyn hwn yn egluro beth ddigwyddodd, sut y gwnaethom ymateb, a beth rydym yn ei wneud i sicrhau nad yw'n digwydd eto.

cynhanes

Mae gwasanaeth Grafana Cloud Hosted Prometheus yn seiliedig ar Cortecs — Prosiect CNCF i greu gwasanaeth Prometheus aml-denant y gellir ei raddio'n llorweddol, sydd ar gael yn fawr. Mae pensaernïaeth Cortex yn cynnwys set o ficrowasanaethau unigol, pob un ohonynt yn cyflawni ei swyddogaeth ei hun: atgynhyrchu, storio, ymholiadau, ac ati. Mae cortecs yn cael ei ddatblygu'n weithredol ac mae'n ychwanegu nodweddion newydd yn gyson ac yn gwella perfformiad. Rydym yn defnyddio datganiadau Cortex newydd yn rheolaidd i glystyrau fel y gall cwsmeriaid fanteisio ar y nodweddion hyn - yn ffodus, gellir diweddaru Cortex heb amser segur.

Ar gyfer diweddariadau di-dor, mae angen atgynhyrchiad Ingester ychwanegol ar wasanaeth Ingester Cortex yn ystod y broses ddiweddaru. (Nodyn. traws.: amlyncu - elfen sylfaenol y Cortex. Ei waith yw casglu llif cyson o samplau, eu grwpio'n dalpiau Prometheus a'u storio mewn cronfa ddata fel DynamoDB, BigTable neu Cassandra.) Mae hyn yn caniatáu i hen Ingesters anfon data cyfredol ymlaen at Ingesters newydd. Mae'n werth nodi bod Ingesters yn galw am adnoddau. Er mwyn iddynt weithio, mae angen 4 craidd a 15 GB o gof fesul pod, h.y. 25% o bŵer prosesu a chof y peiriant sylfaen yn achos ein clystyrau Kubernetes. Yn gyffredinol, fel arfer mae gennym lawer mwy o adnoddau heb eu defnyddio yn y clwstwr na 4 cores a 15 GB o gof, felly gallwn yn hawdd sbinio'r mewnosodiadau ychwanegol hyn yn ystod uwchraddiadau.

Fodd bynnag, mae'n aml yn digwydd nad oes gan yr un o'r peiriannau y 25% hwn o adnoddau nas defnyddiwyd yn ystod gweithrediad arferol. Ydym, nid ydym hyd yn oed yn ymdrechu: bydd CPU a chof bob amser yn ddefnyddiol ar gyfer prosesau eraill. Er mwyn datrys y broblem hon, rydym yn penderfynu defnyddio Blaenoriaethau Pod Kubernetes. Y syniad yw rhoi blaenoriaeth uwch i Ingesters na gwasanaethau meicro eraill (diwladwriaeth). Pan fydd angen i ni redeg Ingester ychwanegol (N+1), rydym yn disodli codennau llai eraill dros dro. Mae'r codennau hyn yn cael eu trosglwyddo i adnoddau rhad ac am ddim ar beiriannau eraill, gan adael "twll" digon mawr i redeg Ingester ychwanegol.

Ddydd Iau, Gorffennaf 18, fe wnaethom gyflwyno pedair lefel flaenoriaeth newydd i’n clystyrau: beirniadol, uchel, cyfartaledd и isel. Cawsant eu profi ar glwstwr mewnol heb unrhyw draffig cleient am tua wythnos. Yn ddiofyn, codennau heb flaenoriaeth benodol yn cael eu derbyn cyfartaledd blaenoriaeth, gosodwyd dosbarth ar gyfer Ingesters gyda uchel blaenoriaeth. Critigol ei gadw ar gyfer monitro (Prometheus, Alertmanager, nod-allforiwr, kube-state-metrics, ac ati). Mae ein cyfluniad ar agor, a gallwch weld y cysylltiadau cyhoeddus yma.

Damweiniau

Ddydd Gwener, Gorffennaf 19, lansiodd un o'r peirianwyr glwstwr Cortex pwrpasol newydd ar gyfer cleient mawr. Nid oedd y ffurfweddiad ar gyfer y clwstwr hwn yn cynnwys blaenoriaethau cod newydd, felly rhoddwyd blaenoriaeth ddiofyn i bob cod newydd - cyfartaledd.

Nid oedd gan glwstwr Kubernetes ddigon o adnoddau ar gyfer y clwstwr Cortex newydd, ac ni ddiweddarwyd y clwstwr Cortex cynhyrchu presennol (gadawyd Ingesters hebddynt. uchel blaenoriaeth). Ers y Ingesters y clwstwr newydd yn ddiofyn wedi cyfartaledd blaenoriaeth, a bod y codennau presennol mewn cynhyrchu yn gweithio heb flaenoriaeth o gwbl, disodlodd Ingesters y clwstwr newydd yr Ingesters o'r clwstwr cynhyrchu Cortex presennol.

Canfu ReplicaSet ar gyfer yr Ingester a gafodd ei droi allan yn y clwstwr cynhyrchu y pod wedi'i droi allan a chreu un newydd i gynnal y nifer penodedig o gopïau. Neilltuwyd y pod newydd yn ddiofyn cyfartaledd blaenoriaeth, a chollodd Ingester “hen” arall ym maes cynhyrchu ei adnoddau. Y canlyniad oedd proses eirlithriadau, a arweiniodd at ddadleoli pob codennau o Ingester ar gyfer clystyrau cynhyrchu Cortex.

Mae mewnosodwyr yn dalog ac yn storio data ar gyfer y 12 awr flaenorol. Mae hyn yn caniatáu inni eu cywasgu'n fwy effeithlon cyn eu hysgrifennu i storfa hirdymor. Er mwyn cyflawni hyn, mae Cortex yn rhannu data ar draws cyfresi gan ddefnyddio Tabl Hash Dosbarthedig (DHT) ac yn ailadrodd pob cyfres ar draws tri Ingest gan ddefnyddio cysondeb cworwm arddull Dynamo. Nid yw Cortex yn ysgrifennu data i Ingsters sy'n anabl. Felly, pan fydd nifer fawr o Ingesters yn gadael y DHT, ni all Cortex ddarparu digon o ddyblygiad o'r cofnodion, ac maent yn chwalu.

Canfod ac Adfer

Hysbysiadau Prometheus newydd yn seiliedig ar "gyllideb gwall" (seiliedig ar wallau — bydd y manylion yn ymddangos mewn erthygl yn y dyfodol) dechreuodd seinio'r larwm 4 munud ar ôl i'r diffodd ddechrau. Dros y pum munud nesaf, fe wnaethom redeg rhywfaint o ddiagnosteg a chynyddu clwstwr Kubernetes sylfaenol i gynnal y clystyrau cynhyrchu newydd a phresennol.

Ar ôl pum munud arall, ysgrifennodd yr hen Ingsters eu data yn llwyddiannus, cychwynnodd y rhai newydd, a daeth y clystyrau Cortex ar gael eto.

Treuliwyd 10 munud arall yn gwneud diagnosis a chywiro gwallau y tu allan i'r cof (OOM) o ddirprwyon gwrthdroi dilysu a leolir o flaen Cortex. Achoswyd gwallau OOM gan gynnydd deg gwaith yn y QPS (credwn oherwydd ceisiadau rhy ymosodol gan weinyddion Prometheus y cleient).

Adladd

Cyfanswm yr amser segur oedd 26 munud. Ni chollwyd unrhyw ddata. Mae mewnosodwyr wedi llwyddo i lwytho'r holl ddata cof i storfa hirdymor. Yn ystod y cau i lawr, gweinyddion cleient Prometheus clustogi dileu (o bell) recordiadau gan ddefnyddio API newydd o bell_write yn seiliedig ar WAL (awdur gan Callum Styan gan Grafana Labs) ac ailadrodd yr ysgrifennu a fethwyd ar ôl y ddamwain.

Sut mae blaenoriaethau codennau yn Kubernetes wedi achosi amser segur yn Grafana Labs
Gweithrediadau ysgrifennu clwstwr cynhyrchu

Canfyddiadau

Mae'n bwysig dysgu o'r digwyddiad hwn a chymryd y camau angenrheidiol i osgoi iddo ddigwydd eto.

Wrth edrych yn ôl, ni ddylem fod wedi gosod y rhagosodiad cyfartaledd flaenoriaeth hyd nes y bydd yr holl Ingesters sy'n cynhyrchu wedi derbyn uchel yn flaenoriaeth. Yn ogystal, roedd angen gofalu amdanynt ymlaen llaw uchel blaenoriaeth. Mae popeth yn sefydlog nawr. Gobeithiwn y bydd ein profiad yn helpu sefydliadau eraill sy'n ystyried defnyddio blaenoriaethau codennau yn Kubernetes.

Byddwn yn ychwanegu lefel ychwanegol o reolaeth dros y defnydd o unrhyw wrthrychau ychwanegol y mae eu ffurfweddiadau byd-eang i'r clwstwr. O hyn ymlaen, bydd newidiadau o'r fath yn cael eu hasesu bоmwy o bobl. Yn ogystal, ystyriwyd bod yr addasiad a achosodd y ddamwain yn rhy fach ar gyfer dogfen brosiect ar wahân - dim ond mewn rhifyn GitHub y cafodd ei drafod. O hyn ymlaen, bydd dogfennau prosiect priodol yn cyd-fynd â phob newid o'r fath i gyfluniadau.

Yn olaf, byddwn yn awtomeiddio newid maint y dirprwy gwrthdro dilysu i atal y gorlwytho OOM a welsom, a byddwn yn adolygu gosodiadau rhagosodedig Prometheus sy'n ymwneud â wrth gefn a graddio i atal materion tebyg yn y dyfodol.

Roedd gan y methiant rai canlyniadau cadarnhaol hefyd: ar ôl derbyn yr adnoddau angenrheidiol, adferodd Cortex yn awtomatig heb ymyrraeth ychwanegol. Cawsom hefyd brofiad gwerthfawr o weithio gyda Grafana Loki - ein system cydgasglu boncyffion newydd - a helpodd i sicrhau bod yr holl Ingesters yn ymddwyn yn briodol yn ystod ac ar ôl y methiant.

PS gan y cyfieithydd

Darllenwch hefyd ar ein blog:

Ffynhonnell: hab.com

Ychwanegu sylw