Post Mortem дар Quay.io дастрас набудани

Шарҳ. тарҷума.: дар аввали моҳи август, Red Hat дар бораи ҳалли мушкилоти дастрасӣ, ки корбарони хидмати он дар моҳҳои қабл дучор омада буданд, ба таври ошкоро сухан гуфт Quay.io (он ба феҳристи тасвирҳои контейнер асос ёфтааст, ки ширкат дар баробари хариди CoreOS онро гирифтааст). Новобаста аз таваҷҷӯҳи шумо ба ин хидмат, роҳе, ки муҳандисони SRE ширкат барои ташхис ва рафъи сабабҳои садама тай кардаанд, ибратбахш аст.

Post Mortem дар Quay.io дастрас набудани

Рӯзи 19 май, субҳи барвақт (Вақти рӯзонаи шарқӣ, EDT), хидмати quay.io садама зад. Садама ҳам ба истеъмолкунандагони quay.io ва ҳам лоиҳаҳои Open Source, ки quay.io-ро ҳамчун платформаи сохтан ва паҳн кардани нармафзор истифода мебаранд, таъсир расонд. Red Hat эътимоди ҳардуро қадр мекунад.

Гурӯҳи муҳандисони SRE фавран ба кор ҷалб карда шуд ва кӯшиш кард, ки хидмати Quayро ҳарчи зудтар ба эътидол оварад. Аммо, вақте ки онҳо ин корро мекарданд, мизоҷон қобилияти пахш кардани тасвирҳои навро аз даст доданд ва танҳо баъзан онҳо тавонистанд тасвирҳои мавҷударо кашанд. Бо баъзе сабабҳои номаълум, пойгоҳи додаҳои quay.io пас аз миқёси хидмат ба иқтидори пурра баста шуд.

«Чӣ тағйир ёфт?" - ин аввалин саволест, ки одатан дар чунин ҳолатҳо дода мешавад. Мо пай бурдем, ки чанде пеш аз нашр, кластери бахшидашудаи OpenShift (ки quay.io кор мекунад) ба навсозӣ ба версияи 4.3.19 оғоз кард. Азбаски quay.io дар Red Hat OpenShift Dedicated (OSD) кор мекунад, навсозиҳои мунтазам мунтазам буданд ва ҳеҷ гоҳ мушкилот намеоварданд. Гузашта аз ин, дар тӯли шаш моҳи гузашта, мо кластерҳои Quayро чанд маротиба бе ягон қатъ дар хидмат такмил додем.

Ҳангоме ки мо кӯшиш мекардем, ки хидматро барқарор кунем, муҳандисони дигар ба омода кардани кластери нави OSD бо версияи қаблии нармафзор шурӯъ карданд, то ки агар чизе рӯй диҳад, онҳо ҳама чизро дар он ҷойгир кунанд.

Таҳлили сабабҳои реша

Аломати асосии нокомӣ тармаи даҳҳо ҳазор пайвасти пойгоҳи додаҳо буд, ки инстансияи MySQL-ро ба таври муассир корношоям кард. Ин ташхиси мушкилотро душвор гардонд. Мо барои шумораи максималии пайвастшавӣ аз муштариён маҳдудият муқаррар кардем, то ба дастаи SRE дар арзёбии масъала кӯмак расонем. Мо ягон трафики ғайриоддӣ ба пойгоҳи додаҳоро мушоҳида накардем: воқеан, аксари дархостҳо хонда шуданд ва танҳо чандеашон навишта шуданд.

Мо инчунин кӯшиш кардем, ки намунаи трафики пойгоҳи додаҳоро муайян кунем, ки метавонад боиси ин тарма гардад. Вале мо дар гушахо ягон накша пайдо карда натавонистем. Ҳангоми интизории омода шудани кластери нав бо OSD 4.3.18, мо кӯшиши ба кор андохтани pods quay.io-ро идома додем. Ҳар дафъае, ки кластер ба иқтидори пуррааш расид, базаи маълумот ях мекунад. Ин маънои онро дошт, ки ба ғайр аз ҳама қуттиҳои quay.io мисоли RDS-ро аз нав оғоз кардан лозим буд.

То шом, мо хидматро дар ҳолати танҳо барои хондан мӯътадил кардем ва то ҳадди имкон бисёр функсияҳои ғайримуқаррариро ғайрифаъол кардем (масалан, ҷамъоварии партовҳои фазои номҳо) барои кам кардани сарбории пойгоҳи додаҳо. Яхкуниҳо қатъ шудаанд вале сабабаш то хол ёфт нашуд. Кластери нави OSD омода буд ва мо хидматро интиқол додем, трафикро пайваст кардем ва мониторингро идома додем.

Quay.io дар кластери нави OSD устувор кор мекард, аз ин рӯ мо ба гузоришҳои пойгоҳи додаҳо баргаштем, аммо робитае пайдо карда натавонистем, ки блокҳоро шарҳ диҳад. Муҳандисони OpenShift бо мо кор карданд, то бифаҳмем, ки оё тағирот дар Red Hat OpenShift 4.3.19 метавонад бо Quay мушкилот эҷод кунад. Бо вуҷуди ин, чизе ёфт нашуд, ва Дар шароити лабораторӣ такрор кардани мушкилот имкон надошт.

Нокомии дуюм

28 май, чанде пеш аз нисфирӯзии EDT, quay.io боз бо ҳамон аломат суқут кард: пойгоҳи додаҳо баста шуд. Ва боз тамоми кувваамонро ба тафтишот сарф кардем. Пеш аз хама, хизматрасониро баркарор кардан лозим буд. Аммо ин дафъа бозоғозкунии RDS ва аз нав оғоз кардани pods quay.io ҳеҷ коре накард: боз як тармаи алока базаро зер кард. Аммо барои чӣ?

Quay бо Python навишта шудааст ва ҳар як подк ҳамчун як контейнери монолитӣ кор мекунад. Вақти кори контейнер ҳамзамон бисёр вазифаҳои мувозиро иҷро мекунад. Мо аз китобхона истифода мебарем gevent дар зери gunicorn барои коркарди дархостҳои веб. Вақте ки дархост ба Quay ворид мешавад (тавассути API-и мо ё тавассути API Docker), ба он коргари gevent таъин карда мешавад. Одатан, ин коргар бояд ба базаи маълумот муроҷиат кунад. Пас аз нокомии аввал, мо дарёфтем, ки коргарони gevent бо истифода аз танзимоти пешфарз ба базаи маълумот пайваст мешаванд.

Бо дарназардошти шумораи зиёди қуттиҳои Quay ва ҳазорон дархостҳои воридотӣ дар як сония, шумораи зиёди пайвастҳои пойгоҳи додаҳо метавонанд мисоли MySQL-ро аз ҷиҳати назариявӣ пур кунанд. Ба туфайли мониторинг маълум шуд, ки Quay дар як сония ба ҳисоби миёна 5 ҳазор дархостро коркард мекунад. Шумораи пайвастшавӣ ба базаи маълумот тақрибан якхела буд. 5 ҳазор пайвастҳо дар доираи имкониятҳои намунаи RDS мо буданд (ки дар бораи даҳҳо ҳазорҳо гуфта намешавад). Аз чй сабаб бошад, ки дар шумораи пайвастшавихо хишахои гайричашмдошт ба амал омаданд, вале мо ягон таносуби бо дархостхои воридшавандаро пай набурдем.

Ин дафъа мо тасмим гирифтем, ки манбаи мушкилотро пайдо ва бартараф кунем ва худро бо бозсозӣ маҳдуд накунем. Ба пойгоҳи коди Quay барои махдуд кардани шумораи пайвастшавй ба базаи хар як коргар тагьирот дароварда шуд гевент. Ин рақам як параметр дар конфигуратсия шуд: имкон пайдо шуд, ки онро бидуни сохтани тасвири нави контейнер иваз кунед. Барои фаҳмидани он, ки чӣ қадар пайвастҳоро ба таври воқеӣ коркард кардан мумкин аст, мо дар муҳити саҳнавӣ якчанд санҷишҳо гузаронида, арзишҳои гуногунро муқаррар кардем, то бубинем, ки ин ба сенарияҳои санҷиши сарборӣ чӣ гуна таъсир мерасонад. Дар натича маълум шуд, ки Quay ба партофтани 502 хато оғоз мекунад, вақте ки шумораи пайвастҳо аз 10 ҳазор зиёд аст.

Мо фавран ин версияи навро дар истеҳсолот ҷойгир кардем ва ба мониторинги ҷадвали пайвастшавӣ ба пойгоҳи додаҳо шурӯъ кардем. Дар гузашта пойгоҳ пас аз тақрибан 20 дақиқа баста буд. Пас аз 30 дақиқаи бе мушкилот мо умед доштем ва баъд аз як соат мо боварӣ пайдо кардем. Мо трафикро ба сайт барқарор кардем ва таҳлили пас аз маргро оғоз кардем.

Бо гузашти мушкилоте, ки ба басташавӣ оварда мерасонад, сабабхои хакикии онро нафахмидем. Тасдиқ шуд, ки он ба ягон тағйирот дар OpenShift 4.3.19 иртибот надорад, зеро ҳамин чиз дар версияи 4.3.18, ки қаблан бо Quay бе мушкилот кор мекард, рух дод.

Дар кластер боз як чизи дигар пинхон шуда буд.

Омӯзиши муфассал

Quay.io танзимоти пешфарзро барои пайваст шудан ба пойгоҳи додаҳо дар тӯли шаш сол бидуни мушкилот истифода бурд. Чӣ тағйир ёфт? Маълум аст, ки дар тӯли ин муддат трафик дар quay.io мунтазам афзоиш ёфтааст. Дар ҳолати мо, ба назар чунин менамуд, ки гӯё арзиши ҳадди ақалл расида бошад, ки он ҳамчун ангезае барои тармаҳои пайвастшавӣ хидмат мекард. Мо омӯзиши гузоришҳои пойгоҳи додаҳоро пас аз нокомии дуюм идома додем, аммо ягон намуна ё муносибатҳои ошкоро наёфтем.

Дар ҳамин ҳол, дастаи SRE барои такмил додани мушоҳидаи дархости Quay ва саломатии умумии хидматрасонӣ кор кардааст. Метрикҳо ва панелҳои нав ҷойгир карда шуданд, нишон медиҳад, ки кадом қисматҳои Quay аз ҷониби муштариён бештар талабот доранд.

Quay.io то 9 июнь нагз кор кард. Субҳи имрӯз (EDT) мо боз афзоиши назарраси шумораи пайвастҳои пойгоҳи додаҳоро дидем. Ин дафъа дам бекорй набуд, зеро параметри нав шумораи онҳоро маҳдуд кард ва ба онҳо имкон надод, ки қобилияти MySQL-ро зиёд кунанд. Бо вуҷуди ин, тақрибан ним соат, бисёр корбарон кори сусти quay.io-ро қайд карданд. Мо бо истифода аз абзорҳои иловагии мониторинг ҳама маълумоти имконпазирро зуд ҷамъ кардем. Ногаҳон намунае пайдо шуд.

Танҳо пеш аз афзоиши пайвастҳо, ба API Registry App шумораи зиёди дархостҳо ворид карда шуданд. Феҳристи барномаҳо як хусусияти каме маълуми quay.io мебошад. Он ба шумо имкон медиҳад, ки чизҳои монанди диаграммаҳои Helm ва контейнерҳоро бо метамаълумоти бой нигоҳ доред. Аксари корбарони quay.io бо ин хусусият кор намекунанд, аммо Red Hat OpenShift онро фаъолона истифода мебарад. OperatorHub ҳамчун як қисми OpenShift ҳамаи операторҳоро дар Феҳристи Барномаҳо нигоҳ медорад. Ин операторҳо барои экосистемаи сарбории OpenShift ва модели амалиётии ба шарик нигаронидашуда (амалиёти рӯзи 2) асосро ташкил медиҳанд.

Ҳар як кластери OpenShift 4 операторҳоро аз OperatorHub-и дарунсохт истифода мебарад, то феҳристи операторҳоеро, ки барои насб дастрасанд, нашр кунад ва ба онҳое, ки аллакай насб шудаанд, навсозӣ кунад. Бо маъруфияти афзояндаи OpenShift 4, шумораи кластерҳо дар он дар саросари ҷаҳон низ афзоиш ёфт. Ҳар яке аз ин кластерҳо мундариҷаи операторро барои иҷро кардани OperatorHub-и дарунсохт бо истифода аз Феҳристи Барномаҳо дар quay.io ҳамчун пуштибон зеркашӣ мекунанд. Ҳангоми ҷустуҷӯи манбаи мушкилот, мо аз он дур шудем, ки бо тадриҷан маъруфияти OpenShift, сарборӣ ба яке аз функсияҳои кам истифодашавандаи quay.io низ афзоиш ёфт..

Мо каме таҳлили трафики дархости Барномаҳои Феҳристиро анҷом додем ва ба коди реестр назар кардем. Дархол нуксонхо ошкор карда шуданд, ки аз ин сабаб дархостхо ба база ба таври оптималй ташкил карда нашудаанд. Вахте ки бор кам буд, ягон душворй намеоварданд, вале вакте ки бор зиёд шуд, манбаи мушкилихо гардиданд. Реестри барномаҳо дорои ду нуқтаи ниҳоии мушкилӣ шуданд, ки ба афзоиши сарборӣ чандон ҷавоб намедиҳанд: якум рӯйхати ҳамаи бастаҳоро дар анбор пешниҳод кард, дуюмаш ҳамаи блокҳоро барои баста баргардонд.

Бартараф намудани сабабҳо

Дар давоми ҳафтаи оянда мо барои оптимизатсия кардани рамзи худи Реестри Барномаҳо ва муҳити он сарф кардем. Дархостҳои возеҳ бесамар SQL аз нав кор карда шуданд ва зангҳои фармонҳои нолозим бартараф карда шуданд tar (он ҳар дафъае, ки блбҳо гирифта мешуданд, иҷро мешуд), кэш ба қадри имкон илова карда шуд. Пас аз он мо озмоиши васеъи иҷроишро анҷом додем ва суръати Феҳристи Барномаҳоро пеш аз ва пас аз тағирот муқоиса кардем.

Дархостҳои API, ки қаблан то ним дақиқа тӯл мекашиданд, ҳоло дар миллисонияҳо анҷом дода мешаванд. Ҳафтаи оянда мо тағйиротро дар истеҳсолот ҷорӣ кардем ва аз он вақт quay.io муътадил кор мекунад. Дар ин муддат, дар нуқтаи ниҳоии Реестри Барномаҳо якчанд суръати ҳаракати шадид ба амал омад, аммо беҳбудиҳо қатъи пойгоҳи додаҳоро пешгирӣ карданд.

Мо чиро омӯхтем?

Маълум аст, ки ҳама гуна хидматрасонӣ кӯшиш мекунад, ки бекористиро пешгирӣ кунад. Дар ҳолати мо, мо боварӣ дорем, ки қатъҳои ахир ба беҳтар шудани quay.io кӯмак карданд. Мо чанд дарси асосиро омӯхтем, ки мехоҳем мубодила кунем:

  1. Маълумот дар бораи кӣ аз хидмати шумо ва чӣ гуна истифода мебарад, ҳеҷ гоҳ зиёдатӣ нест. Азбаски Quay "танҳо кор мекард", мо ҳеҷ гоҳ барои оптимизатсияи трафик ва идоракунии сарборӣ вақт сарф намекардем. Ҳамаи ин ҳисси бардурӯғи амниятро ба вуҷуд овард, ки хидмат метавонад ба таври номуайян васеъ шавад.
  2. Вақте ки хидмат қатъ мешавад, аз нав ба кор андохтани он вазифаи аввалиндарача мебошад.. Азбаски Quay дар давоми қатъи аввал аз пойгоҳи додаҳои қулфшуда азоб мекашид, расмиёти стандартии мо таъсири пешбинишударо надоштанд ва мо натавонистем хидматро бо истифода аз онҳо барқарор кунем. Ин ба вазъияте оварда расонд, ки вақтро барои таҳлил ва ҷамъоварии маълумот бо умеди дарёфти сабаби аслӣ сарф кардан лозим буд - ба ҷои тамаркузи тамоми кӯшишҳо барои барқарор кардани функсия.
  3. Таъсири ҳар як хусусияти хидматро арзёбӣ кунед. Мизоҷон Реестри Барномаҳоро хеле кам истифода мебурданд, аз ин рӯ он барои дастаи мо афзалият надошт. Вақте ки баъзе хусусиятҳои маҳсулот базӯр истифода мешаванд, хатогиҳои онҳо хеле кам пайдо мешаванд ва таҳиягарон мониторинги кодро қатъ мекунанд. Ба доми ақидаи нодуруст гирифтор шудан осон аст, ки ин бояд ҳамин тавр бошад - то он даме, ки ногаҳон ин функсия дар маркази як ҳодисаи асосӣ пайдо шавад.

Чӣ оянда аст?

Кор барои таъмини устувории хидмат ҳеҷ гоҳ қатъ намешавад ва мо онро пайваста такмил медиҳем. Ҳангоме ки ҳаҷми трафик дар quay.io афзоиш меёбад, мо дарк мекунем, ки мо ӯҳдадор ҳастем, ки ҳама кори аз дастамон меомадаро кунем, то боварии муштариёнамонро қонеъ гардонем. Аз ин рӯ, мо ҳоло дар рӯи вазифаҳои зерин кор карда истодаем:

  1. Ҷойгиркунии репликаҳои махзани танҳо барои хондан барои кӯмак ба хидмат дар идора кардани трафики мувофиқ дар сурати мушкилот бо мисоли RDS ибтидоӣ.
  2. Навсозии мисоли RDS. Худи версияи ҷорӣ мушкилот нест. Баръакс, мо танҳо мехоҳем, ки пайроҳаи бардурӯғро бартараф кунем (ки мо ҳангоми нокомӣ пайравӣ кардем); Навсозӣ нигоҳ доштани нармафзор омили дигарро дар сурати қатъ шудани оянда аз байн мебарад.
  3. Кэшкунии иловагӣ дар тамоми кластер. Мо ҷустуҷӯи соҳаҳоеро идома медиҳем, ки кэш метавонад сарбории пойгоҳи додаҳоро кам кунад.
  4. Илова кардани девори барномаи веб (WAF) барои дидани кӣ ба quay.io ва барои чӣ пайваст мешавад.
  5. Аз нашри навбатӣ сар карда, кластерҳои Red Hat OpenShift аз Феҳристи Барномаҳо ба манфиати Каталогҳои Оператор дар асоси тасвирҳои контейнерии дар quay.io дастрасшуда даст мекашанд.
  6. Ивазкунии дарозмуддати Феҳристи Барномаҳо метавонад дастгирии мушаххасоти артефакти Ташаббуси Open Container (OCI) бошад. Он дар айни замон ҳамчун функсияи аслии Quay амалӣ карда мешавад ва ҳангоми ба итмом расидани худи мушаххасот ба корбарон дастрас мешавад.

Ҳамаи чизҳои дар боло зикршуда як қисми сармоягузории ҷории Red Hat ба quay.io мебошанд, зеро мо аз як дастаи хурди "сабки стартап" ба платформаи баркамоле, ки ба SRE асос ёфтааст, мегузарем. Мо медонем, ки бисёре аз муштариёни мо дар кори ҳаррӯзаи худ ба quay.io такя мекунанд (аз ҷумла Red Hat!) ва мо мекӯшем то ҳадди имкон шаффоф дар бораи қатъи ахир ва талошҳои ҷории беҳбудӣ бошем.

PS аз тарҷумон

Инчунин дар блоги мо хонед:

Манбаъ: will.com

Илова Эзоҳ