Post Mortem sou Quay.io indisponibilite

Remak. trad.: nan kòmansman mwa Out, Red Hat te pale piblikman sou rezoud pwoblèm aksè ke itilizatè sèvis li yo te rankontre nan mwa anvan yo. Quay.io (li baze sou yon rejis pou imaj veso, ke konpayi an te resevwa ansanm ak achte nan CoreOS). Kèlkeswa enterè w genyen nan sèvis sa a kòm sa, chemen enjenyè SRE konpayi an te pran pou fè dyagnostik ak elimine kòz aksidan an se edikatif.

Post Mortem sou Quay.io indisponibilite

Sou 19 me, byen bonè nan maten an (Eastern Daylight Time, EDT), sèvis la quay.io te fè aksidan. Aksidan an te afekte tou de konsomatè quay.io ak pwojè Open Source lè l sèvi avèk quay.io kòm yon platfòm pou bati ak distribye lojisyèl. Red Hat bay konfyans tou de.

Yon ekip enjenyè SRE te enplike imedyatman epi yo te eseye estabilize sèvis Quay la pi vit posib. Sepandan, pandan y ap fè sa, kliyan pèdi kapasite pou pouse nouvo imaj, epi sèlman detanzantan yo te kapab rale sa ki deja egziste. Pou kèk rezon enkoni, baz done a quay.io te bloke apre yo fin monte sèvis la nan kapasite konplè.

«Ki sa ki chanje?"- sa a se premye kesyon ki anjeneral mande nan ka sa yo. Nou remake ke yon ti tan anvan pwoblèm nan, OpenShift Dedicated cluster la (ki kouri quay.io) te kòmanse mete ajou nan vèsyon 4.3.19. Depi quay.io kouri sou Red Hat OpenShift Dedicated (OSD), mizajou regilye yo te woutin epi pa janm te lakòz pwoblèm. Anplis de sa, pandan sis mwa anvan yo, nou te amelyore gwoup Quay plizyè fwa san okenn entèripsyon nan sèvis la.

Pandan nou t ap eseye retabli sèvis la, lòt enjenyè yo te kòmanse prepare yon nouvo gwoup OSD ak vèsyon anvan lojisyèl an, pou si yon bagay te rive, yo te kapab deplwaye tout bagay sou li.

Analiz kòz rasin

Sentòm prensipal echèk la se te yon lavalas plizyè dizèn milye koneksyon baz done, ki te rann egzanp MySQL la efikasman pa fonksyone. Sa fè li difisil pou dyagnostike pwoblèm nan. Nou te fikse yon limit sou kantite maksimòm koneksyon kliyan yo pou ede ekip SRE a evalye pwoblèm nan. Nou pa t remake okenn trafik etranj nan baz done a: an reyalite, pifò demann yo te li, epi sèlman kèk te ekri.

Nou te eseye tou idantifye yon modèl nan trafik baz done a ki ta ka lakòz lavalas sa a. Sepandan, nou pa t 'kapab jwenn okenn modèl nan mòso bwa yo. Pandan n ap tann nouvo gwoup la ak OSD 4.3.18 pare, nou kontinye ap eseye lanse gous quay.io. Chak fwa gwoup la rive nan kapasite plen, baz done a ta friz. Sa vle di ke li te nesesè pou rekòmanse egzanp RDS anplis de tout gous quay.io.

Nan aswè, nou estabilize sèvis la nan mòd lekti sèlman epi enfim anpil fonksyon ki pa esansyèl ke posib (pa egzanp, koleksyon fatra espas non) pou diminye chaj la sou baz done a. Jele yo sispann men rezon an pa t janm jwenn. Nouvo gwoup OSD la te pare, epi nou te imigre sèvis la, konekte trafik ak kontinye siveyans.

Quay.io te travay estab sou nouvo gwoup OSD la, kidonk nou te retounen nan mòso baz done yo, men nou pa t 'kapab jwenn yon korelasyon ki ta eksplike blokaj yo. Enjenyè OpenShift te travay avèk nou pou konprann si chanjman ki fèt nan Red Hat OpenShift 4.3.19 ta ka lakòz pwoblèm ak Quay. Sepandan, pa gen anyen yo te jwenn, ak Li pa t posib pou repwodui pwoblèm nan nan kondisyon laboratwa.

Dezyèm echèk

Sou 28 me, yon ti tan anvan midi EDT, quay.io te fè aksidan ankò ak menm sentòm la: baz done a te bloke. Epi ankò nou jete tout efò nou yo nan ankèt la. Premye a tout, li te nesesè yo retabli sèvis la. Sepandan fwa sa a rdemare RDS ak rekòmanse gous quay.io pa fè anyen: gen yon lòt lavalas koneksyon akable baz la. Men poukisa?

Quay ekri nan Python epi chak gous opere kòm yon sèl veso monolitik. Ègzekutabl veso a kouri anpil travay paralèl ansanm. Nou itilize bibliyotèk la gevent anba gunicorn pou trete demann entènèt. Lè yon demann vini nan Quay (atravè pwòp API nou an, oswa atravè API Docker a), yo asiyen li yon travayè gevent. Tipikman travayè sa a ta dwe kontakte baz done a. Apre premye echèk la, nou te dekouvri ke travayè gevent yo te konekte nan baz done a lè l sèvi avèk paramèt default yo.

Etandone kantite siyifikatif nan gous Quay ak dè milye de demann fèk ap rantre pou chak segonn, yon gwo kantite koneksyon baz done ta ka teyorikman akable egzanp MySQL la. Gras a siveyans, li te konnen ke Quay trete yon mwayèn de 5 mil demann pou chak segonn. Kantite koneksyon ak baz done a te apeprè menm. 5 mil koneksyon te byen nan kapasite egzanp RDS nou an (ki pa ka di sou dè dizèn de milye). Pou kèk rezon, te gen pwent inatandi nan kantite koneksyon, sepandan, nou pa remake okenn korelasyon ak demann fèk ap rantre yo.

Fwa sa a, nou te detèmine pou jwenn ak elimine sous pwoblèm nan, epi yo pa limite tèt nou nan yon rdemare. Nan baz kòd Quay la chanjman yo te fè pou limite kantite koneksyon ak baz done a pou chak travayè gevent. Nimewo sa a te vin tounen yon paramèt nan konfigirasyon an: li te vin posib chanje li sou vole a san yo pa bati yon nouvo imaj veso. Pou chèche konnen konbyen koneksyon ki ka reyalistikman okipe, nou te fè plizyè tès nan yon anviwònman staging, mete diferan valè yo wè ki jan sa a ta afekte senaryo tès chaj. Kòm yon rezilta, li te dekouvri ke Quay kòmanse voye 502 erè lè kantite koneksyon depase 10 mil.

Nou imedyatman deplwaye nouvo vèsyon sa a nan pwodiksyon epi yo te kòmanse kontwole orè koneksyon baz done a. Nan tan lontan, baz la te fèmen apre apeprè 20 minit. Apre 30 minit san pwoblèm nou te gen espwa, ak yon èdtan apre nou te gen konfyans. Nou te retabli trafik sou sit la epi nou te kòmanse analiz postmortem.

Èske w gen jere kontoune pwoblèm nan ki mennen nan bloke, nou poko jwenn vrè rezon li yo. Li te konfime ke li pa gen rapò ak okenn chanjman nan OpenShift 4.3.19, depi menm bagay la te rive sou vèsyon 4.3.18, ki te deja travay ak Quay san okenn pwoblèm.

Te gen klèman yon lòt bagay ki kache nan gwoup la.

Etid detaye

Quay.io te itilize paramèt default yo pou konekte avèk baz done a pandan sis ane san okenn pwoblèm. Kisa ki chanje? Li klè ke pandan tout tan sa a trafik sou quay.io te grandi piti piti. Nan ka nou an, li te sanble kòm si yo te rive jwenn kèk valè papòt, ki te sèvi kòm yon deklanche pou yon lavalas nan koneksyon. Nou te kontinye etidye mòso baz done yo apre dezyèm echèk la, men nou pa t jwenn okenn modèl oswa relasyon evidan.

Antretan, ekip SRE a ap travay sou amelyorasyon nan ka wè demann Quay ak sante sèvis an jeneral. Nouvo metrik ak tablodbò yo te deplwaye, ki montre ki pati nan Quay ki gen plis demann nan men kliyan yo.

Quay.io te travay byen jiska 9 jen. Maten an (EDT) nou te wè ankò yon ogmantasyon siyifikatif nan kantite koneksyon baz done. Fwa sa a pa te gen okenn tan, depi nouvo paramèt la limite kantite yo epi yo pa t pèmèt yo depase debi MySQL. Sepandan, pou apeprè demi èdtan, anpil itilizatè yo te note pèfòmans ralanti nan quay.io. Nou byen vit kolekte tout done posib lè l sèvi avèk zouti siveyans yo ajoute. Menm lè yon modèl parèt.

Jis anvan gwo koneksyon an, yo te fè yon gwo kantite demann nan API Rejis App a. Rejis App se yon karakteristik ti kras li te ye nan quay.io. Li pèmèt ou estoke bagay tankou tablo Helm ak resipyan ak metadata rich. Pifò itilizatè quay.io pa travay ak karakteristik sa a, men Red Hat OpenShift aktivman itilize li. OperatorHub kòm yon pati nan OpenShift magazen tout operatè yo nan Rejis App a. Operatè sa yo fòme baz pou ekosistèm chaj travay OpenShift ak modèl fonksyònman ki santre sou patnè (operasyon 2yèm jou).

Chak gwoup OpenShift 4 sèvi ak operatè ki soti nan OperatorHub entegre a pou pibliye yon katalòg operatè ki disponib pou enstalasyon epi bay mizajou pou moun ki deja enstale yo. Avèk popilarite a ap grandi nan OpenShift 4, kantite grap sou li atravè mond lan te ogmante tou. Chak gwoup sa yo telechaje kontni operatè pou kouri OperatorHub entegre, lè l sèvi avèk Rejis App andedan quay.io kòm backend la. Nan rechèch nou an pou sous pwoblèm nan, nou rate lefèt ke kòm OpenShift piti piti grandi nan popilarite, chaj la sou youn nan fonksyon yo raman itilize quay.io ogmante tou..

Nou te fè kèk analiz sou trafik demann Rejis App epi nou te gade kòd rejis la. Menm lè a, enpèfeksyon yo te revele, akòz ki demann nan baz done a pa te fòme optimal. Lè chaj la te ba, yo pa te lakòz okenn pwoblèm, men lè chaj la te ogmante, yo te vin yon sous pwoblèm. Rejis App te vin gen de pwen final pwoblèm ki pa t byen reponn a ogmante chaj: premye a te bay yon lis tout pakè nan depo a, dezyèm lan te retounen tout pak pou pake a.

Eliminasyon kòz yo

Pandan semèn kap vini an nou te pase optimize kòd Rejis App a li menm ak anviwònman li yo. Klèman demann SQL ki pa efikas yo te retravay ak apèl kòmand ki pa nesesè yo te elimine tar (li te kouri chak fwa tach yo te rekipere), kachèt te ajoute tout kote sa posib. Lè sa a, nou te fè tès pèfòmans vaste epi konpare vitès Rejis App a anvan ak apre chanjman yo.

Demann API ki te deja pran jiska mwatye yon minit yo kounye a fini an milisgond. Semèn kap vini an nou te deplwaye chanjman yo nan pwodiksyon, e depi lè sa a quay.io ap travay estab. Pandan tan sa a, te gen plizyè pwent byen file nan trafik sou pwen final Rejis App a, men amelyorasyon yo te fè anpeche pann baz done a.

Kisa nou aprann?

Li klè ke nenpòt sèvis eseye evite D '. Nan ka nou an, nou kwè ke dènye pann yo te ede fè quay.io pi bon. Nou te aprann kèk leson kle ke nou ta renmen pataje:

  1. Done sou ki moun ki sèvi ak sèvis ou ak ki jan yo pa janm initil. Paske Quay "jis te travay," nou pa janm te oblije pase tan optimize trafik ak jere chaj. Tout bagay sa yo te kreye yon fo sans sekirite ke sèvis la te kapab echèl endefiniman.
  2. Lè sèvis la desann, jwenn li tounen moute ak kouri se yon pi gwo priyorite.. Paske Quay te kontinye soufri ak yon baz done fèmen pandan premye pann lan, pwosedi estanda nou yo pa t gen efè entansyonèl e nou pa t kapab retabli sèvis la lè l sèvi avèk yo. Sa a te mennen nan yon sitiyasyon kote tan yo te dwe pase analize ak kolekte done nan espwa jwenn kòz la rasin - olye pou yo konsantre tout efò sou restorasyon fonctionnalités.
  3. Evalye enpak chak karakteristik sèvis yo. Kliyan yo raman itilize App Registry, kidonk li pa t 'yon priyorite pou ekip nou an. Lè kèk karakteristik pwodwi yo apèn itilize, pinèz yo raman parèt, ak devlopè sispann kontwole kòd la. Li fasil pou tonbe nan miskonsepsyon ke sa a se fason li ta dwe-jiskaske toudenkou fonksyon sa a jwenn tèt li nan sant la nan yon gwo ensidan.

Ki sa ki nan pwochen?

Travay pou asire estabilite sèvis la pa janm sispann e nou toujou ap amelyore li. Kòm volim trafik kontinye ap grandi sou quay.io, nou rekonèt ke nou gen yon responsablite pou fè tout sa nou kapab pou respekte konfyans kliyan nou yo. Se poutèt sa, kounye a nou ap travay sou travay sa yo:

  1. Deplwaye kopi baz done lekti sèlman pou ede sèvis la jere trafik apwopriye nan ka ta gen pwoblèm ak egzanp prensipal RDS la.
  2. Mete ajou yon egzanp RDS. Vèsyon aktyèl la tèt li se pa pwoblèm nan. Olye de sa, nou tou senpleman vle retire fo santye an (ki nou te swiv pandan echèk la); Kenbe lojisyèl an ajou pral elimine yon lòt faktè nan ka ta gen pann nan lavni.
  3. Lòt kachèt atravè tout gwoup la. Nou kontinye chèche zòn kote kachèt ka diminye chaj la sou baz done a.
  4. Ajoute yon pare-feu aplikasyon entènèt (WAF) pou wè ki moun ki konekte ak quay.io ak poukisa.
  5. Apati pwochen lage a, gwoup Red Hat OpenShift pral abandone App Registry an favè Katalòg Operatè ki baze sou imaj veso ki disponib sou quay.io.
  6. Yon ranplasman alontèm pou App Registry ta ka sipò pou spesifikasyon objè Open Container Initiative (OCI). Kounye a li aplike kòm fonksyonalite natif natal Quay epi yo pral disponib pou itilizatè yo lè spesifikasyon nan tèt li finalize.

Tout sa ki pi wo yo fè pati envestisman kontinyèl Red Hat nan quay.io pandan n ap soti nan yon ti ekip "style startup" a yon platfòm ki gen matirite ki baze sou SRE. Nou konnen ke anpil nan kliyan nou yo konte sou quay.io nan travay chak jou yo (tankou Red Hat!) epi nou eseye transparan ke posib sou dènye pann ak efò kontinyèl yo amelyore.

PS soti nan tradiktè

Li tou sou blog nou an:

Sous: www.habr.com

Add nouvo kòmantè