Post Mortem ntawm Quay.io tsis muaj

Nco tseg. txhais.: Thaum Lub Yim Hli, Red Hat tau tshaj tawm rau pej xeem txog kev daws teeb meem kev nkag mus tau zoo uas cov neeg siv ntawm nws cov kev pabcuam tau ntsib hauv lub hli dhau los Quay.io (nws yog raws li kev sau npe rau cov duab ntim, uas lub tuam txhab tau txais nrog rau kev yuav khoom ntawm CoreOS). Txawm hais tias koj txaus siab rau qhov kev pabcuam no, txoj hauv kev uas lub tuam txhab SRE engineers coj los kuaj xyuas thiab tshem tawm qhov ua rau muaj kev sib tsoo yog kev qhia.

Post Mortem ntawm Quay.io tsis muaj

Thaum lub Tsib Hlis 19, thaum sawv ntxov (Lub Sijhawm Hnub Nruab Hnub Sab Hnub Tuaj, EDT), qhov kev pabcuam quay.io poob. Qhov kev huam yuaj cuam tshuam rau ob qho tib si quay.io cov neeg siv khoom thiab Open Source cov haujlwm siv quay.io ua lub platform rau kev tsim thiab faib software. Red Hat muaj nuj nqis rau kev ntseeg ntawm ob qho tib si.

Ib pab neeg ntawm SRE engineers tam sim ntawd tau koom tes thiab sim ua kom ruaj khov ntawm Quay kev pabcuam sai li sai tau. Txawm li cas los xij, thaum lawv ua qhov no, cov neeg siv khoom poob lub peev xwm los thawb cov duab tshiab, thiab qee zaus lawv tuaj yeem rub cov uas twb muaj lawm. Rau qee qhov laj thawj tsis paub, quay.io database raug thaiv tom qab ntsuas qhov kev pabcuam kom muaj peev xwm.

Β«Dab tsi tau hloov lawm?" - qhov no yog thawj lo lus nug uas feem ntau nug hauv cov xwm txheej zoo li no. Peb pom tias tsis ntev ua ntej qhov teeb meem, OpenShift Dedicated pawg (uas khiav quay.io) pib hloov kho rau version 4.3.19. Txij li thaum quay.io khiav ntawm Red Hat OpenShift Dedicated (OSD), kev hloov tshiab tsis tu ncua yog niaj hnub thiab tsis muaj teeb meem. Ntxiv mus, dhau rau lub hlis dhau los, peb tau hloov kho Quay pawg ntau zaus yam tsis muaj kev cuam tshuam hauv kev pabcuam.

Thaum peb tab tom sim kho qhov kev pabcuam, lwm tus engineers pib npaj OSD pawg tshiab nrog cov software dhau los, yog li ntawd yog tias muaj qee yam tshwm sim, lawv tuaj yeem xa txhua yam ntawm nws.

Keeb Kwm Analysis

Cov tsos mob tseem ceeb ntawm qhov tsis ua haujlwm yog qhov avalanche ntawm kaum tawm txhiab tus database kev sib txuas, uas ua rau MySQL piv txwv tsis zoo. Qhov no ua rau nws nyuaj rau kev txheeb xyuas qhov teeb meem. Peb tau teeb tsa qhov kev txwv ntau tshaj plaws ntawm kev sib txuas los ntawm cov neeg siv khoom los pab pawg SRE ntsuas qhov teeb meem. Peb tsis pom qhov txawv txav mus rau hauv cov ntaub ntawv: qhov tseeb, feem ntau cov lus thov tau nyeem, thiab tsuas yog ob peb tus tau sau.

Peb kuj tau sim txheeb xyuas tus qauv hauv cov ntaub ntawv tsheb thauj mus los uas tuaj yeem ua rau lub avalanche no. Txawm li cas los xij, peb nrhiav tsis tau cov qauv hauv cov cav. Thaum tos rau pawg tshiab nrog OSD 4.3.18 kom npaj tau, peb txuas ntxiv sim tso tawm quay.io pods. Txhua lub sij hawm cov pawg mus txog qhov muaj peev xwm, cov ntaub ntawv yuav khov. Qhov no txhais tau tias nws yuav tsum rov pib dua RDS piv txwv ntxiv rau tag nrho quay.io pods.

Txog thaum yav tsaus ntuj, peb ruaj khov qhov kev pabcuam hauv hom nyeem nkaus xwb thiab ua haujlwm tsis tau ntau yam tsis tseem ceeb raws li qhov ua tau (piv txwv li, namespace garbage collection) kom txo cov load ntawm cov ntaub ntawv. Freezes tau nres tab sis qhov laj thawj tsis tau pom. Lub OSD pawg tshiab tau npaj txhij, thiab peb tau tsiv mus rau qhov kev pabcuam, kev sib txuas ntawm cov tsheb khiav thiab kev soj ntsuam txuas ntxiv.

Quay.io ua haujlwm ruaj khov ntawm OSD pawg tshiab, yog li peb rov qab mus rau cov ntaub ntawv teev cia, tab sis nrhiav tsis pom qhov sib cuam tshuam uas yuav piav qhia txog kev thaiv. OpenShift engineers tau ua haujlwm nrog peb kom nkag siab seb qhov kev hloov pauv hauv Red Hat OpenShift 4.3.19 tuaj yeem ua teeb meem nrog Quay. Txawm li cas los xij, tsis muaj dab tsi pom, thiab Nws tsis muaj peev xwm rov tsim dua qhov teeb meem hauv chav kuaj mob.

Qhov thib ob ua tsis tiav

Thaum lub Tsib Hlis 28, tsis ntev ua ntej tav su EDT, quay.io tsoo dua nrog cov tsos mob zoo ib yam: cov ntaub ntawv tau raug thaiv. Thiab ib zaug ntxiv peb tau cuam tshuam tag nrho peb cov kev siv zog rau hauv kev tshawb nrhiav. Ua ntej ntawm tag nrho cov, nws yog ib qhov tsim nyog los kho qhov kev pab cuam. Txawm li cas los lub sij hawm no rebooting RDS thiab restarting quay.io pods tsis muaj dab tsi: lwm avalanche ntawm kev sib txuas tau dhau los ntawm lub hauv paus. Tab sis vim li cas?

Quay yog sau rau hauv Python thiab txhua lub pod ua haujlwm ua ib lub thawv monolithic. Lub thawv runtime khiav ntau yam haujlwm sib luag ib txhij. Peb siv lub tsev qiv ntawv gevent hauv qab gunicorn los ua cov kev thov hauv web. Thaum qhov kev thov nkag mus rau hauv Quay (ntawm peb tus kheej API, lossis ntawm Docker's API), nws tau muab tus neeg ua haujlwm gevent. Feem ntau tus neeg ua haujlwm no yuav tsum hu rau lub database. Tom qab thawj qhov ua tsis tiav, peb pom tias cov neeg ua haujlwm gevent tau txuas mus rau lub chaw khaws ntaub ntawv siv qhov chaw pib.

Muab tus naj npawb tseem ceeb ntawm Quay pods thiab ntau txhiab qhov kev thov tuaj rau ib ob, ntau qhov kev sib txuas hauv database tuaj yeem cuam tshuam qhov MySQL piv txwv. Ua tsaug rau kev saib xyuas, nws tau paub tias Quay ua haujlwm nruab nrab ntawm 5 txhiab thov ib ob. Tus naj npawb ntawm kev sib txuas rau hauv database yog kwv yees li qub. 5 txhiab kev sib txuas tau zoo nyob rau hauv lub peev xwm ntawm peb RDS piv txwv (uas tsis tuaj yeem hais txog kaum tawm txhiab). Rau qee qhov yog vim li cas thiaj li muaj kev npaj txhij txog spikes hauv cov xov tooj sib txuasTxawm li cas los xij, peb tsis tau pom muaj kev cuam tshuam nrog cov lus thov tuaj.

Lub sijhawm no peb tau txiav txim siab los nrhiav thiab tshem tawm qhov chaw ntawm qhov teeb meem, thiab tsis txwv peb tus kheej rau kev rov ua haujlwm dua. Mus rau Quay codebase tau hloov pauv kom txwv tsis pub muaj kev sib txuas ntawm cov ntaub ntawv rau txhua tus neeg ua haujlwm kev. Tus naj npawb no tau dhau los ua qhov tsis sib xws hauv kev teeb tsa: nws tau los hloov nws ntawm ya yam tsis tsim lub thawv tshiab. Yuav kom paub seb muaj pes tsawg qhov kev sib txuas tuaj yeem ua tau raws li qhov tseeb, peb tau khiav ntau qhov kev sim hauv ib puag ncig staging, teeb tsa cov txiaj ntsig sib txawv kom pom tias qhov no yuav cuam tshuam li cas rau kev sim cov xwm txheej. Yog li ntawd, nws tau pom tias Quay pib cuam tshuam 502 qhov yuam kev thaum tus naj npawb ntawm kev sib txuas ntau tshaj 10 txhiab.

Peb tam sim no deployed no tshiab version rau ntau lawm thiab pib soj ntsuam lub database kev twb kev txuas lub sij hawm. Yav dhau los, lub hauv paus raug kaw tom qab li 20 feeb. Tom qab 30 feeb tsis muaj teeb meem peb muaj kev cia siab, thiab ib teev tom qab ntawd peb muaj kev ntseeg siab. Peb tau rov qab kho tsheb mus rau qhov chaw thiab pib soj ntsuam tom qab tuag.

Muaj kev tswj kom hla qhov teeb meem ua rau kev thaiv, peb tsis tau pom nws cov laj thawj tiag tiag. Nws tau lees paub tias nws tsis muaj feem cuam tshuam nrog kev hloov pauv hauv OpenShift 4.3.19, txij li qhov qub tau tshwm sim ntawm version 4.3.18, uas yav dhau los ua haujlwm nrog Quay yam tsis muaj teeb meem.

Muaj tseeb ib yam dab tsi lwm yam lurking nyob rau hauv pawg.

Kev kawm ntxaws

Quay.io siv lub neej ntawd teeb tsa los txuas rau lub database rau rau xyoo tsis muaj teeb meem. Dab tsi hloov? Nws yog qhov tseeb tias txhua lub sijhawm no tsheb khiav ntawm quay.io tau loj hlob tsis tu ncua. Nyob rau hauv peb cov ntaub ntawv, nws zoo li yog hais tias ib co nqi pib tau mus txog, uas yog ib tug ua rau ib tug avalanche ntawm kev sib txuas. Peb txuas ntxiv mus kawm cov ntaub ntawv teev cia tom qab qhov ua tsis tiav thib ob, tab sis tsis pom cov qauv lossis kev sib raug zoo.

Lub sijhawm no, pab pawg SRE tau ua haujlwm txhim kho rau Quay qhov kev thov kev saib xyuas thiab kev pabcuam kev noj qab haus huv tag nrho. Cov kev ntsuas tshiab thiab cov dashboards tau raug xa mus, qhia qhov twg ntawm Quay yog qhov xav tau los ntawm cov neeg siv khoom.

Quay.io ua haujlwm zoo kom txog rau thaum Lub Rau Hli 9th. Tag kis no (EDT) peb rov pom qhov nce ntxiv ntawm cov ntaub ntawv sib txuas. Lub sij hawm no tsis muaj downtime, txij li qhov ntsuas tshiab txwv lawv tus lej thiab tsis tso cai rau lawv tshaj MySQL throughput. Txawm li cas los xij, txog li ib nrab ib teev, ntau tus neeg siv tau sau tseg tias kev ua haujlwm qeeb ntawm quay.io. Peb tau sau tag nrho cov ntaub ntawv sai sai uas siv cov cuab yeej saib xyuas ntxiv. Dheev ib tug qauv tshwm sim.

Tsuas yog ua ntej muaj kev sib txuas, ntau qhov kev thov tau ua rau App Registry API. App Registry yog me ntsis-paub feature ntawm quay.io. Nws tso cai rau koj khaws cov khoom xws li Helm kab kos thiab ntim nrog cov ntaub ntawv nplua nuj. Feem ntau cov neeg siv quay.io tsis ua haujlwm nrog cov yam ntxwv no, tab sis Red Hat OpenShift nquag siv nws. OperatorHub ua ib feem ntawm OpenShift khw muag khoom txhua tus neeg ua haujlwm hauv App Registry. Cov neeg ua haujlwm no tsim lub hauv paus rau OpenShift workload ecosystem thiab tus khub-centric operating qauv (Hnub 2 kev ua haujlwm).

Txhua OpenShift 4 pawg siv cov neeg ua haujlwm los ntawm OperatorHub built-in los tshaj tawm cov npe ntawm cov neeg ua haujlwm muaj rau kev teeb tsa thiab muab cov hloov tshiab rau cov uas twb tau teeb tsa lawm. Nrog rau qhov muaj koob meej ntawm OpenShift 4, tus naj npawb ntawm pawg ntawm nws thoob ntiaj teb kuj tau nce ntxiv. Txhua pawg no rub tawm cov neeg teb xov tooj cov ntsiab lus los khiav lub built-in OperatorHub, siv App Registry hauv quay.io ua tus backend. Hauv peb qhov kev tshawb nrhiav qhov chaw ntawm qhov teeb meem, peb tsis nco qab qhov tseeb tias thaum OpenShift maj mam loj hlob hauv qhov chaw, qhov kev thauj khoom ntawm ib qho tsis tshua siv quay.io ua haujlwm kuj nce ntxiv..

Peb tau ua qee qhov kev tshuaj xyuas ntawm App Registry thov kev khiav tsheb thiab saib cov npe teev npe. Tam sim ntawd, qhov tsis txaus ntseeg tau tshwm sim, vim cov lus nug rau cov ntaub ntawv tsis raug tsim kom zoo. Thaum lub load tsawg, lawv tsis ua teeb meem, tab sis thaum lub load nce, lawv dhau los ua qhov teeb meem. App Registry tau ua kom muaj ob qhov teeb meem kawg uas tsis teb zoo rau kev nce load: thawj zaug muab cov npe ntawm txhua pob khoom hauv qhov chaw cia khoom, qhov thib ob xa rov qab tag nrho cov blobs rau pob.

Kev tshem tawm vim li cas

Lub lim tiam tom ntej peb siv optimizing cov cai ntawm App Registry nws tus kheej thiab nws ib puag ncig. Kom meej meej tsis muaj txiaj ntsig SQL cov lus nug tau rov ua haujlwm thiab tsis tsim nyog hu xov tooj raug tshem tawm tar (nws tau khiav txhua lub sij hawm blobs tau muab rov qab), caching tau ntxiv qhov twg los tau. Tom qab ntawd peb tau ua qhov kev ntsuas kev ua tau zoo thiab muab piv rau qhov nrawm ntawm App Registry ua ntej thiab tom qab kev hloov pauv.

API thov uas yav dhau los siv mus txog ib nrab feeb tam sim no ua tiav hauv milliseconds. Lub lim tiam tom ntej peb tau xa cov kev hloov pauv rau kev tsim khoom, thiab txij li ntawd los quay.io tau ua haujlwm ruaj khov. Lub sijhawm no, muaj ntau qhov kev sib tw ntse hauv kev tsheb khiav ntawm App Registry kawg, tab sis kev txhim kho tau tiv thaiv cov ntaub ntawv tawm.

Peb tau kawm dab tsi?

Nws yog qhov tseeb tias txhua qhov kev pabcuam sim ua kom tsis txhob muaj sijhawm poob. Hauv peb qhov xwm txheej, peb ntseeg tias qhov kev tawm tsam tsis ntev los no tau pab ua kom quay.io zoo dua. Peb tau kawm ob peb zaj lus qhia tseem ceeb uas peb xav qhia:

  1. Cov ntaub ntawv hais txog leej twg siv koj qhov kev pabcuam thiab yuav ua li cas yeej tsis muaj txiaj ntsig. Vim Quay "tsuas yog ua haujlwm," peb tsis tau siv sijhawm los txhim kho tsheb thiab tswj kev thauj khoom. Tag nrho cov no tau tsim qhov tsis tseeb ntawm kev ruaj ntseg uas cov kev pabcuam tuaj yeem ntsuas tsis tau.
  2. Thaum qhov kev pabcuam poob qis, kom nws rov qab thiab khiav yog qhov tseem ceeb tshaj plaws.. Vim tias Quay txuas ntxiv raug kev txom nyem los ntawm cov ntaub ntawv kaw thaum lub sijhawm thawj zaug, peb cov txheej txheem txheej txheem tsis muaj qhov xav tau thiab peb tsis muaj peev xwm rov qab tau cov kev pabcuam siv lawv. Qhov no tau coj mus rau qhov xwm txheej uas lub sijhawm yuav tsum tau siv sijhawm los tshuaj xyuas thiab sau cov ntaub ntawv hauv kev cia siab ntawm kev nrhiav lub hauv paus ua rau - tsis txhob tsom mus rau txhua qhov kev siv zog ntawm kev rov ua haujlwm.
  3. Ntsuas qhov cuam tshuam ntawm txhua qhov kev pabcuam. Cov neeg siv khoom tsis tshua siv App Registry, yog li nws tsis yog qhov tseem ceeb rau peb pab neeg. Thaum qee cov khoom lag luam tsis tshua siv, lawv cov kab tsis tshua tshwm sim, thiab cov neeg tsim khoom tsis saib xyuas cov cai. Nws yog ib qho yooj yim los poob rau qhov kev xav tsis zoo tias qhov no yog txoj hauv kev uas nws yuav tsum yog - txog thaum tam sim ntawd qhov kev ua haujlwm pom nws tus kheej ntawm qhov chaw ntawm qhov xwm txheej loj.

Yuav ua li cas yog tom ntej no?

Kev ua haujlwm kom muaj kev ruaj ntseg ntawm cov kev pabcuam yeej tsis nres thiab peb niaj hnub txhim kho nws. Raws li cov tsheb thauj mus los tseem nce ntxiv ntawm quay.io, peb lees paub tias peb muaj lub luag haujlwm ua txhua yam peb ua tau kom ua raws li peb cov neeg siv khoom ntseeg siab. Yog li, tam sim no peb tab tom ua haujlwm rau cov haujlwm hauv qab no:

  1. Siv cov ntaub ntawv nyeem nkaus xwb replicas los pab cov kev pabcuam ua haujlwm tsim nyog thaum muaj teeb meem nrog thawj RDS piv txwv.
  2. Hloov kho RDS piv txwv. Tam sim no version nws tus kheej tsis yog qhov teeb meem. Es tsis txhob, peb tsuas xav tshem tawm txoj kev tsis tseeb (uas peb tau ua raws thaum tsis ua haujlwm); Ua kom lub software mus txog hnub tim yuav tshem tawm lwm yam hauv kev tshwm sim yav tom ntej.
  3. Ntxiv caching hla tag nrho pawg. Peb tseem tab tom nrhiav rau thaj chaw uas caching tuaj yeem txo cov load ntawm cov ntaub ntawv.
  4. Ntxiv lub web application firewall (WAF) kom pom leej twg txuas rau quay.io thiab vim li cas.
  5. Pib nrog qhov kev tso tawm tom ntej, Red Hat OpenShift pawg yuav tso tseg App Registry hauv kev pom zoo ntawm Cov Neeg Ua Haujlwm Catalogs raws li cov duab ntim muaj nyob ntawm quay.io.
  6. Kev hloov mus sij hawm ntev rau App Registry tuaj yeem yog kev txhawb nqa rau Open Container Initiative (OCI) artifact specifications. Nws yog tam sim no siv raws li haiv neeg Quay functionality thiab yuav muaj rau cov neeg siv thaum lub specification nws tus kheej yog tiav.

Tag nrho cov saum toj no yog ib feem ntawm Red Hat qhov kev nqis peev tsis tu ncua hauv quay.io thaum peb txav los ntawm pab pawg me "startup-style" mus rau qhov paub tab SRE-tsav platform. Peb paub tias ntau ntawm peb cov neeg siv khoom vam khom rau quay.io hauv lawv txoj haujlwm niaj hnub (xws li Red Hat!) thiab peb sim ua kom pom tseeb raws li qhov ua tau txog qhov tsis ntev los no thiab kev siv zog txuas ntxiv los txhim kho.

PS los ntawm tus txhais lus

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib