Çawa pêşîniyên pod di Kubernetes de bûn sedema bêhnvedanê li Grafana Labs

Not. werger.: Em hûrguliyên teknîkî yên di derbarê sedemên dakêşana vê dawîyê de di karûbarê ewr de ku ji hêla afirînerên Grafana ve hatî domandin pêşkêşî we dikin. Ev mînakek klasîk e ku meriv çawa taybetmendiyek nû û dixuya ku pir bikêrhatî ye ku ji bo baştirkirina kalîteya binesaziyê hatî sêwirandin ... dikare zirarê bide ger hûn di rastiyên hilberînê de gelek nuwazeyên serîlêdana wê peyda nekin. Gava ku materyalên bi vî rengî xuya dibin ku dihêle hûn ne tenê ji xeletiyên xwe fêr bibin pir xweş e. Agahdarî di wergera vê nivîsê de ji cîgirê serokê hilberê ji Grafana Labs re hene.

Çawa pêşaniyên pod li Kubernetes bû sedema bêhnvedanê li Grafana Labs

Roja Înê, 19ê Tîrmehê, karûbarê Hosted Prometheus li Grafana Cloud bi qasî 30 hûrdem rawestiya. Ez ji hemî xerîdarên ku ji qutbûnê bandor bûne lêborînê dixwazim. Karê me ew e ku amûrên çavdêriyê yên ku hûn hewce ne peyda bikin, û em fam dikin ku nebûna wan dikare jiyana we dijwartir bike. Em vê bûyerê pir cidî dibînin. Ev têbînî rave dike ka çi qewimî, me çawa bersiv da, û em çi dikin da ku ew careke din neqewime.

pêşdîrok

Karûbarê Prometheus Hosted Grafana Cloud li ser bingeha bingehîn e Cortex - Projeya CNCF ji bo afirandina karûbarek Prometheus-a pir-kirêdar, berbelavkirî ya horîzontal, pir berdest. Mîmariya Cortex ji komek mîkroxizmetên ferdî pêk tê, ku her yek ji wan fonksiyona xwe pêk tîne: dubarekirin, hilanîn, pirs û hwd. Cortex di bin pêşkeftina çalak de ye û bi domdarî taybetmendiyên nû lê zêde dike û performansê baştir dike. Em bi rêkûpêk serbestberdanên Cortex-ê yên nû li koman dişoxilînin da ku xerîdar karibin ji van taybetmendiyan sûd werbigirin - bextewar, Cortex dikare bêyî demdirêj were nûve kirin.

Ji bo nûvekirinên bêkêmasî, karûbarê Ingester Cortex di dema pêvajoya nûvekirinê de kopiyek Ingesterek din hewce dike. (Not. werger.: Ingester - pêkhateya bingehîn a Cortex. Karê wê ev e ku berhevokek domdar a nimûneyan berhev bike, wan li perçeyên Prometheus kom bike û wan di databasek mîna DynamoDB, BigTable an Cassandra de hilîne.) Ev rê dide Ingestersên kevn ku daneyên heyî ji Ingestersên nû re bişînin. Hêjayî gotinê ye ku Ingesters çavkanî-daxwaz in. Ji bo ku ew bixebitin, hûn hewce ne ku her podek 4 core û 15 GB bîranîn hebin, yanî. 25% ji hêza pêvajoyê û bîranîna makîneya bingehîn di nav komên me yên Kubernetes de. Bi gelemperî, di komê de ji 4 navik û 15 GB bîra me bi gelemperî gelek çavkaniyên neyên bikar anîn hene, ji ber vê yekê em dikarin di dema nûvekirinan de van pêvekêşan bi hêsanî bizivirînin.

Lêbelê, pir caran diqewime ku di dema xebata normal de yek ji makîneyan ev 25% ji çavkaniyên nayên bikar anîn tune. Erê, em ne jî hewl didin: CPU û bîranîn dê her gav ji bo pêvajoyên din bikêr bin. Ji bo çareserkirina vê pirsgirêkê, me biryar da ku bikar bînin Pêşîniyên Kubernetes Pod. Fikir ev e ku meriv ji mîkroxizmetên din (bêdewlet) pêşanîyek mezintir bide Ingesters. Dema ku pêdivî ye ku em pêvekek (N + 1) Ingester bimeşînin, em bi demkî pelên din, piçûktir vediguhezînin. Van pods ji çavkaniyên belaş ên li ser makîneyên din re têne veguheztin, ku "holek" têra xwe mezin dihêle ku Ingesterek zêde bixebite.

Roja Pêncşemê, 18ê Tîrmehê, me çar astên pêşîn ên nû ji komên xwe re derxistin: rexneyan, bilind, navîn и kêm. Ew bi qasî yek hefte li ser komek hundurîn bêyî seyrûsefera xerîdar hatin ceribandin. Ji hêla xwerû ve, podên bêyî pêşînek diyarkirî wergirtin navîn pêşanî, çîna ji bo Ingesters bi danîn bilind pêşeyî. Rexneyan ji bo çavdêriyê hate veqetandin (Prometheus, Alertmanager, nod-exporter, kube-state-metrics, hwd.). Veavakirina me vekirî ye, û hûn dikarin PR-ê bibînin vir.

Qeza

Roja Înê, 19ê Tîrmehê, yek ji endezyaran ji bo xerîdarek mezin komek Cortex-a nû ya veqetandî dest pê kir. Veavakirina vê komê pêşanînên podên nû negirt, ji ber vê yekê hemî podên nû pêşanîyek xwerû hatin destnîşan kirin - navîn.

Koma Kubernetes ji bo koma nû ya Cortex çavkaniyên têra xwe tune bû, û koma hilberîna heyî ya Cortex nehat nûve kirin (Girtî bêpar man bilind pêşeyî). Ji ber ku Ingesters ji koma nû bi xweber hebûn navîn pêşanî, û pêlên heyî yên di hilberînê de qet bê pêşanî xebitîn, Kevirên koma nû li şûna Ingesters ji koma hilberîna Cortex ya heyî veguherandin.

ReplicaSet ji bo Ingesterê hatî derxistin di komika hilberînê de podê jêkirî tesbît kir û yekî nû çêkir da ku hejmara diyarkirî ya kopiyan biparêze. Poda nû ji hêla xwerû ve hatî destnîşan kirin navîn pêşanî, û Ingesterek din "kevn" di hilberînê de çavkaniyên xwe winda kir. Encam bû pêvajoya avalanche, ku bû sedema jicîhûwarkirina hemî podên ji Ingester ji bo komên hilberîna Cortex.

Vexwarin dewletdar in û daneyên 12 demjimêrên berê hilînin. Ev dihêle ku em berî ku wan li hilanîna dirêj-dirêj binivîsin wan bi bandortir bişkînin. Ji bo ku bigihîje vê yekê, Cortex bi karanîna Tabloyek Hash-a Belavkirî (DHT) daneyan li seranserê rêzan dişoxilîne û her rêzê li sê Ingesters bi karanîna hevrêziya quorum-a şêwaza Dynamo dubare dike. Cortex daneyan ji Ingestersên ku neçalak in nanivîse. Ji ber vê yekê, dema ku hejmareke mezin ji Ingesters ji DHT-ê derdikevin, Cortex nikare têra xwe dubarekirina têketinê peyda bike, û ew têk diçin.

Tespîtkirin û Çareserkirin

Agahiyên nû yên Prometheus li ser bingeha "budceya xeletiyê" (error-budceya-based - hûrgulî dê di gotarek pêşerojê de xuya bibin) 4 hûrdem piştî destpêkirina sekinandinê dest bi dengdana alarmê kir. Di nav pênc hûrdemên din de, me hin tespît kirin û komika Kubernetes ya bingehîn mezin kir da ku hem komikên hilberîna nû û hem jî yên heyî mêvandar bikin.

Piştî pênc hûrdemên din, Ingesterên kevn bi serfirazî daneyên xwe nivîsandin, yên nû dest pê kirin, û komên Cortex dîsa peyda bûn.

10 hûrdemên din ji bo teşhîskirin û rastkirina xeletiyên derveyî-bîra (OOM) ji proxeyên berevajî yên erêkirinê yên li ber Cortex hatine xerc kirin. Çewtiyên OOM ji ber zêdebûna deh qat di QPS-ê de çêbûn (em bawer dikin ji ber daxwazên pir dijwar ên ji serverên Prometheus ên xerîdar).

Hilbijartin

Demjimêra tevahî 26 hûrdem bû. Ti data winda nebû. Ingesters bi serfirazî hemî daneyên nav-bîrê li hilanîna dirêj-dirêj bar kirine. Di dema girtinê de, serverên Prometheus ên xerîdar hatin jêbirin (dûr) tomar bi kar tînin API-ya nû remote_write li ser bingeha WAL (ji hêla Callum Styan ji Grafana Labs) û nivîsên têkçûyî yên piştî qezayê dubare kirin.

Çawa pêşaniyên pod li Kubernetes bû sedema bêhnvedanê li Grafana Labs
Operasyonên nivîsandina koma hilberînê

vebiguherin

Girîng e ku ji vê bûyerê ders bê girtin û ji bo dûbarebûna wê gavên pêwîst bên avêtin.

Di paşerojê de, diviyabû me xwerû destnîşan nekira navîn pêşanî heya ku hemî Ingesterên di hilberînê de nestînin bilind pêşînek. Bi ser de jî, pêwîst bû ku pêşî li wan bê girtin bilind pêşeyî. Her tişt niha rast e. Em hêvî dikin ku ezmûna me dê ji rêxistinên din re bibe alîkar ku li Kubernetes pêşîneyên pod bikar bînin.

Em ê astek din a kontrolê li ser bicîhkirina her tiştên din ên ku veavakirinên wan gerdûnî ne li komê zêde bikin. Ji niha û pê de, guhertinên bi vî rengî dê bên nirxandin bоbêtir mirovan. Wekî din, guheztina ku bû sedema têkçûnê ji bo belgeyek projeyek cihê pir piçûk hate hesibandin - ew tenê di pirsgirêkek GitHub de hate nîqaş kirin. Ji niha û pê ve, hemî guhertinên bi vî rengî yên mîhengan dê bi belgeyên projeyê yên guncan re werin hev.

Di dawiyê de, em ê ji nû ve mezinbûna proxeya berevajî ya erêkirinê otomatîk bikin da ku pêşî li bargiraniya OOM ya ku me dîtiye bigire, û em ê mîhengên xwerû yên Prometheus ên têkildarî paşveçûn û pîvandinê binirxînin da ku di pêşerojê de pêşî li pirsgirêkên wekhev bigirin.

Têkçûn di heman demê de hin encamên erênî jî hebûn: piştî wergirtina çavkaniyên pêwîst, Cortex bixweber bêyî destwerdana zêde xelas bû. Her weha me ezmûnek hêja bi xebata bi dest xist Grafana Loki - Pergala meya berhevkirina têketinê ya nû - ya ku alîkariya me kir ku hemî Ingesters di dema têkçûnê û piştî têkçûnê de bi rêkûpêk tevbigerin.

PS ji wergêr

Li ser bloga me jî bixwînin:

Source: www.habr.com

Add a comment