Jinsi vipaumbele vya pod katika Kubernetes vilisababisha kutokuwepo kwa muda katika Grafana Labs

Kumbuka. tafsiri.: Tunakuletea maelezo ya kiufundi kuhusu sababu za kukatika kwa hivi majuzi katika huduma ya wingu inayodumishwa na waundaji wa Grafana. Huu ni mfano halisi wa jinsi kipengele kipya na kinachoonekana kuwa muhimu sana kilichoundwa ili kuboresha ubora wa miundombinu... kinaweza kusababisha madhara ikiwa hutatoa nuances nyingi za matumizi yake katika uhalisia wa uzalishaji. Ni vizuri wakati nyenzo kama hii inaonekana ambayo hukuruhusu kujifunza sio tu kutoka kwa makosa yako. Maelezo yako katika tafsiri ya maandishi haya kutoka kwa makamu wa rais wa bidhaa kutoka Grafana Labs.

Jinsi vipaumbele vya pod katika Kubernetes vilisababisha kutokuwepo kwa muda katika Grafana Labs

Mnamo Ijumaa, Julai 19, huduma ya Mwenyeji wa Prometheus huko Grafana Cloud iliacha kufanya kazi kwa takriban dakika 30. Naomba radhi kwa wateja wote walioguswa na hitilafu hiyo. Kazi yetu ni kutoa zana za ufuatiliaji unazohitaji, na tunaelewa kuwa kutozipata kunaweza kufanya maisha yako kuwa magumu zaidi. Tunalichukulia tukio hili kwa uzito mkubwa. Dokezo hili linafafanua kilichotokea, jinsi tulivyojibu, na kile tunachofanya ili kuhakikisha kuwa hakijirudii tena.

kabla ya historia

Grafana Cloud Hosted Prometheus huduma inategemea Cortex - Mradi wa CNCF kuunda huduma ya Prometheus yenye usawa, inayopatikana sana, ya wapangaji wengi. Usanifu wa Cortex una seti ya microservices binafsi, ambayo kila mmoja hufanya kazi yake mwenyewe: kuiga, kuhifadhi, maswali, nk. Cortex inaendelezwa kikamilifu na inaongeza vipengele vipya kila mara na kuboresha utendaji. Mara kwa mara sisi hutuma matoleo mapya ya Cortex kwa makundi ili wateja waweze kunufaika na vipengele hivi - kwa bahati nzuri, Cortex inaweza kusasishwa bila kuchelewa.

Kwa masasisho bila mshono, huduma ya Ingester Cortex inahitaji nakala ya ziada ya Ingester wakati wa mchakato wa kusasisha. (Kumbuka. tafsiri.: Ingester - sehemu ya msingi ya Cortex. Kazi yake ni kukusanya mfululizo wa sampuli, kuziweka katika vikundi vya Prometheus na kuzihifadhi katika hifadhidata kama DynamoDB, BigTable au Cassandra.) Hii inaruhusu Ingesters ya zamani kusambaza data ya sasa kwa Ingesters mpya. Inafaa kumbuka kuwa Ingesters zinahitaji rasilimali. Ili waweze kufanya kazi, unahitaji kuwa na cores 4 na 15 GB ya kumbukumbu kwa pod, i.e. 25% ya nguvu ya usindikaji na kumbukumbu ya mashine ya msingi katika kesi ya makundi yetu ya Kubernetes. Kwa ujumla, kwa kawaida tuna rasilimali nyingi zaidi ambazo hazijatumika kwenye nguzo kuliko cores 4 na kumbukumbu ya GB 15, kwa hivyo tunaweza kuzungusha kwa urahisi viangizi hivi vya ziada wakati wa kusasisha.

Hata hivyo, mara nyingi hutokea kwamba wakati wa operesheni ya kawaida hakuna mashine yoyote iliyo na 25% ya rasilimali zisizotumiwa. Ndio, hata hatujitahidi: CPU na kumbukumbu zitakuwa muhimu kwa michakato mingine kila wakati. Ili kutatua tatizo hili, tuliamua kutumia Vipaumbele vya Kubernetes Pod. Wazo ni kuwapa Ingesters kipaumbele cha juu kuliko huduma ndogo ndogo (zisizo na utaifa). Tunapohitaji kuendesha Kiingiza cha ziada (N+1), tunahamisha maganda mengine madogo kwa muda. Maganda haya huhamishiwa kwenye rasilimali za bure kwenye mashine nyingine, na kuacha "shimo" kubwa la kutosha ili kuendesha Ingester ya ziada.

Alhamisi, Julai 18, tulizindua viwango vinne vipya vya kipaumbele kwa vikundi vyetu: kali, juu, wastani ΠΈ Asili. Zilijaribiwa kwenye kundi la ndani bila trafiki ya wateja kwa takriban wiki moja. Kwa chaguo-msingi, maganda bila kipaumbele maalum hupokelewa wastani kipaumbele, darasa liliwekwa kwa Ingesters na juu kipaumbele. Muhimu ilihifadhiwa kwa ufuatiliaji (Prometheus, Alertmanager, nodi-exporter, kube-state-metrics, n.k.). Usanidi wetu umefunguliwa, na unaweza kutazama PR hapa.

Crash

Mnamo Ijumaa, Julai 19, mmoja wa wahandisi alizindua nguzo mpya ya kujitolea ya Cortex kwa mteja mkubwa. Usanidi wa nguzo hii haukujumuisha vipaumbele vipya vya ganda, kwa hivyo maganda yote mapya yalipewa kipaumbele chaguo-msingi - wastani.

Nguzo ya Kubernetes haikuwa na rasilimali za kutosha kwa ajili ya nguzo mpya ya Cortex, na nguzo iliyopo ya uzalishaji wa Cortex haikusasishwa (Ingesters waliachwa bila juu kipaumbele). Kwa kuwa Waingizaji wa nguzo mpya kwa chaguo-msingi walikuwa na wastani kipaumbele, na maganda yaliyopo katika uzalishaji yalifanya kazi bila kipaumbele hata kidogo, Ingesters ya nguzo mpya ilibadilisha Ingesters kutoka kwa nguzo iliyopo ya uzalishaji ya Cortex.

ReplicaSet ya Ingester aliyefukuzwa katika kundi la uzalishaji iligundua ganda lililofukuzwa na kuunda jipya ili kudumisha idadi iliyobainishwa ya nakala. Podi mpya ilitolewa kwa chaguo-msingi wastani kipaumbele, na Ingester nyingine "ya zamani" katika uzalishaji ilipoteza rasilimali zake. Matokeo yalikuwa mchakato wa Banguko, ambayo ilisababisha kuhamishwa kwa maganda yote kutoka kwa Ingester kwa makundi ya uzalishaji wa Cortex.

Vidonge ni vya kawaida na huhifadhi data kwa saa 12 zilizopita. Hii huturuhusu kuzibana kwa ufanisi zaidi kabla ya kuziandika kwenye hifadhi ya muda mrefu. Ili kufanikisha hili, Cortex hugawanya data katika mfululizo kwa kutumia Jedwali la Hashi Iliyosambazwa (DHT) na kunakili kila mfululizo kwenye Viangizi vitatu kwa kutumia uthabiti wa akidi ya mtindo wa Dynamo. Cortex haiandiki data kwa Ingesters ambazo zimezimwa. Kwa hivyo, wakati idadi kubwa ya Ingesters inaondoka kwenye DHT, Cortex haiwezi kutoa marudio ya kutosha ya maingizo, na huanguka.

Utambuzi na Urekebishaji

Arifa mpya za Prometheus kulingana na "bajeti ya makosa" (kwa msingi wa makosa ya bajeti - maelezo yataonekana katika makala ya baadaye) ilianza kupiga kengele dakika 4 baada ya kuanza kwa kuzima. Katika muda wa dakika tano au zaidi zilizofuata, tuliendesha uchunguzi na kuongeza nguzo ya msingi ya Kubernetes ili kuandaa makundi mapya na yaliyopo ya uzalishaji.

Baada ya dakika nyingine tano, Ingesters ya zamani ilifanikiwa kuandika data zao, mpya zilianza, na makundi ya Cortex yakapatikana tena.

Dakika nyingine 10 zilitumika kuchunguza na kurekebisha makosa ya nje ya kumbukumbu (OOM) kutoka kwa seva mbadala za uthibitishaji zilizo mbele ya Cortex. Hitilafu za OOM zilisababishwa na ongezeko mara kumi la QPS (tunaamini kutokana na maombi makali kupita kiasi kutoka kwa seva za Prometheus za mteja).

madhara

Jumla ya muda wa mapumziko ulikuwa dakika 26. Hakuna data iliyopotea. Waingizaji wamefanikiwa kupakia data yote ya kumbukumbu kwenye hifadhi ya muda mrefu. Wakati wa kuzima, seva za mteja za Prometheus ziliakibishwa na kufutwa (mbali) rekodi kwa kutumia API mpya ya kidhibiti_andika kulingana na WAL (iliyoandikwa na Callum Styan kutoka Grafana Labs) na kurudia maandishi yaliyoshindwa baada ya ajali.

Jinsi vipaumbele vya pod katika Kubernetes vilisababisha kutokuwepo kwa muda katika Grafana Labs
Shughuli za uandishi wa nguzo za uzalishaji

Matokeo

Ni muhimu kujifunza kutokana na tukio hili na kuchukua hatua muhimu ili kuepuka kurudia kwake.

Kwa mtazamo wa nyuma, hatukupaswa kuweka chaguo-msingi wastani kipaumbele hadi Ingesters zote katika uzalishaji zimepokea juu kipaumbele. Kwa kuongeza, ilikuwa ni lazima kuwatunza mapema juu kipaumbele. Kila kitu kimewekwa sasa. Tunatumai uzoefu wetu utasaidia mashirika mengine yanayozingatia kutumia vipaumbele vya pod katika Kubernetes.

Tutaongeza kiwango cha ziada cha udhibiti wa uwekaji wa vitu vyovyote vya ziada ambavyo usanidi wake ni wa kimataifa kwa nguzo. Kuanzia sasa na kuendelea, mabadiliko hayo yatatathminiwa bΠΎwatu zaidi. Zaidi ya hayo, urekebishaji uliosababisha ajali ulizingatiwa kuwa mdogo sana kwa hati tofauti ya mradi - ilijadiliwa tu katika suala la GitHub. Kuanzia sasa, mabadiliko yote kama haya ya usanidi yataambatana na nyaraka zinazofaa za mradi.

Hatimaye, tutarekebisha ukubwa wa seva mbadala ya uthibitishaji kiotomatiki ili kuzuia upakiaji mwingi wa OOM tulioshuhudia, na tutakagua mipangilio chaguomsingi ya Prometheus inayohusiana na njia mbadala na kuongeza ili kuzuia matatizo kama haya katika siku zijazo.

Kushindwa pia kulikuwa na matokeo mazuri: baada ya kupokea rasilimali zinazohitajika, Cortex ilipona kiotomatiki bila uingiliaji wa ziada. Pia tulipata uzoefu muhimu wa kufanya kazi nao Grafana Loki - mfumo wetu mpya wa ujumlishaji wa kumbukumbu - ambao ulisaidia kuhakikisha kuwa Ingesters zote zinatenda ipasavyo wakati na baada ya kutofaulu.

PS kutoka kwa mtafsiri

Soma pia kwenye blogi yetu:

Chanzo: mapenzi.com

Kuongeza maoni