{"id":91846,"date":"2020-08-19T19:41:57","date_gmt":"2020-08-19T17:41:57","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster"},"modified":"2020-08-19T19:41:57","modified_gmt":"2020-08-19T17:41:57","slug":"o-pereezde-s-redis-na-redis-cluster","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster","title":{"rendered":"O presune z Redis na Redis-cluster","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"O presune z Redis na Redis-cluster\" src=\"\/wp-content\/uploads\/2020\/08\/ea8bc47f73ef3b06ccfdf94d323592bf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ke\u010f prich\u00e1dzate k produktu, ktor\u00fd sa vyv\u00edja viac ako desa\u0165 rokov, nie je prekvapuj\u00face, \u017ee v \u0148om n\u00e1jdete zastaran\u00e9 technol\u00f3gie. Ale \u010do ak o pol roka budete musie\u0165 udr\u017eiava\u0165 z\u00e1\u0165a\u017e desa\u0165kr\u00e1t vy\u0161\u0161iu a cena v\u00fdpadkov vzrastie ston\u00e1sobne? V takom pr\u00edpade potrebujete skvel\u00e9ho Highload in\u017einiera. Ale bez neho mi probl\u00e9m zverili do r\u00fak. V prvej \u010dasti \u010dl\u00e1nku op\u00ed\u0161em, ako sme prech\u00e1dzali z Redis na Redis-cluster, a v druhej \u010dasti d\u00e1m rady, ako za\u010da\u0165 pou\u017e\u00edva\u0165 cluster a na \u010do sa zamera\u0165 pri jeho prev\u00e1dzke.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"vybor-tehnologii\">V\u00fdber technol\u00f3gie<\/h1>\n<p><\/p>\n<p>Je tak zl\u00fd <em>samostatn\u00fd Redis<\/em> (standalone redis) v konfigur\u00e1cii 1 master a N slave? Pre\u010do ho naz\u00fdvam zastaranou technol\u00f3giou?<\/p>\n<p><\/p>\n<blockquote><p>Nie, Redis nie je tak zl\u00fd... Av\u0161ak, existuj\u00fa niektor\u00e9 nedostatky, ktor\u00e9 nemo\u017eno ignorova\u0165.<\/p><\/blockquote>\n<p><\/p>\n<ul>\n<li>\n<p>Po prv\u00e9, Redis nepodporuje mechanizmy pre obnovu po p\u00e1de mastera. Na rie\u0161enie tohto probl\u00e9mu sme pou\u017eili konfigur\u00e1ciu s automatick\u00fdm pren\u00e1\u0161an\u00edm VIP na nov\u00e9ho mastera, zmenou \u00falohy jedn\u00e9ho zo slave a prep\u00ednan\u00edm ostatn\u00fdch. Tento mechanizmus fungoval, ale nazva\u0165 ho spo\u013eahliv\u00fdm rie\u0161en\u00edm sa nedalo. Po prv\u00e9, doch\u00e1dzalo k falo\u0161n\u00fdm poplachom, a po druh\u00e9, bol jednorazov\u00fd a po aktiv\u00e1cii boli potrebn\u00e9 manu\u00e1lne kroky na obnovenie.<\/p>\n<p>\n<\/li>\n<li>\n<p>Po druh\u00e9, existencia iba jedn\u00e9ho mastera viedla k probl\u00e9mu s shardovan\u00edm. Museli sme vytvori\u0165 nieko\u013eko nez\u00e1visl\u00fdch clustrov \u201e1 master a N slave\u201c, potom ru\u010dne rozlo\u017ei\u0165 datab\u00e1zy po t\u00fdchto strojoch a d\u00fafa\u0165, \u017ee zajtra sa jedna z datab\u00e1z neprepln\u00ed nato\u013eko, \u017ee ju bude potrebn\u00e9 presun\u00fa\u0165 na samostatn\u00fd in\u0161tanc.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Ak\u00e9 s\u00fa mo\u017enosti?<\/p>\n<p><\/p>\n<ul>\n<li>Najdrah\u0161ie a najbohat\u0161ie rie\u0161enie \u2014 Redis-Enterprise. Toto je krabicov\u00e9 rie\u0161enie s plnou technickou podporou. Napriek tomu, \u017ee sa to z technick\u00e9ho h\u013eadiska zd\u00e1 by\u0165 ide\u00e1lne, z ideologick\u00fdch d\u00f4vodov n\u00e1m to nevyhovovalo. <\/li>\n<li>Redis-cluster. Z krabice je k dispoz\u00edcii podpora pre automatick\u00e9 prep\u00ednanie mastera a shardovanie. Rozhranie sa takmer nel\u00ed\u0161i od be\u017enej verzie. Vyzer\u00e1 n\u00e1dejne, o \u00faskaliach sa porozpr\u00e1vame \u010falej.<\/li>\n<li>Tarantool, Memcache, Aerospike a in\u00e9. V\u0161etky tieto n\u00e1stroje robia zhruba to ist\u00e9. Ka\u017ed\u00fd z nich m\u00e1 v\u0161ak svoje nev\u00fdhody. Rozhodli sme sa ned\u00e1va\u0165 v\u0161etky vaj\u00ed\u010dka do jedn\u00e9ho ko\u0161\u00edka. Memcache a Tarantool pou\u017e\u00edvame na in\u00e9 \u00falohy a, aby som to predbehol, poviem, \u017ee v na\u0161ej praxi s nimi bolo viac probl\u00e9mov.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"specifika-ispolzovaniya\">\u0160pecifik\u00e1cia pou\u017eitia<\/h1>\n<p><\/p>\n<p>Pozrime sa, ak\u00e9 \u00falohy sme historicky rie\u0161ili pomocou Redis a ak\u00fa funkcionalitu sme vyu\u017e\u00edvali:<\/p>\n<p><\/p>\n<ul>\n<li>Cache pred po\u017eiadavkami na vzdialen\u00e9 slu\u017eby ako 2GIS | Golang<br \/>\n<blockquote><p>GET SET MGET MSET \"VYBER DB\"\n<\/p><\/blockquote>\n<\/li>\n<li>Cache pred MYSQL | PHP<br \/>\n<blockquote><p>GET SET MGET MSET SCAN \"K\u013d\u00da\u010c POD\u013dA VZORCA\" \"VYBER DB\"\n<\/p><\/blockquote>\n<\/li>\n<li>Hlavn\u00e9 \u00falo\u017eisko pre slu\u017ebu spr\u00e1vy rel\u00e1ci\u00ed a koordin\u00e1tov vodi\u010dov | Golang<br \/>\n<blockquote><p>GET SET MGET MSET \"VYBER DB\" \"PRIDA\u0164 GEO K\u013d\u00da\u010c\" \"Z\u00cdSKA\u0164 GEO K\u013d\u00da\u010c\" SCAN\n<\/p><\/blockquote>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Ako vid\u00edte, \u017eiadna vy\u0161\u0161ia matematika. V \u010dom teda spo\u010d\u00edva zlo\u017eitosti? Rozoberme to osobitne pri ka\u017edej met\u00f3de.<\/p>\n<p><\/p>\n<p>Met\u00f3da<br \/>\nPopis<br \/>\nZvl\u00e1\u0161tnosti Redis-clustra<br \/>\nRie\u0161enie<\/p>\n<p>GET SET<br \/>\nZap\u00edsa\u0165\/\u010d\u00edta\u0165 k\u013e\u00fa\u010d<\/p>\n<p>MGET MSET<br \/>\nZap\u00edsa\u0165\/\u010d\u00edta\u0165 nieko\u013eko k\u013e\u00fa\u010dov<br \/>\nK\u013e\u00fa\u010de bud\u00fa le\u017ea\u0165 na r\u00f4znych uzloch. Hotov\u00e9 kni\u017enice dok\u00e1\u017eu robi\u0165 Multi-oper\u00e1cie len v r\u00e1mci jedn\u00e9ho uzla<br \/>\nNahradi\u0165 MGET za pipeline z N GET oper\u00e1ci\u00ed<\/p>\n<p>VYBER DB<br \/>\nVybra\u0165 datab\u00e1zu, s ktorou budeme pracova\u0165<br \/>\nNepodporuje nieko\u013eko datab\u00e1z<br \/>\nUklada\u0165 v\u0161etko do jednej datab\u00e1zy. Prida\u0165 k\u013e\u00fa\u010dom prefixy<\/p>\n<p>SCAN<br \/>\nPrejs\u0165 v\u0161etk\u00fdmi k\u013e\u00fa\u010dmi v datab\u00e1ze<br \/>\nKe\u010f\u017ee m\u00e1me jednu datab\u00e1zu, prech\u00e1dza\u0165 v\u0161etk\u00fdmi k\u013e\u00fa\u010dmi v clustre je pr\u00edli\u0161 n\u00e1ro\u010dn\u00e9<br \/>\nUdr\u017eiava\u0165 invariant v r\u00e1mci jedn\u00e9ho k\u013e\u00fa\u010da a robi\u0165 HSCAN pod\u013ea tohto k\u013e\u00fa\u010da. Alebo sa \u00faplne vzda\u0165<\/p>\n<p>GEO<br \/>\nOper\u00e1cie pr\u00e1ce s geok\u013e\u00fa\u010dom<br \/>\nGeok\u013e\u00fa\u010d nie je \u0161ardovan\u00fd<\/p>\n<p>K\u013d\u00da\u010c POD\u013dA VZORCA<br \/>\nH\u013eadanie k\u013e\u00fa\u010da pod\u013ea vzoru<br \/>\nKe\u010f\u017ee m\u00e1me jednu datab\u00e1zu, budeme h\u013eada\u0165 pod\u013ea v\u0161etk\u00fdch k\u013e\u00fa\u010dov v clustre. Pr\u00edli\u0161 n\u00e1ro\u010dn\u00e9<br \/>\nVzd\u00e1va\u0165 sa alebo udr\u017eiava\u0165 invariant, ako pri SCAN-e<\/p>\n<p><\/p>\n<h1 id=\"redis-vs-redis-cluster\">Redis vs Redis-cluster<\/h1>\n<p><\/p>\n<p>\u010co str\u00e1came a \u010do z\u00edskavame pri prechode na klaster?<\/p>\n<p><\/p>\n<ul>\n<li>Nev\u00fdhody: str\u00e1came funk\u010dnos\u0165 nieko\u013ek\u00fdch datab\u00e1z. \n<ul>\n<li>Ak chceme uklada\u0165 v jednom klastri logicky nes\u00favisiace d\u00e1ta, budeme musie\u0165 robi\u0165 obskurn\u00e9 rie\u0161enia vo forme prefixov. <\/li>\n<li>Str\u00e1came v\u0161etky oper\u00e1cie 'pod\u013ea datab\u00e1zy', ako SCAN, DBSIZE, CLEAR DB at\u010f.<\/li>\n<li>Multi-oper\u00e1cie sa stali ove\u013ea zlo\u017eitej\u0161\u00edmi na implement\u00e1ciu, preto\u017ee m\u00f4\u017ee by\u0165 potrebn\u00e9 spr\u00edstupni\u0165 nieko\u013eko uzlov.<\/li>\n<\/ul>\n<\/li>\n<li>V\u00fdhody: \n<ul>\n<li>Odolnos\u0165 vo\u010di chyb\u00e1m vo forme havarijn\u00e9ho prep\u00ednania prim\u00e1rneho uzla.<\/li>\n<li>\u0160ardovanie na strane Redis.<\/li>\n<li>Prenos d\u00e1t medzi uzlami atomicky a bez prestojov.<\/li>\n<li>Pridanie a pre-rozdelenie kapac\u00edt a z\u00e1\u0165a\u017e\u00ed bez prestojov.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p><em>Urobil by som z\u00e1ver, \u017ee ak nepotrebujete zabezpe\u010di\u0165 vysok\u00fa \u00farove\u0148 odolnosti vo\u010di zlyhaniu, presun na klaster za to nestoj\u00ed, preto\u017ee to m\u00f4\u017ee by\u0165 nezanedbate\u013en\u00e1 \u00faloha. Ale ak by ste mali na v\u00fdber medzi samostatnou verziou a klastrom, mali by ste si vybra\u0165 klaster, preto\u017ee nie je hor\u0161\u00ed a navy\u0161e v\u00e1m u\u013eah\u010d\u00ed \u010das\u0165 starost\u00ed.<\/em><\/p>\n<p><\/p>\n<h1 id=\"podgotovka-k-pereezdu\">Pr\u00edprava na presun<\/h1>\n<p><\/p>\n<p>Za\u010dneme s po\u017eiadavkami na presun:<\/p>\n<p><\/p>\n<ul>\n<li>Mus\u00ed by\u0165 bezprobl\u00e9mov\u00fd. \u00dapln\u00e9 zastavenie slu\u017eby na 5 min\u00fat n\u00e1s neuspokoj\u00ed.<\/li>\n<li>Mus\u00ed by\u0165 \u010do najbezpe\u010dnej\u0161\u00ed a postupn\u00fd. Chceme ma\u0165 ur\u010dit\u00fa kontrolu nad situ\u00e1ciou. Hromadne presun\u00fa\u0165 v\u0161etko a modli\u0165 sa za tla\u010didlo na n\u00e1vrat nechceme.<\/li>\n<li>Minim\u00e1lne straty d\u00e1t pri presune. Rozumieme, \u017ee presun\u00fa\u0165 atom\u00e1rne bude ve\u013emi \u0165a\u017ek\u00e9, preto prip\u00fa\u0161\u0165ame ur\u010dit\u00fa desynchroniz\u00e1ciu medzi d\u00e1tami v be\u017enom a klastrovom Redis.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"obsluzhivanie-klastera\">\u00dadr\u017eba klasteru<\/h1>\n<p><\/p>\n<p>Pred samotn\u00fdm presunom by ste sa mali zamyslie\u0165 nad t\u00fdm, \u010di m\u00f4\u017eeme udr\u017eiava\u0165 klaster:<\/p>\n<p><\/p>\n<ul>\n<li>Grafy. Pou\u017e\u00edvame Prometheus a Grafana na grafy za\u0165a\u017eenia procesorov, pou\u017e\u00edvan\u00fa pam\u00e4\u0165, po\u010det klientov, po\u010det oper\u00e1ci\u00ed GET, SET, AUTH a pod.<\/li>\n<li>Odbornos\u0165. Predstavte si, \u017ee zajtra bude pod va\u0161ou zodpovednos\u0165ou obrovsk\u00fd klaster. Ak sa pokaz\u00ed, nikto okrem v\u00e1s ho nebude m\u00f4c\u0165 opravi\u0165. Ak za\u010dne spoma\u013eova\u0165 \u2013 v\u0161etci sa obr\u00e1tia na v\u00e1s. Ak bude potrebn\u00e9 prida\u0165 zdroje alebo prekona\u0165 za\u0165a\u017eenie \u2013 op\u00e4\u0165 na v\u00e1s. Aby ste sa v 25. roku nezapratali, je dobr\u00e9 predv\u00edda\u0165 tieto pr\u00edpady a vopred skontrolova\u0165, ako sa technol\u00f3gia zachov\u00e1 pri r\u00f4znych akci\u00e1ch. O tom si podrobnej\u0161ie povieme v sekcii \"Odbornos\u0165\".<\/li>\n<li>Monitorovanie a ozn\u00e1menia. Ke\u010f sa klaster pokaz\u00ed, chce\u0161 sa o tom dozvedie\u0165 ako prv\u00fd. Tu sme sa obmedzili na informovanie o tom, \u017ee v\u0161etky uzly vracaj\u00fa rovnak\u00e9 inform\u00e1cie o stave klasteru (\u00e1no, m\u00f4\u017ee to by\u0165 aj inak). A ostatn\u00e9 probl\u00e9my r\u00fdchlej\u0161ie zist\u00edte prostredn\u00edctvom ozn\u00e1men\u00ed slu\u017eieb-klientov Redis.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"pereezd\">Presun<\/h1>\n<p><\/p>\n<p>Ako budeme prech\u00e1dza\u0165:<\/p>\n<p><\/p>\n<ul>\n<li>Najprv je potrebn\u00e9 pripravi\u0165 kni\u017enicu na pr\u00e1cu s klastrom. Ako z\u00e1klad pre verziu v G\u043e sme zobrali go-redis a trochu si ho upravili. Implementovali sme Multi-met\u00f3dy cez pipeline-y, ako aj trochu upravili pravidl\u00e1 opakovania po\u017eiadaviek. S verziou pre PHP sme mali viac probl\u00e9mov, ale nakoniec sme sa rozhodli pre php-redis. Ned\u00e1vno zaviedli podporu klastru a pod\u013ea n\u00e1\u0161ho n\u00e1zoru vyzer\u00e1 dobre.<\/li>\n<li>\u010ealej je potrebn\u00e9 rozbehn\u00fa\u0165 samotn\u00fd klaster. Rob\u00ed sa to doslova v dvoch pr\u00edkazoch na z\u00e1klade konfigura\u010dn\u00e9ho s\u00faboru. Podrobnej\u0161ie nastavenie prediskutujeme ni\u017e\u0161ie.<\/li>\n<li>Pre postupn\u00fd prechod pou\u017e\u00edvame dry-mode. Ke\u010f\u017ee m\u00e1me dve verzie kni\u017enice s rovnak\u00fdm rozhran\u00edm (jednu pre be\u017en\u00fa verziu, druh\u00fa pre klaster), nie je ni\u010d jednoduch\u0161ie, ako vytvori\u0165 obal, ktor\u00fd bude pracova\u0165 s jednotlivou verziou a z\u00e1rove\u0148 duplikova\u0165 v\u0161etky po\u017eiadavky do klastera, porovn\u00e1va\u0165 odpovede a zapisova\u0165 rozdiely do logov (v na\u0161om pr\u00edpade do NewRelic). T\u00fdmto sp\u00f4sobom, aj ke\u010f pri nasaden\u00ed klastrov\u00e1 verzia zlyh\u00e1, n\u00e1\u0161 produk\u010dn\u00fd syst\u00e9m to neovplyvn\u00ed. <\/li>\n<li>Ke\u010f nasad\u00edme klaster v dry-re\u017eime, m\u00f4\u017eeme pokojne sledova\u0165 graf rozdielov odpoved\u00ed. Ak podiel ch\u00fdb pomaly, ale isto smeruje k nejakej malej kon\u0161tante, znamen\u00e1 to, \u017ee je v\u0161etko v poriadku. Pre\u010do s\u00fa st\u00e1le rozdiely? Preto\u017ee z\u00e1pis v jednotliv\u00fdch verzi\u00e1ch prebieha nieko\u013eko sk\u00f4r ako v klasteri, a v\u010faka mikroz\u00e1znamu sa m\u00f4\u017eu d\u00e1ta rozch\u00e1dza\u0165. Ost\u00e1va len pozrie\u0165 sa na logy rozdielov, a ak s\u00fa v\u0161etky vysvetlite\u013en\u00e9 neatom\u00e1rnos\u0165ou z\u00e1pisu, m\u00f4\u017eeme \u00eds\u0165 \u010falej.<\/li>\n<li>Teraz m\u00f4\u017eeme prepn\u00fa\u0165 dry-mode na opa\u010dn\u00fa stranu. Zapisova\u0165 a \u010d\u00edta\u0165 budeme z klastera, a duplikova\u0165 do jednotliv\u00fdch verzi\u00ed. Pre\u010do? V priebehu nasleduj\u00faceho t\u00fd\u017ed\u0148a chceme sledova\u0165 pr\u00e1cu klastera. Ak sa n\u00e1hodou uk\u00e1\u017ee, \u017ee v \u0161pi\u010dke za\u0165a\u017eenia s\u00fa probl\u00e9my, alebo sme nie\u010do nepredpokladali, v\u017edy m\u00e1me mo\u017enos\u0165 n\u00fadzov\u00e9ho n\u00e1vratu ku star\u00e9mu k\u00f3du a aktu\u00e1lnym d\u00e1tam v\u010faka dry-mode.<\/li>\n<li>Ost\u00e1va len vypn\u00fa\u0165 dry-mode a demontova\u0165 jednotliv\u00fa verziu. <\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"ekspertiza\">Expert\u00edza<\/h1>\n<p><\/p>\n<p>Najprv stru\u010dne o zariaden\u00ed klastera.<\/p>\n<p><\/p>\n<p>Najprv, Redis je key-value \u00falo\u017eisko. Ako k\u013e\u00fa\u010d sa pou\u017e\u00edvaj\u00fa \u013eubovo\u013en\u00e9 re\u0165azce. Ako hodnoty m\u00f4\u017eu by\u0165 pou\u017eit\u00e9 \u010d\u00edsla, re\u0165azce a cel\u00e9 \u0161trukt\u00fary. T\u00fdchto je nespo\u010detne ve\u013ea, ale pre pochopenie celkov\u00e9ho zariadenia n\u00e1m to nie je d\u00f4le\u017eit\u00e9.<br \/>\nNasleduj\u00faca \u00farove\u0148 abstrakcie po k\u013e\u00fa\u010doch s\u00fa sloty (SLOTS). Ka\u017ed\u00fd k\u013e\u00fa\u010d patr\u00ed jedn\u00e9mu z 16 383 slotov. V r\u00e1mci ka\u017ed\u00e9ho slotu m\u00f4\u017ee by\u0165 \u013eubovo\u013en\u00fd po\u010det k\u013e\u00fa\u010dov. Takto sa v\u0161etky k\u013e\u00fa\u010de rozde\u013euj\u00fa na 16 383 neprenikanov\u00fdch mno\u017e\u00edn.<br \/>\n<img decoding=\"async\" alt=\"O presune z Redis na Redis-cluster\" src=\"\/wp-content\/uploads\/2020\/08\/a5e4be23381b42287f693e01d5d59a99.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u010ealej by v klastri malo by\u0165 N hlavn\u00e9 uzly. Ka\u017ed\u00fd uzol je mo\u017en\u00e9 predstavi\u0165 ako samostatn\u00fd in\u0161tanciu Redis, ktor\u00fd vie v\u0161etko o ostatn\u00fdch uzloch v klastri. Ka\u017ed\u00fd hlavn\u00fd uzol obsahuje ur\u010dit\u00e9 mno\u017estvo slotov. Ka\u017ed\u00fd slot patr\u00ed iba jedn\u00e9mu hlavn\u00e9mu uzlu. V\u0161etky sloty treba prerozde\u013eova\u0165 medzi uzly. Ak niektor\u00e9 sloty nie s\u00fa prerozdelen\u00e9, k\u013e\u00fa\u010de, ktor\u00e9 obsahuj\u00fa, bud\u00fa nedostupn\u00e9. Ka\u017ed\u00fd hlavn\u00fd uzol je zmyslupln\u00e9 spusti\u0165 na samostatnom logickom alebo fyzickom stroji. Taktie\u017e stoj\u00ed za to pam\u00e4ta\u0165, \u017ee ka\u017ed\u00fd uzol pracuje iba na jednom jadre, a ak chcete spusti\u0165 nieko\u013eko in\u0161tanci\u00ed Redis na jednom logickom stroji, uistite sa, \u017ee bud\u00fa be\u017ea\u0165 na r\u00f4znych jadr\u00e1ch (toto sme nesk\u00fa\u0161ali, ale teoreticky by to malo fungova\u0165). V podstate hlavn\u00e9 uzly zabezpe\u010duj\u00fa be\u017en\u00e9 shardovanie a v\u00e4\u010d\u0161\u00ed po\u010det hlavn\u00fdch uzlov umo\u017e\u0148uje \u0161k\u00e1lovanie z\u00e1pisov\u00fdch a \u010d\u00edtac\u00edch po\u017eiadaviek.<\/p>\n<p><\/p>\n<p>Po tom, \u010do s\u00fa v\u0161etky k\u013e\u00fa\u010de rozdelen\u00e9 pod\u013ea slotov a sloty rozmiestnen\u00e9 medzi hlavn\u00e9 uzly, k ka\u017ed\u00e9mu hlavn\u00e9mu uzlu je mo\u017en\u00e9 prida\u0165 \u013eubovo\u013en\u00fd po\u010det slave uzlov. V r\u00e1mci ka\u017edej takej dvojice \"hlavn\u00fd-slave\" bude fungova\u0165 be\u017en\u00e1 replik\u00e1cia. Slave s\u00fa potrebn\u00e9 na \u0161k\u00e1lovanie \u010d\u00edtac\u00edch po\u017eiadaviek a na n\u00fadzov\u00e9 prepnutie v pr\u00edpade zlyhania hlavn\u00e9ho uzla.<br \/>\n<img decoding=\"async\" alt=\"O presune z Redis na Redis-cluster\" src=\"\/wp-content\/uploads\/2020\/08\/90feb7ef9dacb858d5f21edc214df14d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teraz sa po\u010fme rozpr\u00e1va\u0165 o oper\u00e1ci\u00e1ch, ktor\u00e9 by sme mali vedie\u0165 vykon\u00e1va\u0165.<\/p>\n<p><\/p>\n<p>Na syst\u00e9m sa budeme obraca\u0165 cez Redis-CLI. Ke\u010f\u017ee Redis nem\u00e1 jedin\u00e9 vstupn\u00e9 miesto, nasleduj\u00face oper\u00e1cie je mo\u017en\u00e9 vykona\u0165 na ktoromko\u013evek z uzlov. V ka\u017edom bode osobitne upozor\u0148ujem na mo\u017enos\u0165 vykonania oper\u00e1cie pod za\u0165a\u017een\u00edm.<\/p>\n<p><\/p>\n<ul>\n<li>Prv\u00e9 a najd\u00f4le\u017eitej\u0161ie, \u010do budeme potrebova\u0165: oper\u00e1cia cluster nodes. T\u00e1to oper\u00e1cia vracia stav klastra, zobrazuje zoznam uzlov, ich \u00falohy, prerozdelenie slotov a pod. \u010eal\u0161ie inform\u00e1cie je mo\u017en\u00e9 z\u00edska\u0165 pomocou cluster info a cluster slots.<\/li>\n<li>Bolo by dobr\u00e9 vedie\u0165 prid\u00e1va\u0165 a odstra\u0148ova\u0165 nody. Na to s\u00fa oper\u00e1cie cluster meet a cluster forget. Upozor\u0148ujem, \u017ee cluster forget je potrebn\u00e9 aplikova\u0165 na KA\u017dD\u00da nodu, \u010di u\u017e na majstrov, alebo na repliky. Cluster meet sta\u010d\u00ed vyvola\u0165 len na jednej node. Toto rozl\u00ed\u0161enie m\u00f4\u017ee zneis\u0165ova\u0165, preto je lep\u0161ie sa o \u0148om dozvedie\u0165 predt\u00fdm, ako uvediete cluster do prev\u00e1dzky. Pridanie nody sa bezpe\u010dne vykon\u00e1va v prev\u00e1dzke a nijako neovplyv\u0148uje fungovanie clusteru (\u010do je logick\u00e9). Ak v\u0161ak pl\u00e1nujete odstr\u00e1ni\u0165 nodu z clusteru, mali by ste sa uisti\u0165, \u017ee na nej nezostali sloty (inak riskujete stratu pr\u00edstupu ku v\u0161etk\u00fdm k\u013e\u00fa\u010dom na tejto nodu). Tie\u017e neodstra\u0148ujte majstra, ktor\u00fd m\u00e1 slave, inak sa bude vykon\u00e1va\u0165 zbyto\u010dn\u00e9 hlasovanie za nov\u00e9ho majstra. Ak na nod\u00e1ch u\u017e nie s\u00fa sloty, tak to nie je ve\u013ek\u00fd probl\u00e9m, ale na\u010do si prid\u00e1va\u0165 zbyto\u010dn\u00e9 vo\u013eby, ke\u010f m\u00f4\u017eeme najprv odstr\u00e1ni\u0165 slaves.<\/li>\n<li>Ak je potrebn\u00e9 n\u00e1silne vymeni\u0165 miesta majstra a slava, hod\u00ed sa pr\u00edkaz cluster failover. Pri jeho vyvolan\u00ed v prev\u00e1dzke je potrebn\u00e9 ch\u00e1pa\u0165, \u017ee po\u010das vykon\u00e1vania oper\u00e1cie bude majster nedostupn\u00fd. Zvy\u010dajne prechod trv\u00e1 menej ne\u017e sekundu, ale nie je atom\u00e1rny. M\u00f4\u017eete po\u010d\u00edta\u0165 s t\u00fdm, \u017ee \u010das\u0165 po\u017eiadaviek na majstra v tuto dobu skon\u010d\u00ed chybou.<\/li>\n<li>Pred odstr\u00e1nen\u00edm uzla z klastru by na \u0148om nemali zosta\u0165 \u017eiadne sloty. Je lep\u0161ie ich presun\u00fa\u0165 pomocou pr\u00edkazu cluster reshard. Sloty bud\u00fa presunut\u00e9 z jedn\u00e9ho mastera na in\u00fd. Cel\u00e1 oper\u00e1cia m\u00f4\u017ee trva\u0165 nieko\u013eko min\u00fat, v z\u00e1vislosti od mno\u017estva pren\u00e1\u0161an\u00fdch \u00fadajov, av\u0161ak proces presunu je bezpe\u010dn\u00fd a nijako neovplyv\u0148uje fungovanie klastru. T\u00fdmto sp\u00f4sobom je mo\u017en\u00e9 prenies\u0165 v\u0161etky \u00fadaje z jedn\u00e9ho uzla na druh\u00fd priamo pod z\u00e1\u0165a\u017eou, bez obavy o ich dostupnos\u0165. Existuj\u00fa v\u0161ak aj nuansy. Po prv\u00e9, presun \u00fadajov je spojen\u00fd s ur\u010ditou z\u00e1\u0165a\u017eou na uzle prij\u00edmaj\u00facom a odosielaj\u00facom. Ak je uzol prij\u00edmaj\u00faci u\u017e silne za\u0165a\u017een\u00fd procesorom, nemalo by sa ho e\u0161te viac za\u0165a\u017eova\u0165 prij\u00edman\u00edm nov\u00fdch \u00fadajov. Po druh\u00e9, akon\u00e1hle na odosielaj\u00facom masterovi nezostane ani jeden slot, v\u0161etci jeho slave okam\u017eite prejd\u00fa k masterovi, na ktor\u00fd boli tieto sloty presunut\u00e9. Probl\u00e9m spo\u010d\u00edva v tom, \u017ee v\u0161etci t\u00edto slave sa naraz pok\u00fasia synchronizova\u0165 \u00fadaje. A e\u0161te budete ma\u0165 \u0161\u0165astie, ak to bude \u010diasto\u010dn\u00e1, a nie \u00fapln\u00e1 synchroniz\u00e1cia. Zoh\u013eadnite to a skombinujte oper\u00e1cie presunu slotov a odpojenia\/presunu slave. Alebo sa spoliehajte na to, \u017ee m\u00e1te dostato\u010dn\u00e9 rezervy.<\/li>\n<li>\u010co robi\u0165, ak po\u010das presunu zist\u00edte, \u017ee ste niekde stratili sloty? D\u00fafam, \u017ee sa v\u00e1s tento probl\u00e9m nedotkne, ale ak \u00e1no, existuje oper\u00e1cia cluster fix. T\u00e1to oper\u00e1cia rozlo\u017e\u00ed sloty po uzloch n\u00e1hodne. Odpor\u00fa\u010dam skontrolova\u0165 jej fungovanie po predch\u00e1dzaj\u00facom odstr\u00e1nen\u00ed uzla s rozdelen\u00fdmi slotmi z klastru. Ke\u010f\u017ee \u00fadaje v nerozdelen\u00fdch slotoch s\u00fa u\u017e tak \u010di tak nedostupn\u00e9, ob\u00e1va\u0165 sa probl\u00e9mov s dostupnos\u0165ou t\u00fdchto slotov je u\u017e neskoro. Na rozdelen\u00e9 sloty oper\u00e1cia nem\u00e1 vplyv.<\/li>\n<li>\u010eal\u0161ia u\u017eito\u010dn\u00e1 oper\u00e1cia je monitor. Umo\u017e\u0148uje v re\u00e1lnom \u010dase vidie\u0165 cel\u00fd zoznam po\u017eiadaviek, ktor\u00e9 prich\u00e1dzaj\u00fa na uzol. Navy\u0161e, na z\u00e1klade nej m\u00f4\u017eete vykona\u0165 grep a zisti\u0165, \u010di existuje potrebn\u00fd prenos.<\/li>\n<\/ul>\n<p><\/p>\n<p>Je potrebn\u00e9 spomen\u00fa\u0165 aj proces n\u00fadzov\u00e9ho preklapania master uzla. Stru\u010dne povedan\u00e9, existuje a pod\u013ea m\u00f4jho n\u00e1zoru funguje skvele. Av\u0161ak netreba si myslie\u0165, \u017ee ak vytrhnete k\u00e1bel zo z\u00e1str\u010dky na stroji s master uzlom, Redis okam\u017eite preklop\u00ed a klienti si nev\u0161imn\u00fa stratu. Z mojej praxe prekl\u00e1panie trv\u00e1 nieko\u013eko sek\u00fand. Po\u010das tohto \u010dasu bude \u010das\u0165 d\u00e1t nedostupn\u00e1: zist\u00ed sa nedostupnos\u0165 mastera, uzly volia nov\u00e9ho, slave uzly preklop\u00ed, d\u00e1ta sa synchronizuj\u00fa. Najlep\u0161\u00ed sp\u00f4sob, ako sa presved\u010di\u0165, \u017ee sch\u00e9ma funguje, je uskuto\u010dni\u0165 lok\u00e1lne cvi\u010denia. Zria\u010fte si klaster na svojom notebooku, za\u0165a\u017ete ho minim\u00e1lne, simulujte p\u00e1d (napr\u00edklad zablokovan\u00edm portov), ohodno\u0165te r\u00fdchlos\u0165 preklapania. Pod\u013ea m\u0148a len po takomto hran\u00ed jeden alebo dva dni si m\u00f4\u017eete by\u0165 ist\u00ed funkciou technol\u00f3gie. Alebo sa spo\u013eahn\u00fa\u0165, \u017ee softv\u00e9r, ktor\u00fd pou\u017e\u00edva polovica internetu, ur\u010dite funguje.<\/p>\n<p><\/p>\n<h1 id=\"konfiguraciya\">Konfigur\u00e1cia<\/h1>\n<p><\/p>\n<p>\u010casto je konfigur\u00e1cia prv\u00e9, \u010do je potrebn\u00e9 na za\u010diatok pr\u00e1ce s n\u00e1strojom. A ke\u010f u\u017e v\u0161etko funguje, nechce sa n\u00e1m dot\u00fdka\u0165 nastaven\u00ed. Je potrebn\u00e9 vynalo\u017ei\u0165 ur\u010dit\u00e9 \u00fasilie, aby ste sa don\u00fatili vr\u00e1ti\u0165 sa k nastaveniam a starostlivo ich prejs\u0165. Z mojej pam\u00e4te sme mali aspo\u0148 dva v\u00e1\u017ene v\u00fdpadky kv\u00f4li nepozornosti k konfigur\u00e1cii. Venova\u0165 osobitn\u00fa pozornos\u0165 nasleduj\u00facim bodom:<\/p>\n<p><\/p>\n<ul>\n<li>timeout 0<br \/>\n<em>\u010cas, po ktorom sa uzatv\u00e1raj\u00fa neakt\u00edvne pripojenia (v sekund\u00e1ch). 0 \u2014 neuzatv\u00e1raj\u00fa sa.<\/em><br \/>\nNie ka\u017ed\u00e1 na\u0161a kni\u017enica vedela spr\u00e1vne uzatv\u00e1ra\u0165 pripojenia. Ak t\u00fato nastavenie vypneme, riskujeme, \u017ee naraz\u00edme na limit po\u010dtu klientov. Na druhej strane, ak tak\u00fdto probl\u00e9m existuje, automatick\u00e9 preru\u0161enie straten\u00fdch pripojen\u00ed ho zamaskuje a mo\u017eno si ho nev\u0161imneme. Okrem toho, nie je vhodn\u00e9 zap\u00edna\u0165 toto nastavenie pri pou\u017eit\u00ed persist pripojen\u00ed.<\/li>\n<li>Save x y &amp; appendonly yes<br \/>\n<em>Ulo\u017eenie RDB sn\u00edmky.<\/em><br \/>\nProbl\u00e9my RDB\/AOF podrobne preberieme ni\u017e\u0161ie.<\/li>\n<li>stop-writes-on-bgsave-error no &amp; slave-serve-stale-data yes<br \/>\n<em>Ak je to zapnut\u00e9, pri poruche RDB sn\u00edmky master prestane prij\u00edma\u0165 po\u017eiadavky na zmeny. Ak je pripojenie s masterom preru\u0161en\u00e9, slave m\u00f4\u017ee pokra\u010dova\u0165 v odpovedan\u00ed na po\u017eiadavky (\u00e1no). Alebo prestane odpoveda\u0165 (nie).<\/em><br \/>\nNie sme spokojn\u00ed so situ\u00e1ciou, ke\u010f sa Redis zmen\u00ed na tekvicu.<\/li>\n<li>repl-ping-slave-period 5<br \/>\n<em>Po uplynut\u00ed tohto \u010dasu za\u010dneme ma\u0165 obavy, \u017ee master zlyhal a je \u010das na vykonanie failoveru.<\/em><br \/>\nBude potrebn\u00e9 ru\u010dne n\u00e1js\u0165 rovnov\u00e1hu medzi falo\u0161n\u00fdmi sp\u00fa\u0161\u0165ac\u00edmi sign\u00e1lmi a vykon\u00e1van\u00edm failoveru. Na\u0161ou praxou je to 5 sek\u00fand.<\/li>\n<li>repl-backlog-size 1024mb &amp; epl-backlog-ttl 0<br \/>\n<em>Presne to\u013eko d\u00e1t m\u00f4\u017eeme uchov\u00e1va\u0165 v vyrovn\u00e1vacej pam\u00e4ti pre odpojen\u00fa replik\u00e1ciu. Ak sa vyrovn\u00e1vacia pam\u00e4\u0165 napln\u00ed, bude potrebn\u00e9 kompletn\u00e9 synchronizovanie.<\/em><br \/>\nPraxe ukazuje, \u017ee je lep\u0161ie nastavi\u0165 v\u00e4\u010d\u0161iu hodnotu. D\u00f4vodov, pre\u010do m\u00f4\u017ee replik\u00e1cia za\u010da\u0165 zaost\u00e1va\u0165, je ve\u013ea. Ak zaost\u00e1va, va\u0161e hlavn\u00e9 zariadenie m\u00e1 pravdepodobne probl\u00e9my, a \u00fapln\u00e1 synchroniz\u00e1cia sa stane poslednou kvapkou.<\/li>\n<li>maxclients 10000<br \/>\n<em>Maxim\u00e1lny po\u010det s\u00fa\u010dasn\u00fdch klientov.<\/em><br \/>\nNa\u0161ou sk\u00fasenos\u0165ou je, \u017ee je lep\u0161ie nastavi\u0165 v\u00e4\u010d\u0161iu hodnotu. Redis sa v\u00fdborne vyrovn\u00e1va s 10 tis\u00edcami pripojen\u00ed. Len sa uistite, \u017ee m\u00e1 syst\u00e9m dostatok z\u00e1suviek. <\/li>\n<li>maxmemory-policy volatile-ttl<br \/>\n<em>Pravidlo, pod\u013ea ktor\u00e9ho sa vymaz\u00e1vaj\u00fa k\u013e\u00fa\u010de pri dosiahnut\u00ed limitu dostupnej pam\u00e4te.<\/em><br \/>\nD\u00f4le\u017eit\u00e9 nie je len pravidlo, ale aj pochopenie, ako to bude prebieha\u0165. Redis mo\u017eno pochv\u00e1li\u0165 za schopnos\u0165 plynulo fungova\u0165 pri dosiahnut\u00ed limitu pam\u00e4te. <\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"problemy-rdb-i-aof\">Probl\u00e9my RDB a AOF<\/h1>\n<p><\/p>\n<p>Hoci Redis uchov\u00e1va v\u0161etky inform\u00e1cie v opera\u010dnej pam\u00e4ti, existuje aj mechanizmus na ukladanie d\u00e1t na disk. Presnej\u0161ie povedan\u00e9, tri mechanizmy:<\/p>\n<p><\/p>\n<ul>\n<li>RDB-snapshot \u2014 kompletn\u00fd obraz v\u0161etk\u00fdch d\u00e1t. Nastavuje sa pomocou konfigur\u00e1cie SAVE X Y a \u010d\u00edta sa ako \u201eUchov\u00e1va\u0165 kompletn\u00fd snapshot v\u0161etk\u00fdch d\u00e1t ka\u017ed\u00fdch X sek\u00fand, ak sa zmenil aspo\u0148 Y k\u013e\u00fa\u010dov.\u201c<\/li>\n<li>Append-only file \u2014 zoznam oper\u00e1ci\u00ed v porad\u00ed ich vykon\u00e1vania. Prid\u00e1va nov\u00e9 prich\u00e1dzaj\u00face oper\u00e1cie do s\u00faboru ka\u017ed\u00fdch X sek\u00fand alebo ka\u017ed\u00fdch Y oper\u00e1ci\u00ed.<\/li>\n<li>RDB a AOF \u2014 kombin\u00e1cia dvoch predch\u00e1dzaj\u00facich.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ka\u017ed\u00e1 met\u00f3da m\u00e1 svoje v\u00fdhody a nev\u00fdhody, nebudem ich v\u0161etky vymen\u00fava\u0165, len upozorn\u00edm na niektor\u00e9 menej zjavn\u00e9, pod\u013ea m\u0148a d\u00f4le\u017eit\u00e9 aspekty.<\/p>\n<p><\/p>\n<p>Po prv\u00e9, pre ulo\u017eenie RDB-snapshotu je potrebn\u00e9 spusti\u0165 FORK. Ak je \u00fadajov ve\u013ea, m\u00f4\u017ee to sp\u00f4sobit zamrznutie cel\u00e9ho Redis na obdobie od nieko\u013ek\u00fdch milisek\u00fand a\u017e po sekundu. Okrem toho, syst\u00e9mu je potrebn\u00e9 prideli\u0165 pam\u00e4\u0165 na tak\u00fd snapshot, \u010do vedie k potrebe udr\u017ea\u0165 na logickej ma\u0161ine dvojit\u00e9 z\u00e1soby opera\u010dnej pam\u00e4te: ak je pre Redis pridelen\u00fdch 8 GB, na virtu\u00e1lnom stroji s n\u00edm by malo by\u0165 k dispoz\u00edcii 16.<\/p>\n<p><\/p>\n<p>Po druh\u00e9, existuj\u00fa probl\u00e9my s \u010diasto\u010dnou synchroniz\u00e1ciou. V re\u017eime AOF pri op\u00e4tovnom pripojen\u00ed slave namiesto \u010diasto\u010dnej synchroniz\u00e1cie m\u00f4\u017ee prebieha\u0165 pln\u00e1. Pre\u010do sa to deje, som nepochopil. Ale je dobr\u00e9 na to pam\u00e4ta\u0165.<\/p>\n<p><\/p>\n<p>Tieto dva body u\u017e n\u00fatia zamyslie\u0165 sa nad t\u00fdm, \u010di s\u00fa n\u00e1m tieto d\u00e1ta na disku naozaj potrebn\u00e9, ak s\u00fa u\u017e aj tak v\u0161etky duplikovan\u00e9 slave-mi. Strati\u0165 d\u00e1ta m\u00f4\u017eeme len pri zlyhan\u00ed v\u0161etk\u00fdch slave-ov, a to je probl\u00e9m na \u00farovni 'po\u017eiar v DDC'. Ako kompromis m\u00f4\u017eeme navrhn\u00fa\u0165 uchov\u00e1vanie d\u00e1t len na slave-och, ale v takom pr\u00edpade mus\u00edme zabezpe\u010di\u0165, aby nikdy nez\u00edskali status master pri havarijnom obnoven\u00ed (pre to existuje nastavenie prior\u00edt slave-ov v ich konfigur\u00e1cii). V ka\u017edom konkr\u00e9tnom pr\u00edpade zva\u017eujeme, \u010di uchov\u00e1va\u0165 d\u00e1ta na disku, a v\u00e4\u010d\u0161inou odpoved\u00e1me 'nie'.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Z\u00e1ver<\/h1>\n<p><\/p>\n<p>Na z\u00e1ver by som r\u00e1d d\u00fafal, \u017ee som dok\u00e1zal poskytn\u00fa\u0165 v\u0161eobecn\u00fa predstavu o fungovan\u00ed redis-cluster-a t\u00fdm, ktor\u00ed o \u0148om \u00faplne nepo\u010duli, a tie\u017e som upozornil na niektor\u00e9 menej zjavn\u00e9 body pre t\u00fdch, ktor\u00ed ho u\u017e d\u00e1vno pou\u017e\u00edvaj\u00fa.<br \/>\n\u010eakujem za v\u00e1\u0161 \u010das a, ako obvykle, koment\u00e1re na t\u00e9mu s\u00fa v\u00edtan\u00e9.<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/515620\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0445\u043e\u0434\u044f \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u043b\u0435\u0442, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0432 \u043d\u0435\u043c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432 10 \u0440\u0430\u0437 \u0432\u044b\u0448\u0435, \u0430 \u0446\u0435\u043d\u0430 \u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u0432 \u0441\u043e\u0442\u043d\u0438 \u0440\u0430\u0437? \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043a\u0440\u0443\u0442\u043e\u0439 Highload Engineer. \u041d\u043e \u0437\u0430 \u043d\u0435\u0438\u043c\u0435\u043d\u0438\u0435\u043c \u0433\u043e\u0440\u043d\u0438\u0447\u043d\u043e\u0439 \u0442\u0430\u043a\u043e\u0432\u043e\u0433\u043e, \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0434\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043c\u043d\u0435. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91847,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91846","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\u0445\u043e\u0434\u044f \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435.\" \/>\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\/sk\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\udd47\u041e \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0435 \u0441 Redis \u043d\u0430 Redis-cluster | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0445\u043e\u0434\u044f \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster\" \/>\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-19T17:41:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-19T17:41:57+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\udd47O prechode z Redis na Redis-cluster | ProHoster","description":"Prich\u00e1dzaj\u00faci produkt, ktor\u00fd sa vyv\u00edja viac.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\udd47\u041e \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0435 \u0441 Redis \u043d\u0430 Redis-cluster | ProHoster","og:description":"\u041f\u0440\u0438\u0445\u043e\u0434\u044f \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster","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-19T17:41:57+00:00","article:modified_time":"2020-08-19T17:41:57+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91846","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:19:41","updated":"2022-10-03 14:54:15","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/91846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=91846"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/91846\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/91847"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=91846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=91846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=91846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}