{"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\/et\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster","title":{"rendered":"\u00dcleminek Rediselt Redis-klastrile","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u00dcleminek Rediselt Redis-klastrile\" src=\"\/wp-content\/uploads\/2020\/08\/ea8bc47f73ef3b06ccfdf94d323592bf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Toodet, mis on arenenud \u00fcle k\u00fcmne aasta, pole \u00fcldse \u00fcllatav kohata aegunud tehnoloogiaid. Ent mis juhtub, kui kuue kuu p\u00e4rast peate taluma k\u00fcmme korda suuremat koormust ja v\u00e4ljaminekud kukuvad sadadel kordadel? Sellisel juhul on teil vajalik k\u00f5rge koormuse insener. Kuid kuna ei olnud sellist spetsialisti, usaldati probleem minu k\u00e4tte. Artikli esimeses osas r\u00e4\u00e4gin, kuidas me \u00fcleminek Rediselt Redis-klastrile teostasime, ja teises osas jagan n\u00e4pun\u00e4iteid, kuidas klastrit kasutada ja millele t\u00e4helepanu p\u00f6\u00f6rata t\u00f6\u00f6s.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"vybor-tehnologii\">Tehnoloogia valik<\/h1>\n<p><\/p>\n<p>Kas eraldi Redis on nii halb? <em>Kas eraldi Redis (standalone redis) konfiguratsioonis 1 meister ja N orja jaoks? Miks ma pean seda aegunud tehnoloogiaks?<\/em> (standalone redis) konfiguratsioonis 1 master ja N slave'i? Miks ma nimetan seda vananenud tehnoloogiaks?<\/p>\n<p><\/p>\n<blockquote><p>Ei, Redis ei ole nii halb... Siiski on teatud puudusi, mida ei tohi ignoreerida.<\/p><\/blockquote>\n<p><\/p>\n<ul>\n<li>\n<p>Esiteks, Redis ei toeta meistrite eba\u00f5nnestumise ajal taastumise mehhanisme. Selle probleemi lahendamiseks kasutasime konfigureerimist, mis automaatselt suunab VIP-e uuele meistrile, muutes \u00fche orja rolli ja l\u00fclitades \u00fclej\u00e4\u00e4nud sisse. See mehhanism t\u00f6\u00f6tas, kuid seda ei saanud pidada usaldusv\u00e4\u00e4rseks lahenduseks. Esiteks, toimusid valeh\u00e4dasid ja teiseks, see oli \u00fchekordne ning sellele j\u00e4rgnesid k\u00e4sitsi teostatavad toimingud.<\/p>\n<p>\n<\/li>\n<li>\n<p>Teiseks, ainult \u00fche meistri olemasolu t\u00f5i kaasa \u0161ardinguprobleemi. Oli vajalik luua mitu s\u00f5ltumatut klastrit \"1 meister ja N orja\", seej\u00e4rel jagada andmebaasid nende masinate vahel k\u00e4sitsi ja loota, et hommikuks ei paisu \u00fckski andmebaas nii, et see tuleb viia eraldi instantsi.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Millised on valikud?<\/p>\n<p><\/p>\n<ul>\n<li>K\u00f5ige kallim ja rikkam lahendus on Redis-Enterprise. See on karbilahendus t\u00e4ie tehnilise toetusega. Kuigi see n\u00e4eb tehniliselt ideaalne v\u00e4lja, ei sobinud see meile ideoloogilistel p\u00f5hjustel. <\/li>\n<li>Redis-cluster. Tugineb oli toeks h\u00e4daolukordade \u00fclemineku ja jagamise toetamine. Liides ei erine praktiliselt tavalisest versioonist. See n\u00e4eb paljut\u00f5otav v\u00e4lja, aga r\u00e4\u00e4gime hiljem keerukustest.<\/li>\n<li>Tarantool, Memcache, Aerospike ja teised. K\u00f5ik need t\u00f6\u00f6riistad teevad enamasti sama. Kuid igal\u00fchel on oma puudused. Otsustasime mitte k\u00f5ik munad \u00fchte korvi panna. Memcache ja Tarantool on meil muude \u00fclesannete jaoks, ja, et ette \u00f6elda, on meie kogemuse j\u00e4rgi nendega olnud rohkem probleeme.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"specifika-ispolzovaniya\">Kasutamisomadused<\/h1>\n<p><\/p>\n<p>Vaadakem, milliseid \u00fclesandeid oleme ajalooliselt Redis\u2019iga lahendanud ja millist funktsionaalsust kasutanud:<\/p>\n<p><\/p>\n<ul>\n<li>Cache enne p\u00e4ringuid kaugteenustele nagu 2GIS | Golang<br \/>\n<blockquote><p>GET SET MGET MSET \"SELECT DB\"\n<\/p><\/blockquote>\n<\/li>\n<li>Cache enne MYSQL | PHP<br \/>\n<blockquote><p>GET SET MGET MSET SCAN \"KEY BY PATTERN\" \"SELECT DB\"\n<\/p><\/blockquote>\n<\/li>\n<li>Peamine salvestuskoht seansside haldamiseks ja juhtide koordinaatide jaoks | Golang<br \/>\n<blockquote><p>GET SET MGET MSET \"SELECT DB\" \"ADD GEO KEY\" \"GET GEO KEY\" SCAN\n<\/p><\/blockquote>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>Nagu n\u00e4ha, pole siin mingit k\u00f5rgemat matemaatikat. Kus siis seisneb keerukus? Vaatame iga meetodi eraldi.<\/p>\n<p><\/p>\n<p>Meetod<br \/>\nKirjeldus<br \/>\nRedis-clusteri erip\u00e4rad<br \/>\nLahendus<\/p>\n<p>GET SET<br \/>\nKirjutada\/ette lugeda v\u00f5ti<\/p>\n<p>MGET MSET<br \/>\nKirjutada\/ette lugeda mitu v\u00f5tit<br \/>\nV\u00f5tmed asuvad erinevates s\u00f5lmedes. Valmis raamatukogud oskavad teha Multi-operatsioone ainult \u00fche s\u00f5lme piires.<br \/>\nAsenda MGET N GET operatsioonide pipeline'iga.<\/p>\n<p>VALI DB<br \/>\nVali andmebaas, millega t\u00f6\u00f6tame.<br \/>\nEi toeta mitut andmebaasi.<br \/>\nKoguda k\u00f5ik \u00fchte andmebaasi. Lisada v\u00f5tmetele prefikseid.<\/p>\n<p>SCAN<br \/>\nK\u00e4ia l\u00e4bi k\u00f5ik v\u00f5tmed andmebaasis.<br \/>\nKuna meil on \u00fcks andmebaas, on k\u00f5igi v\u00f5tmete m\u00f6\u00f6da k\u00e4imine klastris liiga kulukas.<br \/>\nHoidke invariant \u00fches v\u00f5tmes ja tehke HSCAN selle v\u00f5tme j\u00e4rgi. V\u00f5i loobuge sellest t\u00e4ielikult.<\/p>\n<p>GEO<br \/>\nOperatsioonid geov\u00f5tmega.<br \/>\nGeov\u00f5ti ei jagune.<\/p>\n<p>KEY BY PATTERN<br \/>\nOtsige v\u00f5tit mustri j\u00e4rgi.<br \/>\nKuna meil on \u00fcks andmebaas, otsime k\u00f5igi v\u00f5tmete kaudu klastris. Liiga kulukas.<br \/>\nLoobuda v\u00f5i hoida invariant, nagu SCAN-i puhul.<\/p>\n<p><\/p>\n<h1 id=\"redis-vs-redis-cluster\">Redis vs Redis-cluster<\/h1>\n<p><\/p>\n<p>Mida me kaotame ja mida me saame klastrisse \u00fcleminekul?<\/p>\n<p><\/p>\n<ul>\n<li>Puudused: kaotame mitme andmebaasi funktsionaalsuse. \n<ul>\n<li>Kui soovime salvestada \u00fchte klastrisse loogiliselt mitte seotud andmeid, peame tegema t\u00fclikad lahendused prefiksite n\u00e4ol. <\/li>\n<li>Kaotame k\u00f5ik \u201eandmebaasi\u201c operatsioonid, nagu SCAN, DBSIZE, CLEAR DB jne.<\/li>\n<li>Mitme operatsiooni teostamine on oluliselt keerulisem, kuna v\u00f5ib osutuda vajalikuks p\u00f6\u00f6rduda mitme s\u00f5lmese poole.<\/li>\n<\/ul>\n<\/li>\n<li>Eelised: \n<ul>\n<li>Vigu kannatavad s\u00fcsteemid, mis pakuvad varu juhtimist.<\/li>\n<li>Shardimine Redis'i k\u00fclgedel.<\/li>\n<li>Andmete edastamine s\u00f5lmede vahel, atomaarne ja katkestuseta.<\/li>\n<li>V\u00f5imsuse ja koormuse lisamine ja \u00fcmberjaotamine katkestuseta.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p><em>J\u00f5uaksin j\u00e4reldusele, et kui teil ei ole vaja k\u00f5rget varu tagamise taset, ei ole klastrisse \u00fcleminek selle v\u00e4\u00e4rt. See v\u00f5ib osutuda keeruliseks \u00fclesandeks. Kuid kui valida eriversiooni ja klastriversiooni vahel, tasub valida klaster, kuna see ei j\u00e4\u00e4 mingisuguses osas alla ja v\u00e4hendab teie muret.<\/em><\/p>\n<p><\/p>\n<h1 id=\"podgotovka-k-pereezdu\">\u00dcleminekuks valmistumine<\/h1>\n<p><\/p>\n<p>Alustame \u00fcleminekuks vajalike n\u00f5udmistega:<\/p>\n<p><\/p>\n<ul>\n<li>See peab olema sujuv. T\u00e4ielik teenuse seiskamine 5 minutiks ei sobi.<\/li>\n<li>See peab olema v\u00f5imalikult ohutu ja j\u00e4rkj\u00e4rguline. Soovime omada mingit kontrolli olukorra \u00fcle. Me ei soovi k\u00f5ike korraga kokku panna ja lootma j\u00e4\u00e4da tagasiv\u00f5tmise nupule.<\/li>\n<li>Minimaalsed andmekadud \u00fcleviimise korral. Me m\u00f5istame, et atomaarne \u00fcleminek on v\u00e4ga keeruline, seet\u00f5ttu lubame teatud des\u00fcnkroniseerimist tavaliselt ja klasterdatud Redis'i andmete vahel.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"obsluzhivanie-klastera\">Klastri hooldus<\/h1>\n<p><\/p>\n<p>Enne \u00fcleminekut tuleks m\u00f5elda, kas me suudame klassit toetada:<\/p>\n<p><\/p>\n<ul>\n<li>Graafikud. Kasutame t\u00e4itmiseks Prometheust ja Grafanat, et j\u00e4lgida protsessorite koormust, m\u00e4luhulka, klientide arvu, GET, SET, AUTH ja muude operatsioonide arvu.<\/li>\n<li>Ekspertiis. Kujutage ette, et homme on teie vastutada suur klaster. Kui see rikki l\u00e4heb, ei saa keegi, v\u00e4lja arvatud teie, seda parandada. Kui see hakkab pidurduma \u2014 jooksevad k\u00f5ik teie poole. Kui on vaja lisada ressursse v\u00f5i koormust \u00fcmber jaotada \u2014 taas teie poole. Et v\u00e4ltida halli juuste saamist 25-aastasena, on soovitatav arvestada nende olukordadega ja eelnevalt kontrollida, kuidas tehnoloogia erinevates olukordades k\u00e4itub. R\u00e4\u00e4gime sellest l\u00e4hemalt jaotises \u201eEkspertiis\u201c.<\/li>\n<li>Monitooringud ja teavitamine. Kui klaster rikki l\u00e4heb, tahad sellest esimesena teada saada. Siin oleme piirdunud teavitamisega, et k\u00f5ik s\u00f5lmed edastavad sama teavet klooni oleku kohta (jah, juhtub ka teisiti). Teisi probleeme on kiiremini m\u00e4rgata Redis'i klientide teenuste teavituste kaudu.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"pereezd\">Kolimine<\/h1>\n<p><\/p>\n<p>Kuidas me kolime:<\/p>\n<p><\/p>\n<ul>\n<li>Esiteks tuleb ette valmistada raamatukogu klooniga t\u00f6\u00f6tamiseks. G\u043e versiooni aluseks v\u00f5tsime go-redis'i ja muutsime seda veidi vastavalt enda vajadustele. Realiseerisime Multi-meetodid l\u00e4bi pipeline'ide ning muutisime ka p\u00e4ringute kordamise reegleid. PHP versiooniga tekkis rohkem probleeme, kuid l\u00f5puks otsustasime php-redis'i kasuks. Hiljuti on nad kasutusele v\u00f5tnud klastritoe ning meie arvates n\u00e4eb see hea v\u00e4lja.<\/li>\n<li>Seej\u00e4rel tuleb klaster enda \u00fcles seada. See toimub s\u00f5na otseses m\u00f5ttes kahe k\u00e4suga, l\u00e4htudes konfiguratsioonifailist. R\u00e4\u00e4gime seadistamisest l\u00e4hemalt allpool.<\/li>\n<li>Aeglase \u00fclemineku jaoks kasutame dry-re\u017eiimi. Kuna meil on kaks versiooni teegist, millel on sama liides (\u00fcks tavaversioon ja teine klastriversioon), pole midagi keerulist teha m\u00e4hist, mis t\u00f6\u00f6taks eraldi versiooniga ja samal ajal dubleeriks k\u00f5ik p\u00e4ringud klastrisse, v\u00f5rdleks vastuseid ja kirjutaks lahknevused logidesse (meie puhul NewRelic). Nii et isegi kui klastriversioon rikke t\u00f5ttu avalikustamise ajal puruneb, ei m\u00f5juta see meie tootmist. <\/li>\n<li>Klastri dry-re\u017eiimis v\u00e4ljatoomisega saame rahulikult j\u00e4lgida vastuste lahknevuste graafikut. Kui vigade osakaal aeglaselt, kuid kindlalt liigub m\u00f5ne v\u00e4ikese konstantse suunas, siis on k\u00f5ik h\u00e4sti. Miks lahknevused ikkagi tekivad? Sest eraldi versioonis toimumine toimub veidi varem kui klastris, ja t\u00e4nu mikroviivitusele v\u00f5ivad andmed lahkuda. J\u00e4\u00e4nud on vaid vaadata lahknevuste logisid, ja kui k\u00f5ik need on seletatavad mitteaatomaarsete kirjutamiste kaudu, siis saab edasi liikuda.<\/li>\n<li>N\u00fc\u00fcd saab dry-mode'i vahetada tagasi. Kirjutame ja loeme klastrist, ning dubleerime eraldi versioonis. Miks? J\u00e4rgmise n\u00e4dala jooksul tahame klastrit j\u00e4lgida. Kui peaks selguma, et koormuse tipul on probleeme v\u00f5i oleme midagi t\u00e4helepanuta j\u00e4tnud, on meil alati v\u00f5imalus erakorraliseks tagasitulekuks vanale koodile ja v\u00e4rsketele andmetele dry-mode'i kaudu.<\/li>\n<li>On j\u00e4\u00e4nud dry-mode v\u00e4lja l\u00fclitada ja eraldi versioon lahti v\u00f5tta. <\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"ekspertiza\">Ekspert\u00fclevaade<\/h1>\n<p><\/p>\n<p>Alustame l\u00fchidalt klastrisseadme kirjeldusest.<\/p>\n<p><\/p>\n<p>Esiteks on Redis key-value salvestus. V\u00f5tmetena kasutatakse suvalisi stringe. V\u00e4\u00e4rtusteks v\u00f5ivad olla numbrid, stringid ja terviklikud struktuurid. Viimaseid on palju, kuid \u00fcldise \u00fclesehituse m\u00f5istmiseks ei ole see oluline.<br \/>\nJ\u00e4rgmine tasand abstraktsiooni v\u00f5tmete j\u00e4rel on slotid (SLOTS). Iga v\u00f5ti kuulub \u00fchte 16 383 slotist. Iga sloti sees v\u00f5ib olla l\u00f5pmatult v\u00f5tmeid. Seega jagunevad k\u00f5ik v\u00f5tmed 16 383 kattumatu hulga vahel.<br \/>\n<img decoding=\"async\" alt=\"\u00dcleminek Rediselt Redis-klastrile\" src=\"\/wp-content\/uploads\/2020\/08\/a5e4be23381b42287f693e01d5d59a99.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seej\u00e4rel peab klastris olema N master-s\u00f5lme. Iga s\u00f5lm on nagu eraldi Redis-juhtum, mis teab k\u00f5ike teistest s\u00f5lmedest klastris. Iga master-s\u00f5lm sisaldab teatud arvu sadamaid. Iga sadam kuulub ainult \u00fchele master-s\u00f5lmele. K\u00f5iki sadamaid tuleb jaotada s\u00f5lmede vahel. Kui m\u00f5ni sadam j\u00e4\u00e4b jaotamata, siis pole nende sisu k\u00e4tte saadav. Iga master-s\u00f5lme on m\u00f5istlik k\u00e4ivitada eraldi loogilisel v\u00f5i f\u00fc\u00fcsilisel masinal. Samuti tuleb meeles pidada, et iga s\u00f5lm t\u00f6\u00f6tab ainult \u00fchel tuumal ja kui soovite k\u00e4ivitada mitu Redis-juhtumit \u00fchel loogilisel masinal, veenduge, et need t\u00f6\u00f6taksid erinevatel tuumadel (me ei ole seda proovinud, kuid teoorias peaks k\u00f5ik toimima). Fondamendis tagavad master-s\u00f5lmed tavalise \u0161ardimise ning suurem master-s\u00f5lmede arv v\u00f5imaldab skaleerida kirjutamis- ja lugemisp\u00e4ringuid.<\/p>\n<p><\/p>\n<p>Kui k\u00f5ik v\u00f5tmed on jaotatud slotide vahel ja slotid on jaotatud peanoodide vahel, saab igale peanoodile lisada suvalise arvu orjanoodid. Igas sellises \u201emeistri-orja\u201c \u00fchenduses t\u00f6\u00f6tab tavap\u00e4rane replikatsioon. Orjad on vajalikud lugemislehtede taotluste skaleerimiseks ja h\u00e4daolukordades peanoodi rikke korral.<br \/>\n<img decoding=\"async\" alt=\"\u00dcleminek Rediselt Redis-klastrile\" src=\"\/wp-content\/uploads\/2020\/08\/90feb7ef9dacb858d5f21edc214df14d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd r\u00e4\u00e4gime toimingutest, mida oleks hea osata teha.<\/p>\n<p><\/p>\n<p>Me p\u00f6\u00f6rdume s\u00fcsteemi poole Redis-CLI kaudu. Kuna Redis'il ei ole \u00fchte sisenemispunkti, saab j\u00e4rgmisi toiminguid sooritada \u00fcksk\u00f5ik millisel noodil. Igas punktis toon eraldi v\u00e4lja v\u00f5imaluse sooritada toiming koormuse all.<\/p>\n<p><\/p>\n<ul>\n<li>Esimene ja k\u00f5ige olulisem, mida vajame: toiming cluster nodes. See tagastab klastrite oleku, n\u00e4itab loetelu nootidest, nende rolle, slotide jaotust jne. T\u00e4iendavat teavet saab cluster info ja cluster slots abil.<\/li>\n<li>Oluline on osata s\u00f5lme lisada ja eemaldada. Selleks on operatsioonid cluster meet ja cluster forget. Pange t\u00e4hele, et cluster forget tuleb rakendada IGAS s\u00f5lmes, nii master-s\u00f5lmedes kui ka replikates. Cluster meet tuleb kutsuda v\u00e4lja vaid \u00fches s\u00f5lmes. See erinevus v\u00f5ib olla h\u00e4iriv, seega on parem sellest enne klasteri kasutusele v\u00f5tmist teada saada. S\u00f5lme lisamine toimub ohutult ja ei m\u00f5juta klasteri t\u00f6\u00f6d (mis on m\u00f5istetav). Kui kavatsete eemaldada s\u00f5lme klastrist, peate veenduma, et seal ei ole enam slote (vastasel juhul riskite kaotada ligip\u00e4\u00e4su k\u00f5igile v\u00f5tmetele sellele s\u00f5lmele). Samuti \u00e4rge eemaldage masterit, kellel on sl\u00e4bivad s\u00f5lmed, muidu k\u00e4ivitub ebavajalik h\u00e4\u00e4letus uue masteri valimiseks. Kui s\u00f5lmedes ei ole enam slote, siis see on v\u00e4ike probleem, kuid miks peaksime valima lisaks, kui saame k\u00f5igepealt eemaldada sl\u00e4bivad s\u00f5lmed.<\/li>\n<li>Kui peate sundima master'i ja slave'i vahetama, sobib k\u00e4sk cluster failover. Seda k\u00e4ivitades tuleb arvestada, et operatsiooni ajal on master k\u00e4ttesaamatu. Tavaline vahetus toimub v\u00e4hem kui sekundiga, kuid see ei ole aatomaarne. V\u00f5ite eeldada, et osa p\u00e4ringutest masterile sellel ajal eba\u00f5nnestub.<\/li>\n<li>Enne s\u00f5lme eemaldamist klastrist ei tohi seal olla \u00fchtegi sloti. Parim on nende \u00fcleandmine k\u00e4sklusega cluster reshard. Slotid kantakse \u00fche meistri juurest teise. Kogu operatsioon v\u00f5ib v\u00f5tta mitu minutit, s\u00f5ltuvalt edastatavate andmete mahust, kuid \u00fclekanne on ohutu ja ei m\u00f5juta klastrite t\u00f6\u00f6. Nii on k\u00f5ik andmed v\u00f5imalik \u00fchelt s\u00f5lmelt teisele \u00fcle kanda ka koormuse all, kartmata nende k\u00e4ttesaadavust. Siiski on m\u00f5ned n\u00fcansid. Esiteks on andmete edastamine seotud teatud koormusega nii saatja- kui ka vastuv\u00f5tva s\u00f5lme jaoks. Kui vastuv\u00f5ttev s\u00f5lm on juba protsessori poolest tugevalt koormatud, siis ei tasu seda veel uute andmete vastuv\u00f5tmisega \u00fcle koormata. Teiseks, niipea kui saatva meistri stint j\u00e4\u00e4b t\u00fchjaks, l\u00e4hevad k\u00f5ik tema sl\u00e4ivid kohe meesterile, kuhu need slotid on kantud. Probleem on selles, et k\u00f5ik need sl\u00e4ivid tahavad korraga andmeid s\u00fcnkroniseerida. Ja teil on vedanud, kui see on osaline, mitte t\u00e4ielik s\u00fcnkroniseerimine. Arvestage sellega ja kombineerige slotide edastamise ja slave'ide v\u00e4ljaj\u00e4tmise\/\u00fclekanne operatsioone. V\u00f5i lootke, et teil on piisavalt paindlikkust.<\/li>\n<li>Mida teha, kui m\u00e4rkate, et transportimise k\u00e4igus on m\u00f5ni slot kaduma l\u00e4inud? Loodan, et selle probleemiga te ei puutu, kuid igaks juhuks on olemas operatsioon cluster fix. See jaotab slotid node'ide vahel juhuslikus j\u00e4rjekorras. Soovitan kontrollida selle toimimist, eemaldades eelnevalt klastrist node, kus slotid on jagatud. Kuna jagamata slotid ei ole nagunii kergesti k\u00e4ttesaadavad, on hilja muretseda nende k\u00e4ttesaadavuse probleemide p\u00e4rast. Omakorda ei m\u00f5juta see jagatud slote.<\/li>\n<li>Veel \u00fcks kasulik operatsioon on monitor. See v\u00f5imaldab reaalajas n\u00e4ha kogu nimekirja p\u00e4ringutest, mis suunatakse node'ile. Veelgi enam, selle abil saab kasutada grep'i, et teada saada, kas vajalik liiklus on kohal.<\/li>\n<\/ul>\n<p><\/p>\n<p>Samuti on oluline mainida meistrinoodi h\u00e4daolukorra vahetamise protseduuri. L\u00fchi\u00fclevaates, see on olemas ja minu arvates t\u00f6\u00f6tab see suurep\u00e4raselt. Kuid \u00e4rge arvestage, et kui t\u00f5mbate juhi pistikust v\u00e4lja, vahetab Redis kohe ning kliendid ei m\u00e4rka katkestust. Minu praktikas toimub vahetamine mitme sekundi jooksul. Selle aja jooksul on osa andmeid k\u00e4ttesaamatud: meistri k\u00e4ttesaamatuse tuvastamine, nodide h\u00e4\u00e4letamine uue m\u00e4\u00e4ramiseks, slave'id vahetuvad ja andmed s\u00fcnkroonitakse. Parim viis enda veendumiseks, et s\u00fcsteem t\u00f6\u00f6tab, on l\u00e4bi viia kohalikud harjutused. Seadke klaster \u00fcles oma s\u00fclearvutis, andke sellele minimaalne koormus, simuleerige kokkuvarisemist (n\u00e4iteks blokeerides pordid) ja hinnake vahetamise kiirus. Minu arvates, alles p\u00e4rast paarip\u00e4evast katsetamist on v\u00f5imalik kindel olla tehnoloogia toimimises. V\u00f5i loodate, et tarkvara, mida kasutab pool internetist, t\u00f6\u00f6tab kindlasti.<\/p>\n<p><\/p>\n<h1 id=\"konfiguraciya\">Konfiguratsioon<\/h1>\n<p><\/p>\n<p>Tihti on konfiguratsioon see, millega alustamiseks k\u00f5igepealt tegelema peab. Kui k\u00f5ik t\u00f6\u00f6tab, ei taha enam konfiguratsiooniga ega selle seadistustega tegeleda. On vajalik, et ennast sundida tagasi seadete juurde naasma ja need hoolikalt \u00fcle vaatama. Minu m\u00e4lestustes on olnud v\u00e4hemalt kaks t\u00f5sist viga, mis tulenesid konfiguratsioonile t\u00e4helepanu mitte p\u00f6\u00f6ramisest. P\u00f6\u00f6rake erilist t\u00e4helepanu j\u00e4rgmistele punktidele:<\/p>\n<p><\/p>\n<ul>\n<li>timeout 0<br \/>\n<em>Aeg, mille jooksul suletakse mitteaktiivsed \u00fchendused (sekundites). 0 \u2014 ei sulgeda.<\/em><br \/>\nMeie iga teek ei osanud \u00f5igesti \u00fchendusi sulgeda. Selle seadistuse v\u00e4ljal\u00fclitamisega riskime, et j\u00f5uame kliendilimiidini. Teisest k\u00fcljest, kui selline probleem esineb, siis kaotatud \u00fchenduste automaatne katkestamine maskeerib selle ja me ei pruugi seda m\u00e4rgata. Samuti ei peaks seda seadistust lubama, kui kasutate p\u00fcsivaid \u00fchendusi.<\/li>\n<li>Save x y &amp; appendonly yes<br \/>\n<em>RDB-snapshooti salvestamine.<\/em><br \/>\nRDB\/AOF probleemidest r\u00e4\u00e4gime allpool \u00fcksikasjalikult.<\/li>\n<li>stop-writes-on-bgsave-error no &amp; slave-serve-stale-data yes<br \/>\n<em>Kui see on sisse l\u00fclitatud, l\u00f5petab master RDB-snapshoti rikke korral muudatuste vastuv\u00f5tmise. Kui masteriga \u00fchendus katkevad, v\u00f5ib slave siiski vastata p\u00e4ringutele (jah). V\u00f5i l\u00f5petab see vastamise (ei).<\/em><br \/>\nMe ei ole rahul olukorraga, kus Redis muutub k\u00f5rvitsaks.<\/li>\n<li>repl-ping-slave-period 5<br \/>\n<em>Selle aja jooksul hakkame muretsema, et master on katkenud ja on aeg failover-protseduur l\u00e4bi viia.<\/em><br \/>\nPeame k\u00e4sitsi leidma tasakaalu valeh\u00e4irete ja failover\u2019i k\u00e4ivitamise vahel. Meie praktika kohaselt on see 5 sekundit.<\/li>\n<li>repl-backlog-size 1024mb &amp; epl-backlog-ttl 0<br \/>\n<em>Just nii palju andmeid saame s\u00e4ilitada katkise repliika puhvrisse. Kui puhver l\u00f5ppeb, siis peab t\u00e4ielikult s\u00fcnkroonima.<\/em><br \/>\nPraktika n\u00e4itab, et parem on seada suurem v\u00e4\u00e4rtus. P\u00f5hjuseid, miks repliik v\u00f5ib maha j\u00e4\u00e4da, on k\u00fcllaga. Kui see j\u00e4\u00e4b maha, siis on t\u00f5en\u00e4oliselt teie masteril juba raskusi, ja t\u00e4iendav s\u00fcnkroonimine on viimane tilk.<\/li>\n<li>maxclients 10000<br \/>\n<em>Maksimaalne samaaegsete klientide arv.<\/em><br \/>\nMeie kogemuse p\u00f5hjal on parem seada v\u00e4\u00e4rtus suuremaks. Redis suudab suurep\u00e4raselt hakkama saada 10 000 \u00fchendusega. Lihtsalt veenduge, et s\u00fcsteemis on piisavalt sokette. <\/li>\n<li>maxmemory-policy volatile-ttl<br \/>\n<em>Reegel, mille kohaselt kustutatakse v\u00f5tmed, kui saadaval oleva m\u00e4lu piirm\u00e4\u00e4r on t\u00e4idetud.<\/em><br \/>\nSiin on oluline mitte ainult reegel, vaid ka arusaam, kuidas see toimub. Redisit v\u00f5ib kiita selle eest, et see suudab piiratud m\u00e4lu ulatuses t\u00f5husalt t\u00f6\u00f6tada. <\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"problemy-rdb-i-aof\">RDB ja AOF probleemid<\/h1>\n<p><\/p>\n<p>Kuigi Redis hoiab kogu teabe m\u00e4lus, on olemas ka andmete salvestamise mehhanism. T\u00e4psemalt: kolm mehhanismi:<\/p>\n<p><\/p>\n<ul>\n<li>RDB-snapshots \u2014 t\u00e4ielik koopia k\u00f5igist andmetest. Seatakse konfigureerimisega SAVE X Y ja seda loetakse kui \"Salvesta k\u00f5igi andmete t\u00e4iskope igal X sekundil, kui v\u00e4hemalt Y v\u00f5tme on muudetud\".<\/li>\n<li>Append-only fail \u2014 tehingute loend nende t\u00e4itmise j\u00e4rjekorras. Lisab uusi saabunud tehinguid faili iga X sekundi v\u00f5i iga Y tehingu j\u00e4rel.<\/li>\n<li>RDB ja AOF \u2014 kahe eelmise kombinatsioon.<\/li>\n<\/ul>\n<p><\/p>\n<p>K\u00f5igil meetoditel on oma eelised ja puudused, ma ei hakka neid k\u00f5iki loetlema, vaid juhin t\u00e4helepanu ainult mulle tunduvatele v\u00e4hem ilmsetele hetkedele.<\/p>\n<p><\/p>\n<p>Esiteks, RDB-snapshoti s\u00e4ilitamiseks on vajalik kutsuda FORK v\u00e4lja. Kui andmeid on palju, v\u00f5ib see kogu Redis'e m\u00f5ne millisekundi kuni \u00fche sekundi jooksul riputada. Lisaks vajab s\u00fcsteem sellise snapshoti jaoks m\u00e4lu eraldamist, mis toob endaga kaasa vajaduse hoida loogilisel masinal kahekordne m\u00e4lureserv: kui Redis'ele on eraldatud 8 GB, siis peaks virtuaalmasinal olema saadaval 16 GB.<\/p>\n<p><\/p>\n<p>Teiseks, osalise s\u00fcnkroniseerimisega on probleeme. AOF-re\u017eiimis, kui slave'i uuesti \u00fchendatakse, v\u00f5ib osalise s\u00fcnkroniseerimise asemel toimuda t\u00e4ielik. Miks see nii juhtub, ei suutnud ma aru saada. Kuid sellest tasub siiski meeles pidada.<\/p>\n<p><\/p>\n<p>Need to consider whether we really need this data on disk, especially since it is already duplicated by the slaves. Data can only be lost if all slaves fail, which is a problem of 'fire in the data center' level. As a compromise, we could suggest saving data only on the slaves, but in this case, we need to ensure that these slaves never become masters during a disaster recovery (there's a priority setting for slaves in their configuration). We evaluate the necessity of saving data on disk on a case-by-case basis, and most often conclude 'no.'<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Kokkuv\u00f5te<\/h1>\n<p><\/p>\n<p>In conclusion, I hope I was able to provide a general understanding of how redis-cluster works for those who have never heard of it, and also pointed out some less obvious aspects for those who have been using it for a while.<br \/>\nThank you for your time, and as usual, comments on the topic are welcome.<\/p>\n<p>Allikas: <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 4.9.10 - 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 \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\" \/>\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\/et\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/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\udd47 Rediselt Redis-klastrisse kolimine | ProHoster","description":"Toode, mis on arenenud \u00fcle k\u00fcmne aasta, ei \u00fcllata kindlasti vananenud tehnoloogiate kohalolekuga. Aga mis juhtub siis, kui kuue kuu p\u00e4rast peate taluma koormust 10 korda suurem ja katkestuste hind t\u00f5useb sajad kordsed? Sel juhul on teil vaja \u00e4gedat Highload inseneri. Kuid kuna sellist pole, usaldati probleem lahendamiseks mulle. Esimene","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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 \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","og:url":"https:\/\/prohoster.info\/et\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=91846"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91846\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/91847"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=91846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=91846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=91846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}