{"id":92073,"date":"2020-08-22T19:41:56","date_gmt":"2020-08-22T17:41:56","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io"},"modified":"2020-08-22T19:41:56","modified_gmt":"2020-08-22T17:41:56","slug":"post-mortem-po-nedostupnosti-quay-io","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io","title":{"rendered":"Post Mortem om krisen p\u00e5 Quay.io","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Obs. \u00f6vers.<\/b>: I b\u00f6rjan av augusti meddelade Red Hat offentligt att de hade l\u00f6st tillg\u00e4nglighetsproblem som hade drabbat anv\u00e4ndare av deras tj\u00e4nst under de f\u00f6reg\u00e5ende m\u00e5naderna. <noindex><a rel=\"nofollow\" href=\"http:\/\/quay.io\/\">Quay.io<\/a><\/noindex> (baserat p\u00e5 ett register f\u00f6r containeravbilder som f\u00f6retaget fick med k\u00f6pet av CoreOS). Oavsett ditt intresse f\u00f6r sj\u00e4lva tj\u00e4nsten, \u00e4r v\u00e4gen som SRE-ingeng\u00f6rer g\u00e5tt f\u00f6r att diagnostisera och \u00e5tg\u00e4rda orsakerna till kraschen l\u00e4rorik.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Post Mortem om krisen p\u00e5 Quay.io\" src=\"\/wp-content\/uploads\/2020\/08\/67ef7fddee25448ae68ae7f4700bb25b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDen 19 maj, tidigt p\u00e5 morgonen (enligt sommartid f\u00f6r nordamerikanska \u00f6stkusten, EDT), f\u00f6ll tj\u00e4nsten quay.io. Kraschningen p\u00e5verkade b\u00e5de anv\u00e4ndarna av quay.io och Open Source-projekt som anv\u00e4nde quay.io som plattform f\u00f6r att bygga och sprida mjukvara. Red Hat v\u00e4rdes\u00e4tter f\u00f6rtroendet hos b\u00e5de grupper.<\/p>\n<p>SRE-teamet kopplade omedelbart in sig i arbetet och f\u00f6rs\u00f6kte s\u00e5 snabbt som m\u00f6jligt stabilisera quay-tj\u00e4nsten. Medan de jobbade med detta, f\u00f6rlorade kunderna m\u00f6jligheten att push\u2019a nya avbilder, och de kunde endast sporadiskt pull\u2019a befintliga. Av n\u00e5gon ok\u00e4nd anledning blockerades databasen quay.io efter att tj\u00e4nsten skalades upp till full kapacitet.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u00ab<b>Vad har f\u00f6r\u00e4ndrats?<\/b>\u00bb \u2013 det h\u00e4r \u00e4r den f\u00f6rsta fr\u00e5gan som anges i s\u00e5dana fall. Vi m\u00e4rkte att kort f\u00f6re problemet b\u00f6rjade klustret OpenShift Dedicated (d\u00e4r quay.io k\u00f6rs) uppgraderas till version 4.3.19. Eftersom quay.io k\u00f6rs p\u00e5 Red Hat OpenShift Dedicated (OSD), var de regelbundna uppgraderingarna en vardagsoperation och hade aldrig lett till problem. Dessutom hade vi under de senaste sex m\u00e5naderna uppgraderat Quay-klustren flera g\u00e5nger utan n\u00e5gra driftstopp.<\/p>\n<p>Medan vi f\u00f6rs\u00f6kte \u00e5terst\u00e4lla tj\u00e4nsten b\u00f6rjade andra ingenj\u00f6rer f\u00f6rbereda ett nytt OSD-kluster med den tidigare versionen av programvaran, s\u00e5 att de snabbt kunde rulla ut allt p\u00e5 det om det skulle beh\u00f6vas.<\/p>\n<h2>Analys av grundorsaken<\/h2>\n<p>\nHuvudsymptomet p\u00e5 kraschen var en v\u00e5g av tiotusentals anslutningar till databasen, vilket gjorde att MySQL-instansen blev praktiskt taget obrukbar. Detta gjorde det sv\u00e5rt att diagnosticera problemet. Vi satte ett tak f\u00f6r det maximala antalet anslutningar fr\u00e5n kunder f\u00f6r att hj\u00e4lpa SRE-teamet att bed\u00f6ma problemet. Inga ovanliga trafikm\u00f6nster till databasen observerades: i sj\u00e4lva verket var de flesta f\u00f6rfr\u00e5gningar l\u00e4sningar, medan endast n\u00e5gra var skrivningar.<\/p>\n<p>\u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043f\u044b\u0442\u0430\u043b\u0438\u0441\u044c \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0432 \u0442\u0440\u0430\u0444\u0438\u043a\u0435 \u0411\u0414, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0433 \u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u043b\u0430\u0432\u0438\u043d\u0443. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0437\u0430\u043a\u043e\u043d\u043e\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u0435\u0439 \u0432 \u043b\u043e\u0433\u0430\u0445 \u043e\u0442\u044b\u0441\u043a\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c. \u041e\u0436\u0438\u0434\u0430\u044f \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043d\u043e\u0432\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0441 OSD 4.3.18, \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u043b\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c pod&#8217;\u044b quay.io. \u041a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432\u044b\u0445\u043e\u0434\u0438\u043b \u043d\u0430 \u043f\u043e\u043b\u043d\u0443\u044e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c, \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u0432\u0438\u0441\u0430\u043b\u0430. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 RDS \u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043a\u043e \u0432\u0441\u0435\u043c pod&#8217;\u0430\u043c quay.io.<\/p>\n<p>Vid kv\u00e4llningen stabiliserade vi tj\u00e4nsten i read-only-l\u00e4ge och st\u00e4ngde av maximalt antal ov\u00e4sentliga funktioner (t.ex. skr\u00e4psamling i namnutrymmet) f\u00f6r att minska belastningen p\u00e5 databasen. H\u00e4ngningarna upph\u00f6rde, <b>men orsaken f\u00f6rblev oklar<\/b>. Den nya OSD-klustern var klar, och vi flyttade tj\u00e4nsten, kopplade in trafiken och fortsatte \u00f6vervakningen.<\/p>\n<p>Quay.io fungerade stabilt p\u00e5 den nya OSD-klustern, s\u00e5 vi \u00e5terv\u00e4nde till databasen loggar, men lyckades fortfarande inte uppt\u00e4cka n\u00e5gon korrelation som f\u00f6rklarade l\u00e5sningarna. Ingenj\u00f6rer fr\u00e5n OpenShift arbetade tillsammans med oss f\u00f6r att f\u00f6rs\u00f6ka f\u00f6rst\u00e5 om \u00e4ndringarna i Red Hat OpenShift 4.3.19 kunde ha orsakat problem med Quay. Men vi kunde inte hitta n\u00e5got och <b>det gick inte att reproducera problemet under laboratorief\u00f6rh\u00e5llanden<\/b>.<\/p>\n<h2>Den andra kraschen<\/h2>\n<p>\nDen 28 maj, strax f\u00f6re middagstid EDT, f\u00f6ll quay.io igen med samma symptom: databasens funktion h\u00e4ngdes. \u00c5terigen satte vi all kraft p\u00e5 att unders\u00f6ka. F\u00f6rst och fr\u00e4mst var det n\u00f6dv\u00e4ndigt att \u00e5terst\u00e4lla tj\u00e4nsten. Men <b>\u043d\u0430 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 RDS \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a pod&#8217;\u043e\u0432 quay.io \u043d\u0438 \u043a \u0447\u0435\u043c\u0443 \u043d\u0435 \u043f\u0440\u0438\u0432\u0435\u043b\u0438<\/b>: \u00e4n en g\u00e5ng \u00f6verv\u00e4ldigades databasen av en lavin av anslutningar. Men varf\u00f6r?<\/p>\n<p>Quay \u00e4r skrivet i Python, och varje pod fungerar som en enhetlig monolitiskt container. I containerens k\u00f6rmilj\u00f6 k\u00f6rs m\u00e5nga parallella uppgifter samtidigt. Vi anv\u00e4nder biblioteket <code>gevent<\/code> under <code>gunicorn<\/code> \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0435\u0431-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041a\u043e\u0433\u0434\u0430 \u0432 Quay \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 (\u0447\u0435\u0440\u0435\u0437 \u043d\u0430\u0448 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 API, \u0438\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 API Docker&#8217;\u0430), \u0435\u043c\u0443 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u0441\u044f gevent worker. \u041e\u0431\u044b\u0447\u043d\u043e \u044d\u0442\u043e\u0442 worker \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u0432\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0441\u0431\u043e\u044f \u043c\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438, \u0447\u0442\u043e gevent worker&#8217;\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u043b\u0438\u0441\u044c \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e pod&#8217;\u043e\u0432 Quay \u0438 \u0442\u044b\u0441\u044f\u0447\u0438 \u043f\u043e\u0441\u0442\u0443\u043f\u0430\u044e\u0449\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443, \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0433\u043b\u043e \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440 MySQL. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0443 \u0431\u044b\u043b\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e Quay \u0432 \u0441\u0440\u0435\u0434\u043d\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 5 \u0442\u044b\u0441. \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a\u0438\u043c \u0436\u0435 \u0431\u044b\u043b\u043e \u0438 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. 5 \u0442\u044b\u0441. \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u0441 \u0437\u0430\u043f\u0430\u0441\u043e\u043c \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 RDS (\u0447\u0435\u0433\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u0445 \u0442\u044b\u0441\u044f\u0447). <b>Av n\u00e5gon anledning intr\u00e4ffade ov\u00e4ntade toppar i antalet anslutningar.<\/b>, men vi s\u00e5g ingen korrelation med de inkommande f\u00f6rfr\u00e5gningarna.<\/p>\n<p>Denna g\u00e5ng best\u00e4mde vi oss f\u00f6r att hitta och \u00e5tg\u00e4rda k\u00e4lla till problemet ist\u00e4llet f\u00f6r att bara begr\u00e4nsa oss till att g\u00f6ra en omstart. I kodbasen f\u00f6r Quay <b>\u0431\u044b\u043b\u0438 \u0432\u043d\u0435\u0441\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043b\u0438\u043c\u0438\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043a \u0411\u0414 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e worker&#8217;\u0430<\/b> gevent. Detta antal blev en parameter i konfigurationen: det blev m\u00f6jligt att \u00e4ndra det \"under k\u00f6rning\", utan att beh\u00f6va bygga en ny containerbild. F\u00f6r att ta reda p\u00e5 hur m\u00e5nga anslutningar som verkligen kunde hanteras genomf\u00f6rdes flera tester med staging-milj\u00f6n, d\u00e4r olika v\u00e4rden angavs f\u00f6r att se hur detta skulle p\u00e5verka belastningstestscenarierna. Resultatet visade att <b>Quay b\u00f6rjade ge 502-fel n\u00e4r antalet anslutningar \u00f6versteg 10 000.<\/b><\/p>\n<p>Vi rullade omedelbart ut denna nya version i produktion och b\u00f6rjade \u00f6vervaka \u00e5tkomsten till databasanslutningarna. Tidigare \u00e4r databasen l\u00e5st efter ungef\u00e4r 20 minuter. Efter 30 problemfria minuter b\u00f6rjade vi f\u00e5 hopp, och efter en timme - \u00f6vertygelse. Vi \u00e5terst\u00e4llde skrivtrafiken p\u00e5 webbplatsen och p\u00e5b\u00f6rjade postmortem-analysen.<\/p>\n<p>Genom att kringg\u00e5 problemet som ledde till l\u00e5sning, <b>fick vi inte veta dess verkliga orsaker.<\/b>Det bekr\u00e4ftades att det inte var relaterat till n\u00e5gra f\u00f6r\u00e4ndringar i OpenShift 4.3.19, eftersom samma sak intr\u00e4ffade i version 4.3.18, som tidigare fungerade med Quay utan problem.<\/p>\n<p>Det dolde sig uppenbart n\u00e5got mer i klustret.<\/p>\n<h2>En detaljerad granskning<\/h2>\n<p>\nQuay.io har i sex \u00e5r anv\u00e4nt standardinst\u00e4llningar f\u00f6r att ansluta till databasen utan n\u00e5gra problem. Vad har f\u00f6r\u00e4ndrats? Det \u00e4r uppenbart att trafiken till quay.io har \u00f6kat stadigt under hela denna tid. I v\u00e5rt fall s\u00e5g det ut som att en viss tr\u00f6skel hade n\u00e5tts, vilket utl\u00f6ste en lavin av anslutningar. Vi fortsatte att unders\u00f6ka databasloggarna efter det andra avbrottet, men uppt\u00e4ckte inga m\u00f6nster eller uppenbara samband.<\/p>\n<p>Under tiden arbetade SRE-teamet med f\u00f6rb\u00e4ttringar inom observabiliteten av f\u00f6rfr\u00e5gningar i Quay och den \u00f6vergripande h\u00e4lsan hos tj\u00e4nsten. <b>Nya metrik och \u00f6vervakningspaneler<\/b>, visade vilka delar av Quay som var mest efterfr\u00e5gade av kunderna.<\/p>\n<p>Quay.io fungerade normalt fram till den 9 juni. P\u00e5 morgonen (EDT) blev vi \u00e5ter vittnen till en betydande \u00f6kning av antalet anslutningar till databasen. <b>Den h\u00e4r g\u00e5ngen intr\u00e4ffade inget avbrott<\/b>, eftersom en ny parameter begr\u00e4nsade antalet anslutningar och inte till\u00e4t att MySQL:s kapacitet \u00f6verskreds. Under ungef\u00e4r en halvtimme rapporterade m\u00e5nga anv\u00e4ndare att quay.io var l\u00e5ngsamt. Vi samlade snabbt in s\u00e5 mycket data som m\u00f6jligt med hj\u00e4lp av de nyare \u00f6vervakningsverktygen. Pl\u00f6tsligt framkom ett m\u00f6nster.<\/p>\n<p><b>Strax innan spr\u00e5nget i antalet anslutningar kom ett stort antal f\u00f6rfr\u00e5gningar till App Registry API<\/b>. App Registry \u00e4r en mindre k\u00e4nd funktion i quay.io. Den g\u00f6r det m\u00f6jligt att lagra saker som Helm-diagram och containrar med rika metadatan. De flesta anv\u00e4ndare av quay.io arbetar inte med den h\u00e4r funktionen, men den anv\u00e4nds flitigt av Red Hat OpenShift. OperatorHub inom OpenShift lagrar alla operat\u00f6rer i App Registry. Dessa operat\u00f6rer utg\u00f6r grunden f\u00f6r ekosystemet av arbetsbelastningar i OpenShift och driftsmodellen (inom ramverket av \"day two\"-operationer), inriktad p\u00e5 partner.<\/p>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 OpenShift 4 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0438\u0437 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e OperatorHub&#8217;\u0430 \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0443\u0436\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445. \u0421 \u0440\u043e\u0441\u0442\u043e\u043c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 OpenShift 4 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u043b\u043e\u0441\u044c \u0438 \u0447\u0438\u0441\u043b\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043d\u0430 \u043d\u0435\u043c \u043f\u043e \u0432\u0441\u0435\u043c\u0443 \u043c\u0438\u0440\u0443. \u041a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437 \u044d\u0442\u0438\u0445 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 OperatorHub, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f App Registry \u0432\u043d\u0443\u0442\u0440\u0438 quay.io \u043a\u0430\u043a \u0431\u044d\u043a\u044d\u043d\u0434. <b>I jakten p\u00e5 problemet missade vi att med den gradvisa \u00f6kningen av popularitet f\u00f6r OpenShift \u00f6kade ocks\u00e5 belastningen p\u00e5 en av de s\u00e4llan anv\u00e4nda funktionerna quay.io<\/b>.<\/p>\n<p>\u041c\u044b \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 App Registry \u0438 \u0437\u0430\u0433\u043b\u044f\u043d\u0443\u043b\u0438 \u0432 \u043a\u043e\u0434 \u0440\u0435\u0435\u0441\u0442\u0440\u0430. \u0421\u0440\u0430\u0437\u0443 \u0436\u0435 \u0432\u0441\u043a\u0440\u044b\u043b\u0438\u0441\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0438\u0437-\u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e. \u041f\u0440\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u043e\u043d\u0438 \u043d\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u044f\u043b\u0438 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0445\u043b\u043e\u043f\u043e\u0442, \u043e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u0435\u0435 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0438\u0441\u044c \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0423 App Registry \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0434\u0432\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u044b\u0445 endpoint&#8217;\u0430, \u043f\u043b\u043e\u0445\u043e \u0440\u0435\u0430\u0433\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043d\u0430 \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438: \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u044b\u0434\u0430\u0432\u0430\u043b \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0432\u0442\u043e\u0440\u043e\u0439 \u2014 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b \u0432\u0441\u0435 blob&#8217;\u044b \u0434\u043b\u044f \u043f\u0430\u043a\u0435\u0442\u0430.<\/p>\n<h2>\u00c5tg\u00e4rda orsakerna<\/h2>\n<p>\nUnder hela n\u00e4sta vecka arbetade vi med att optimera koden f\u00f6r App Registry och dess omgivning. Vi omarbetade uppenbart ineffektiva SQL-fr\u00e5gor, eliminerade on\u00f6diga anrop av kommandot <code>tar<\/code> (\u043e\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0430\u0441\u044c \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u0438 blob&#8217;\u043e\u0432), \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u0437\u0434\u0435, \u0433\u0434\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e. \u0417\u0430\u0442\u0435\u043c \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b App Registry \u0434\u043e \u0438 \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/p>\n<p><b>API-anrop som tidigare tog upp till en halv minut, utf\u00f6rdes nu p\u00e5 millisekunder<\/b>. \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u043d\u0435\u0434\u0435\u043b\u0435 \u043c\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 production, \u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 quay.io \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e. \u0417\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u043b\u0438\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0437\u043a\u0438\u0445 \u0432\u0441\u043f\u043b\u0435\u0441\u043a\u043e\u0432 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 endpoint&#8217;\u0435 App Registry, \u043d\u043e \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u043b\u0438 \u043f\u0435\u0440\u0435\u0431\u043e\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h2>Vad har vi l\u00e4rt oss?<\/h2>\n<p>\nDet \u00e4r sj\u00e4lvklart att varje tj\u00e4nst f\u00f6rs\u00f6ker undvika driftstopp. I v\u00e5rt fall tror vi att de senaste felen har hj\u00e4lpt till att g\u00f6ra quay.io b\u00e4ttre. Vi har dragit n\u00e5gra grundl\u00e4ggande l\u00e4rdomar som vi vill dela med oss av:<\/p>\n<ol>\n<li> <b>Information om vem som anv\u00e4nder din tj\u00e4nst och hur de anv\u00e4nder den \u00e4r aldrig \u00f6verfl\u00f6dig<\/b>. Eftersom Quay \"bara fungerade\" hade vi aldrig behov av att spendera tid p\u00e5 att optimera trafik och hantera belastning. Allt detta skapade en falsk k\u00e4nsla av s\u00e4kerhet i att tj\u00e4nsten kunde skalas o\u00e4ndligt.<\/li>\n<li> N\u00e4r en tj\u00e4nst g\u00e5r ner, <b>\u00e4r \u00e5terst\u00e4llande av dess funktionalitet h\u00f6gsta prioritet<\/b>. Eftersom Quay fortsatte att lida av en blockerad databas under den f\u00f6rsta incidenten, hade v\u00e5ra standardprocedurer inte den avsedda effekten och vi kunde inte \u00e5terf\u00e5 tj\u00e4nstens funktionalitet med deras hj\u00e4lp. Detta ledde till en situation d\u00e4r vi var tvungna att spendera tid p\u00e5 analys och insamling av data i hopp om att hitta grundorsaken ist\u00e4llet f\u00f6r att fokusera alla anstr\u00e4ngningar p\u00e5 att \u00e5terst\u00e4lla funktionaliteten.<\/li>\n<li> <b>Bed\u00f6m inverkan av varje funktion i tj\u00e4nsten<\/b>. Kunderna anv\u00e4nde s\u00e4llan App Registry, s\u00e5 det var inte en prioritet f\u00f6r v\u00e5rt team. N\u00e4r vissa produktfunktioner n\u00e4stan inte anv\u00e4nds, dyker deras buggar s\u00e4llan upp och utvecklarna slutar \u00f6vervaka koden. Det \u00e4r l\u00e4tt att falla offer f\u00f6r missuppfattningen att allt \u00e4r som det ska \u2014 tills denna funktion pl\u00f6tsligt hamnar i centrum f\u00f6r en stor incident.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Vad h\u00e4nder h\u00e4rn\u00e4st?<\/h2>\n<p>\nArbetet med att s\u00e4kerst\u00e4lla tj\u00e4nstens stabilitet p\u00e5g\u00e5r st\u00e4ndigt och vi f\u00f6rb\u00e4ttrar den kontinuerligt. Trafikvolymerna p\u00e5 quay.io forts\u00e4tter att v\u00e4xa och vi inser att vi m\u00e5ste g\u00f6ra allt f\u00f6r att f\u00f6rtj\u00e4na kundernas f\u00f6rtroende. D\u00e4rf\u00f6r arbetar vi f\u00f6r n\u00e4rvarande med f\u00f6ljande uppgifter:<\/p>\n<ol>\n<li> Utrullning av l\u00e4sbara databaskluster f\u00f6r att hj\u00e4lpa tj\u00e4nsten att hantera relevant trafik om det uppst\u00e5r problem med den prim\u00e4ra RDS-instansen.<\/li>\n<li> Uppdatering av RDS-instansen. Den nuvarande versionen \u00e4r i sig inget problem. Snarare vill vi bara ta bort en falsk ledtr\u00e5d (som vi f\u00f6ljde under incidenten); att h\u00e5lla programvaran uppdaterad kommer att eliminera en faktor vid framtida avbrott.<\/li>\n<li> Ytterligare cachning \u00f6ver hela klustret. Vi forts\u00e4tter att s\u00f6ka efter omr\u00e5den d\u00e4r cachning kan minska belastningen p\u00e5 databasen.<\/li>\n<li> Till\u00e4gg av en webbapplikationsbrandv\u00e4gg (WAF) f\u00f6r att se vem och varf\u00f6r som ansluter till quay.io.<\/li>\n<li> Fr\u00e5n och med n\u00e4sta release kommer Red Hat OpenShift-kluster att avveckla App Registry till f\u00f6rm\u00e5n f\u00f6r operatorkataloger (Operator Catalogs) baserade p\u00e5 containerbilder tillg\u00e4ngliga p\u00e5 quay.io.<\/li>\n<li> En l\u00e5ngsiktig ers\u00e4ttning f\u00f6r App Registry kan vara st\u00f6d f\u00f6r specifikationerna av artefakter fr\u00e5n Open Container Initiative (OCI). Detta implementeras f\u00f6r n\u00e4rvarande som inbyggd funktion i Quay och kommer att vara tillg\u00e4ngligt f\u00f6r anv\u00e4ndare n\u00e4r specifikationen slutgiltigt godk\u00e4nns.<\/li>\n<\/ol>\n<p>\nAll of the above is part of Red Hat's ongoing investments in quay.io as we transition from a small \"startup-like\" team to a mature platform managed by SRE. We know that many of our customers rely on quay.io in their daily operations (including Red Hat!) and we strive to be as transparent as possible regarding recent outages and our ongoing efforts to improve.<\/p>\n<h2>P.S. fr\u00e5n \u00f6vers\u00e4ttaren<\/h2>\n<p>\nL\u00e4s \u00e4ven i v\u00e5r blogg:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/news\/t\/475716\/\/\">Red Hat has open-sourced the container image registry from CoreOS \u2014 Quay<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/510486\/\">Praktiska ber\u00e4ttelser fr\u00e5n v\u00e5ra SRE-dagar. Del 2<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/461807\/\">Hur prioriteringar av poddar i Kubernetes orsakade driftstopp p\u00e5 Grafana Labs<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/515932\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 Red Hat \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b\u0430 \u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u043c\u0435\u0441\u044f\u0446\u044b \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0435\u0451 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 Quay.io (\u0432 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u0435 \u2014 \u0440\u0435\u0435\u0441\u0442\u0440 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0434\u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0439\u0441\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u043f\u043e\u043a\u0443\u043f\u043a\u043e\u0439 CoreOS). \u0412\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 \u044d\u0442\u043e\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0435 \u043a\u0430\u043a \u0442\u0430\u043a\u043e\u0432\u043e\u043c, \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u0435\u043d \u0441\u0430\u043c \u043f\u0443\u0442\u044c, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u043e\u0448\u043b\u0438 SRE-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92074,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92073","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Post Mortem \u043f\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 Quay.io | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-22T17:41:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-22T17:41:56+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Post Mortem of Quay.io Downtime | ProHoster","description":"Ex.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Post Mortem \u043f\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 Quay.io | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/post-mortem-po-nedostupnosti-quay-io","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-22T17:41:56+00:00","article:modified_time":"2020-08-22T17:41:56+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92073","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:15:36","updated":"2022-10-02 22:37:13","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/92073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=92073"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/92073\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/92074"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=92073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=92073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=92073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}