Kif il-prijoritajiet tal-pods f'Kubernetes ikkawżaw waqfien fil-Laboratorji Grafana

Nota. transl.: Nippreżentaw għall-attenzjoni tiegħek dettalji tekniċi dwar ir-raġunijiet għall-waqfien riċenti fis-servizz cloud miżmum mill-ħallieqa ta 'Grafana. Dan huwa eżempju klassiku ta' kif karatteristika ġdida u li tidher estremament utli mfassla biex ittejjeb il-kwalità tal-infrastruttura... tista' tikkawża ħsara jekk ma tipprovdix għall-bosta sfumaturi tal-applikazzjoni tagħha fir-realtajiet tal-produzzjoni. Huwa kbir meta materjali bħal dan jidhru li jippermettulek titgħallem mhux biss mill-iżbalji tiegħek. Id-dettalji jinsabu fit-traduzzjoni ta 'dan it-test mill-viċi president tal-prodott minn Grafana Labs.

Kif il-prijoritajiet tal-pods f'Kubernetes ikkawżaw waqfien fil-Laboratorji Grafana

Nhar il-Ġimgħa, 19 ta’ Lulju, is-servizz Hosted Prometheus fi Grafana Cloud waqaf jaħdem għal madwar 30 minuta. Niskuża ruħi mal-klijenti kollha affettwati mill-qtugħ. Ix-xogħol tagħna hu li nipprovdu l-għodod ta’ monitoraġġ li għandek bżonn, u nifhmu li li ma jkollokx disponibbli jista’ jagħmilha aktar diffiċli. Nieħdu dan l-inċident bis-serjetà kbira. Din in-nota tispjega x’ġara, kif irrispondejna, u x’qed nagħmlu biex niżguraw li ma jerġax iseħħ.

preistorja

Is-servizz ta' Grafana Cloud Hosted Prometheus huwa bbażat fuq Cortex — Proġett CNCF biex jinħoloq servizz Prometheus b'ħafna kerrejja, li jista' jiġi skalat orizzontalment, disponibbli ħafna. L-arkitettura Cortex tikkonsisti minn sett ta 'mikroservizzi individwali, li kull wieħed minnhom iwettaq il-funzjoni tiegħu stess: replikazzjoni, ħażna, mistoqsijiet, eċċ. Cortex jinsab taħt żvilupp attiv u qiegħed kontinwament iżid karatteristiċi ġodda u jtejjeb il-prestazzjoni. Aħna regolarment niskjeraw rilaxxi ġodda ta 'Cortex fi clusters sabiex il-klijenti jkunu jistgħu jieħdu vantaġġ minn dawn il-karatteristiċi - fortunatament, Cortex jista' jiġi aġġornat mingħajr waqfien.

Għal aġġornamenti bla xkiel, is-servizz Ingester Cortex jeħtieġ replika addizzjonali ta 'Ingester matul il-proċess ta' aġġornament. (Nota. transl.: Inġest - il-komponent bażiku tal-Cortex. Ix-xogħol tiegħu huwa li jiġbor fluss kostanti ta' kampjuni, jiġborhom f'biċċiet Prometheus u jaħżenhom f'database bħal DynamoDB, BigTable jew Cassandra.) Dan jippermetti lil Ingesters qodma jibagħtu dejta kurrenti lil Ingesters ġodda. Ta’ min wieħed jinnota li l-Ingesters jirrikjedu r-riżorsi. Biex jaħdmu, jeħtieġ li jkollok 4 cores u 15 GB ta 'memorja għal kull pod, i.e. 25% tal-qawwa tal-ipproċessar u l-memorja tal-magna bażi fil-każ tal-clusters Kubernetes tagħna. B'mod ġenerali, ġeneralment ikollna ħafna aktar riżorsi mhux użati fil-cluster minn 4 cores u 15 GB ta 'memorja, sabiex inkunu nistgħu faċilment ngħollu dawn l-ingesters addizzjonali waqt titjib.

Madankollu, ħafna drabi jiġri li waqt it-tħaddim normali l-ebda waħda mill-magni ma għandha dan il-25% tar-riżorsi mhux użati. Iva, lanqas biss nistinkaw: CPU u memorja dejjem se jkunu utli għal proċessi oħra. Biex issolvi din il-problema, iddeċidejna li nużaw Kubernetes Pod Prijoritajiet. L-idea hija li l-Ingesters tingħata prijorità ogħla minn mikroservizzi oħra (mingħajr stat). Meta neħtieġu li nħaddmu Ingester addizzjonali (N+1), nispostjaw temporanjament imżiewed iżgħar oħra. Dawn il-miżwed huma trasferiti għal riżorsi b'xejn fuq magni oħra, u jħallu "toqba" kbira biżżejjed biex tmexxi Ingester addizzjonali.

Nhar il-Ħamis, 18 ta’ Lulju, ħarġet erba’ livelli ta’ prijorità ġodda fir-raggruppamenti tagħna: kritiku, għolja, medju и baxxa. Ġew ittestjati fuq cluster intern mingħajr traffiku tal-klijenti għal madwar ġimgħa. B'mod awtomatiku, imżiewed mingħajr prijorità speċifikata riċevuti medju prijorità, klassi kienet stabbilita għal Ingesters ma għoli prijorità. Kritika kienet riżervata għall-monitoraġġ (Prometheus, Alertmanager, node-exporter, kube-state-metrics, eċċ.). Il-konfigurazzjoni tagħna hija miftuħa, u tista 'tara l-PR hawn.

Tiġrifa

Nhar il-Ġimgħa, 19 ta 'Lulju, wieħed mill-inġiniera nieda raggruppament Cortex dedikat ġdid għal klijent kbir. Il-konfigurazzjoni għal dan il-cluster ma kinitx tinkludi prijoritajiet ġodda tal-pods, għalhekk il-pods il-ġodda kollha ġew assenjati prijorità default - medju.

Il-cluster Kubernetes ma kellux biżżejjed riżorsi għall-cluster Cortex il-ġdid, u l-cluster Cortex tal-produzzjoni eżistenti ma kienx aġġornat (Ingesters tħallew mingħajr għoli prijorità). Peress li l-Ingesters tal-cluster il-ġdid b'mod awtomatiku kellhom medju prijorità, u l-imżiewed eżistenti fil-produzzjoni ħadmu mingħajr prijorità għal kollox, l-Ingesters tal-cluster il-ġdid issostitwixxu l-Ingesters mill-cluster eżistenti tal-produzzjoni tal-Cortex.

ReplicaSet għall-Ingester żgumbrat fil-grupp ta 'produzzjoni skopra l-pod żgumbrat u ħoloq wieħed ġdid biex iżomm in-numru speċifikat ta' kopji. Il-pod il-ġdid ġie assenjat awtomatikament medju prijorità, u Ingester ieħor "antik" fil-produzzjoni tilef ir-riżorsi tiegħu. Ir-riżultat kien proċess valanga, li wassal għall-ispostament tal-imżiewed kollha minn Ingester għal raggruppamenti ta 'produzzjoni ta' Cortex.

Ingesters huma stateful u jaħżnu dejta għat-12-il siegħa preċedenti. Dan jippermettilna nikkompressawhom b'mod aktar effiċjenti qabel niktbuhom għal ħażna fit-tul. Biex tikseb dan, Cortex shards data f'serje permezz ta 'Distributed Hash Table (DHT) u tirreplika kull serje fi tliet Ingesters billi tuża konsistenza tal-kworum ta' stil Dynamo. Cortex ma jiktebx dejta lil Ingesters li huma diżabbli. Għalhekk, meta numru kbir ta 'Ingesters iħallu d-DHT, Cortex ma jistax jipprovdi replikazzjoni suffiċjenti tal-entrati, u jiġġarrfu.

Sejbien u Rimedju

Notifiki ġodda ta' Prometheus ibbażati fuq "baġit ta' żball" (bbażat fuq il-baġit — id-dettalji se jidhru f'artiklu futur) bdew iddoqq l-allarm 4 minuti wara l-bidu tal-għeluq. Matul il-ħames minuti ta 'wara jew hekk, għamilna xi dijanjostiċi u kabbarna l-cluster ta' Kubernetes sottostanti biex jospita kemm ir-raggruppamenti ta 'produzzjoni ġodda kif ukoll eżistenti.

Wara ħames minuti oħra, l-Ingesters qodma kitbu b'suċċess id-dejta tagħhom, dawk ġodda bdew, u l-clusters tal-Cortex reġgħu saru disponibbli.

Intefqu 10 minuti oħra fid-dijanjosi u l-korrezzjoni ta' żbalji barra mill-memorja (OOM) minn prokuri b'lura ta' awtentikazzjoni li jinsabu quddiem Cortex. Żbalji OOM kienu kkawżati minn żieda għaxar darbiet fil-QPS (nemmnu minħabba talbiet aggressivi żżejjed mis-servers Prometheus tal-klijent).

Aftermath

Il-waqfien totali kien ta' 26 minuta. L-ebda data ma ntilfet. Ingesters għabbew b'suċċess id-dejta kollha fil-memorja f'ħażna fit-tul. Matul l-għeluq, servers klijent Prometheus buffered mħassra (remot) reġistrazzjonijiet bl-użu API ġdid remote_write ibbażat fuq WAL (awtur minn Callum Styan minn Grafana Labs) u rrepetiet il-kitbiet falluti wara l-ħabta.

Kif il-prijoritajiet tal-pods f'Kubernetes ikkawżaw waqfien fil-Laboratorji Grafana
Operazzjonijiet ta' kitba ta' cluster ta' produzzjoni

Sejbiet

Huwa importanti li titgħallem minn dan l-inċident u tieħu l-passi meħtieġa biex tiġi evitata rikorrenza tiegħu.

F'ħarsa b'lura, m'għandniex nistabbilixxu l-inadempjenza medju prijorità sakemm l-Ingesters kollha fil-produzzjoni jkunu rċevew għolja prijorità. Barra minn hekk, kien meħtieġ li tieħu ħsiebhom minn qabel għoli prijorità. Kollox huwa ffissat issa. Nittamaw li l-esperjenza tagħna tgħin lil organizzazzjonijiet oħra li jikkunsidraw li jużaw il-prijoritajiet tal-pods f'Kubernetes.

Aħna se nżidu livell addizzjonali ta 'kontroll fuq l-iskjerament ta' kwalunkwe oġġett addizzjonali li l-konfigurazzjonijiet tiegħu huma globali għall-cluster. Minn issa 'l quddiem, dawn il-bidliet se jkunu evalwati bоaktar nies. Barra minn hekk, il-modifika li kkawżat il-ħabta tqieset minuri wisq għal dokument ta' proġett separat - ġiet diskussa biss fi kwistjoni ta' GitHub. Minn issa 'l quddiem, it-tibdiliet kollha bħal dawn fil-konfigurazzjonijiet se jkunu akkumpanjati minn dokumentazzjoni xierqa tal-proġett.

Fl-aħħarnett, aħna se nawtomatizzaw id-daqs mill-ġdid tal-prokura inversa tal-awtentikazzjoni biex nipprevjenu l-OOM ta 'tagħbija żejda li rajna, u se nirrevedu s-settings default ta' Prometheus relatati mal-fallback u l-iskala biex jipprevjenu kwistjonijiet simili fil-futur.

In-nuqqas kellu wkoll xi konsegwenzi pożittivi: wara li rċeviet ir-riżorsi meħtieġa, Cortex irkupra awtomatikament mingħajr intervent addizzjonali. Ksibna wkoll esperjenza siewja naħdmu magħhom Grafana Loki - is-sistema l-ġdida tagħna ta' aggregazzjoni ta' zkuk - li għenet biex tiżgura li l-Ingesters kollha ġabu ruħhom kif suppost waqt u wara l-falliment.

PS minn traduttur

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment