{"id":82113,"date":"2020-05-19T13:42:51","date_gmt":"2020-05-19T11:42:51","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql"},"modified":"2020-05-19T13:42:51","modified_gmt":"2020-05-19T11:42:51","slug":"orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","title":{"rendered":"Orchestrator a VIP ako HA rie\u0161enie pre klaster MySQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V Siti Mobil pou\u017e\u00edvame datab\u00e1zu MySQL ako hlavn\u00fd ukladac\u00ed priestor pre trval\u00e9 d\u00e1ta. M\u00e1me nieko\u013eko datab\u00e1zov\u00fdch klastrov pre r\u00f4zne slu\u017eby a \u00fa\u010dely.<\/p>\n<p>Trval\u00e1 dostupnos\u0165 majstra je kritick\u00fdm ukazovate\u013eom funk\u010dnosti cel\u00e9ho syst\u00e9mu a jeho jednotliv\u00fdch \u010dast\u00ed. Automatick\u00e9 obnovenie klastru v pr\u00edpade zlyhania majstra zna\u010dne zni\u017euje \u010das reakcie na incident a prestoj syst\u00e9mu. V tomto \u010dl\u00e1nku presk\u00famam sch\u00e9mu zabezpe\u010denia vysokej dostupnosti (HA) klastru MySQL na z\u00e1klade <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\">MySQL Orchestrator<\/a><\/noindex> a virtu\u00e1lnych IP adries (VIP).<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator a VIP ako HA rie\u0161enie pre klaster MySQL\" src=\"\/wp-content\/uploads\/2020\/05\/a76ef93caee0fc13d2afb12c25a25531.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1>HA-rie\u0161enie na b\u00e1ze VIP<\/h1>\n<p>\nNajprv sa stru\u010dne zmienim o tom, \u010do predstavuje n\u00e1\u0161 syst\u00e9m ukladania d\u00e1t.<\/p>\n<p>Pou\u017e\u00edvame klasick\u00fa sch\u00e9mu replik\u00e1cie s jedn\u00fdm majstrom, ktor\u00fd je pr\u00edstupn\u00fd na z\u00e1pis, a mno\u017estvom replik, ktor\u00e9 sa pou\u017e\u00edvaj\u00fa iba na \u010d\u00edtanie. Klaster m\u00f4\u017ee obsahova\u0165 medzi\u010dl\u00e1nkov\u00e9ho majstra \u2014 uzol, ktor\u00fd je s\u00fa\u010dasne replikou aj majstrom pre in\u00e9. Klienti sa obracaj\u00fa na repliky cez HAProxy, \u010do umo\u017e\u0148uje rovnomern\u00e9 rozlo\u017eenie z\u00e1\u0165a\u017ee a \u013eahk\u00e9 \u0161k\u00e1lovanie. Pou\u017eitie HAProxy je sp\u00f4soben\u00e9 historick\u00fdmi d\u00f4vodmi, a teraz sme v procese migr\u00e1cie na ProxySQL.<\/p>\n<p>Replik\u00e1cia prebieha v polusynchronnom re\u017eime na z\u00e1klade <code>GTID<\/code>. To znamen\u00e1, \u017ee aspo\u0148 jedna replik\u00e1cia mus\u00ed zap\u00edsa\u0165 transakciu do protokolu, sk\u00f4r ako bude pova\u017eovan\u00e1 za \u00faspe\u0161n\u00fa. Tak\u00fdto re\u017eim replik\u00e1cie zabezpe\u010duje optim\u00e1lny balanc medzi v\u00fdkonom a integritou \u00fadajov v pr\u00edpade zlyhania hlavn\u00e9ho uzla. V podstate sa v\u0161etky zmeny pren\u00e1\u0161aj\u00fa od majstra k replik\u00e1m pomocou <code>Row Based Replication (RBR)<\/code>, no niektor\u00e9 uzly m\u00f4\u017eu ma\u0165 <code>mixed binlog format<\/code>.<\/p>\n<p>Orkestr\u00e1tor periodicky aktualizuje stav topol\u00f3gie klastru, analyzuje prijat\u00e9 inform\u00e1cie a v pr\u00edpade probl\u00e9mov m\u00f4\u017ee spusti\u0165 proced\u00faru automatick\u00e9ho obnovenia. Za samotn\u00fa proced\u00faru zodpoved\u00e1 v\u00fdvoj\u00e1r, preto\u017ee ju je mo\u017en\u00e9 implementova\u0165 r\u00f4znymi sp\u00f4sobmi: na b\u00e1ze VIP, DNS, s pou\u017eit\u00edm slu\u017eieb objavovania slu\u017eieb (service discovery) alebo vlastn\u00fdmi mechanizmami. <\/p>\n<p>Jedn\u00fdm z jednoduch\u00fdch sp\u00f4sobov, ako obnovi\u0165 majstra v pr\u00edpade jeho zlyhania, je pou\u017eitie pl\u00e1vaj\u00facich VIP adries.<\/p>\n<p>\u010co potrebujete vedie\u0165 o tomto rie\u0161en\u00ed, predt\u00fdm ako budeme pokra\u010dova\u0165:<\/p>\n<ul>\n<li>VIP je IP adresa, ktor\u00e1 nie je viazan\u00e1 na konkr\u00e9tne fyzick\u00e9 sie\u0165ov\u00e9 rozhranie. Pri poruche uzla alebo po\u010das pl\u00e1novan\u00fdch pr\u00e1c m\u00f4\u017eeme prepn\u00fa\u0165 VIP na in\u00fd zdroj s minim\u00e1lnym \u010dasom v\u00fdpadku.\n<\/li>\n<li>Osvojenie a vydanie virtu\u00e1lnej IP adresy s\u00fa lacn\u00e9 a r\u00fdchle oper\u00e1cie.\n<\/li>\n<li>Na pr\u00e1cu s VIP je potrebn\u00fd pr\u00edstup na server cez SSH, alebo pou\u017eitie \u0161peci\u00e1lnych util\u00edt, ako napr\u00edklad <code>keepalived<\/code>.\n<\/li>\n<\/ul>\n<p>\nPozrime sa na mo\u017en\u00e9 probl\u00e9my s na\u0161\u00edm majstrom a predstavme si, ako by mal fungova\u0165 mechanizmus automatickej obnovy.<\/p>\n<h4>Stratila sa sie\u0165ov\u00e1 konektivita k majstrovi, alebo vznikol probl\u00e9m na \u00farovni hardv\u00e9ru a server nie je dostupn\u00fd.<\/h4>\n<p><\/p>\n<ol>\n<li>Orkestr\u00e1tor aktualizuje topol\u00f3giu klastru, ka\u017ed\u00fd replik\u00e1t hl\u00e1si nedostupnos\u0165 majstra. Orkestr\u00e1tor sp\u00fa\u0161\u0165a proces vo\u013eby replik\u00e1tu, ktor\u00fd sa stane nov\u00fdm majstrom, a za\u010d\u00edna obnovu.\n<\/li>\n<li>Sna\u017e\u00edme sa uvo\u013eni\u0165 VIP zo star\u00e9ho majstra \u2014 ne\u00faspe\u0161ne.\n<\/li>\n<li>Replik\u00e1t prech\u00e1dza na rolu majstra. Topol\u00f3gia sa prekon\u0161truuje.\n<\/li>\n<li>Prid\u00e1vame nov\u00e9 sie\u0165ov\u00e9 rozhranie s VIP. Ke\u010f\u017ee uvo\u013enenie VIP sa nepodarilo, v pozad\u00ed sp\u00fa\u0161\u0165ame periodick\u00e9 odosielanie po\u017eiadaviek <b>gratuitous ARP<\/b>. Tento typ po\u017eiadavky\/odpovede umo\u017e\u0148uje aktualizova\u0165 na pripojen\u00fdch prep\u00edna\u010doch tabu\u013eku zodpovednosti medzi IP a MAC adresami, a t\u00fdm upozor\u0148uje na presun n\u00e1\u0161ho VIP. T\u00fdm sa minimalizuje pravdepodobnos\u0165 <code>split brain<\/code> pri n\u00e1vrate star\u00e9ho majstra. \n<\/li>\n<li>V\u0161etky nov\u00e9 pripojenia s\u00fa okam\u017eite presmerovan\u00e9 na nov\u00e9ho majstra. Star\u00e9 pripojenia zlyh\u00e1vaj\u00fa, vykon\u00e1vaj\u00fa sa opakovan\u00e9 pokusy o pripojenie na \u00farovni aplik\u00e1cie k datab\u00e1ze.\n<\/li>\n<\/ol>\n<p><\/p>\n<h4>Server pracuje v norm\u00e1lnom re\u017eime, do\u0161lo k zlyhaniu na \u00farovni DBMS.<\/h4>\n<p>\nAlgoritmus je rovnak\u00fd ako v predch\u00e1dzaj\u00facom pr\u00edpade: aktualiz\u00e1cia topol\u00f3gie a spustenie procesu obnovy. Ke\u010f\u017ee je server dostupn\u00fd, \u00faspe\u0161ne uvo\u013e\u0148ujeme VIP na starom majstrovi, pren\u00e1\u0161ame ho na nov\u00fd a odosielame nieko\u013eko ARP po\u017eiadaviek. Mo\u017en\u00fd n\u00e1vrat star\u00e9ho majstra by nemal ovplyvni\u0165 prekon\u0161truovan\u00fd klaster a pr\u00e1cu aplik\u00e1cie.<\/p>\n<h4>In\u00e9 probl\u00e9my<\/h4>\n<p>\nZlyhanie replik\u00e1tov alebo medzi-mastrov <em>nevedie<\/em> k automatick\u00fdm akci\u00e1m a vy\u017eaduje ru\u010dn\u00fd z\u00e1sah.<\/p>\n<p>Virtu\u00e1lny sie\u0165ov\u00fd rozhranie sa v\u017edy prid\u00e1va do\u010dasne, to znamen\u00e1, \u017ee po re\u0161tartovan\u00ed servera VIP sa automaticky neprid\u00e1va. Ka\u017ed\u00fd in\u0161tanci d\u00e1tovej b\u00e1zy sa \u0161tandardne sp\u00fa\u0161\u0165a v re\u017eime iba na \u010d\u00edtanie, orchestr\u00e1tor automaticky prepne nov\u00e9ho majstra na z\u00e1pis a pok\u00fa\u0161a sa nastavi\u0165 <code>iba na \u010d\u00edtanie<\/code> na starom majstrovi. Tieto akcie s\u00fa zameran\u00e9 na zn\u00ed\u017eenie pravdepodobnosti <code>split brain<\/code>.<\/p>\n<p>Po\u010das obnovy m\u00f4\u017eu nasta\u0165 probl\u00e9my, o ktor\u00fdch by sa tie\u017e malo informova\u0165 prostredn\u00edctvom UI orchestr\u00e1tora okrem \u0161tandardn\u00fdch monitorovac\u00edch n\u00e1strojov. Roz\u0161\u00edrili sme REST API, prid\u00e1vaj\u00fac t\u00fato mo\u017enos\u0165 (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/pull\/1088\">PR<\/a><\/noindex> teraz je v procese posudzovania).<\/p>\n<p>Celkov\u00e1 sch\u00e9ma HA rie\u0161enia je uveden\u00e1 ni\u017e\u0161ie.<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator a VIP ako HA rie\u0161enie pre klaster MySQL\" src=\"\/wp-content\/uploads\/2020\/05\/485dbbc8f2b1a7595f5fa4f36ad92f7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h1>V\u00fdber nov\u00e9ho majstra<\/h1>\n<p>\nOrchestr\u00e1tor je dostato\u010dne inteligentn\u00fd a sna\u017e\u00ed sa vybra\u0165 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/blob\/5126b849ae4f655e1cbe0fbddfa0d7299674f712\/go\/inst\/instance_utils.go#L112\">najvhodnej\u0161iu replik\u00e1ciu<\/a><\/noindex> ako nov\u00e9ho majstra na z\u00e1klade nasleduj\u00facich krit\u00e9ri\u00ed:<\/p>\n<ul>\n<li>zme\u0161kanie repliky za majstrom;\n<\/li>\n<li>verzia MySQL majstra a repliky;\n<\/li>\n<li>typ replik\u00e1cie (RBR, SBR alebo zmie\u0161an\u00fd);\n<\/li>\n<li>umiestnenie v jednom alebo viacer\u00fdch d\u00e1tov\u00fdch centr\u00e1ch;\n<\/li>\n<li>existenci <code>errant GTID<\/code> \u2014 transakcie, ktor\u00e9 boli vykonan\u00e9 na replik\u00e1cii a ch\u00fdbaj\u00fa na majstrovi;\n<\/li>\n<li>tie\u017e sa zoh\u013ead\u0148uj\u00fa pou\u017e\u00edvate\u013esk\u00e9 pravidl\u00e1 v\u00fdberu.\n<\/li>\n<\/ul>\n<p>\nNie ka\u017ed\u00e1 replik\u00e1cia je ide\u00e1lnym kandid\u00e1tom na \u00falohu majstra. Napr\u00edklad, replik\u00e1cia m\u00f4\u017ee by\u0165 pou\u017eit\u00e1 na z\u00e1lohovanie \u00fadajov, alebo server m\u00e1 slab\u0161iu konfigur\u00e1ciu \u201ehardv\u00e9ru\u201c. Orchestr\u00e1tor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/blob\/master\/docs\/topology-recovery.md#adding-promotion-rules\">podporuje<\/a><\/noindex> ru\u010dn\u00e9 pravidl\u00e1, pomocou ktor\u00fdch si m\u00f4\u017eete nastavi\u0165 svoje preferencie v\u00fdberu kandid\u00e1tov od najpreferovanej\u0161\u00edch po ignorovan\u00e9.<\/p>\n<h1>\u010cas reakcie a obnovenia<\/h1>\n<p>\nV pr\u00edpade incidentu je d\u00f4le\u017eit\u00e9 minimalizova\u0165 dobu ne\u010dinnosti syst\u00e9mu, preto zva\u017eujeme parametre MySQL, ktor\u00e9 ovplyv\u0148uj\u00fa v\u00fdstavbu a aktualiz\u00e1ciu topol\u00f3gie clustra orchestr\u00e1torom:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/replication-options-slave.html#sysvar_slave_net_timeout\"><code>slave_net_timeout<\/code><\/a><\/noindex> \u2014 po\u010det sek\u00fand, po\u010das ktor\u00fdch replik\u00e1cia \u010dak\u00e1 na prijatie nov\u00fdch \u00fadajov alebo heartbeat-sign\u00e1lu od majstra, sk\u00f4r ne\u017e sa spojenie uzn\u00e1 za straten\u00e9 a vykon\u00e1 prepojenie. \u010c\u00edm men\u0161ia hodnota, t\u00fdm r\u00fdchlej\u0161ie replik\u00e1cia dok\u00e1\u017ee ur\u010di\u0165, \u017ee spojenie s majstrom je naru\u0161en\u00e9. Nastavujeme t\u00fato hodnotu na 5 sek\u00fand.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/5.7\/en\/change-master-to.html\"><code>MASTER_CONNECT_RETRY<\/code><\/a><\/noindex> \u2014 po\u010det sek\u00fand medzi pokusmi o op\u00e4tovn\u00e9 pripojenie. Pri sie\u0165ov\u00fdch probl\u00e9moch n\u00edzka hodnota tohto parametra umo\u017en\u00ed r\u00fdchlo sa pripoji\u0165 a zabr\u00e1ni\u0165 spusteniu procesu obnovy klastru. Odpor\u00fa\u010dan\u00e1 hodnota je 1 sekunda.\n<\/li>\n<li><code>MASTER_RETRY_COUNT<\/code> \u2014 maxim\u00e1lny po\u010det pokusov o op\u00e4tovn\u00e9 pripojenie. \n<\/li>\n<li><code>MASTER_HEARTBEAT_PERIOD<\/code> \u2014 interval v sekund\u00e1ch, po ktorom master odosiela heartbeat sign\u00e1l. Predvolene sa rovn\u00e1 polovici hodnoty <code>slave_net_timeout<\/code>.\n<\/li>\n<\/ul>\n<p>\nParametre orchestr\u00e1tora:<\/p>\n<ul>\n<li><code>DelayMasterPromotionIfSQLThreadNotUpToDate<\/code> \u2014 ak je rovn\u00fd <code>true<\/code>, tak sa rola majstra neaplikuje na replik\u00e1ciu kandid\u00e1t, k\u00fdm SQL vl\u00e1kno repliky nevykon\u00e1 v\u0161etky neaplikovan\u00e9 transakcie z Relay Log. T\u00fato mo\u017enos\u0165 pou\u017e\u00edvame, aby sme nestratili transakcie v podmienkach oneskorenia v\u0161etk\u00fdch replikov\u00fdch kandid\u00e1tov.\n<\/li>\n<li><code>InstancePollSeconds<\/code> \u2014 frekvencia budovania a aktualiz\u00e1cie topol\u00f3gie.\n<\/li>\n<li><code>RecoveryPollSeconds<\/code> \u2014 frekvencia anal\u00fdzy topol\u00f3gie. V pr\u00edpade zistenia probl\u00e9mu sa sp\u00fa\u0161\u0165a obnova topol\u00f3gie. To je<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\/blob\/548265494b3107ca2581d6ccee059e062a759b77\/go\/config\/config.go#L45\"> kon\u0161tanta<\/a><\/noindex>, rovn\u00e1 1 sekunde.\n<\/li>\n<\/ul>\n<p>\nKa\u017ed\u00fd uzol klastru sa orchestr\u00e1torom opytuje raz za <code>InstancePollSeconds<\/code> sek\u00fand. Pri zisten\u00ed probl\u00e9mu sa stav klastru n\u00fatene<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\/blob\/548265494b3107ca2581d6ccee059e062a759b77\/go\/logic\/topology_recovery.go#L1409\"> aktualizuje<\/a><\/noindex>, a potom sa prij\u00edma kone\u010dn\u00e9 rozhodnutie o vykonan\u00ed obnovy. Experimentovan\u00edm s r\u00f4znymi parametrami DB a orchestr\u00e1tora sa n\u00e1m podarilo zn\u00ed\u017ei\u0165 dobu reakcie a obnovy na 30 sek\u00fand.<\/p>\n<h1>Testovac\u00ed st\u00e1nok<\/h1>\n<p>\nTestovanie HA sch\u00e9my sme za\u010dali s v\u00fdvojom miestneho <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ParshinPavel\/mysql-ha-sandbox\">testovacieho prostredia<\/a><\/noindex> a n\u00e1sledn\u00fdm zaveden\u00edm do testovacieho a produk\u010dn\u00e9ho prostredia. M\u00edstne prostredie je plne automatizovan\u00e9 na z\u00e1klade Dockeru a umo\u017e\u0148uje experimentova\u0165 s konfigur\u00e1ciou orchestr\u00e1tora a siete, \u0161k\u00e1lova\u0165 klaster od 2-3 serverov po nieko\u013eko desiatok a vykon\u00e1va\u0165 cvi\u010denia v bezpe\u010dnom prostred\u00ed. <\/p>\n<p>Po\u010das cvi\u010den\u00ed si vyber\u00e1me jednu z met\u00f3d emul\u00e1cie probl\u00e9mu: okam\u017eite odstrel\u00edme majstra pomocou <code>kill -9<\/code>, jemne ukon\u010d\u00edme proces a zastav\u00edme server (<code>docker-compose stop<\/code>), simulujeme probl\u00e9my so sie\u0165ou pomocou <code>iptables -j REJECT<\/code> alebo <code>iptables -j DROP.<\/code>O\u010dak\u00e1vame tak\u00e9to v\u00fdsledky:<\/p>\n<ul>\n<li>orchestr\u00e1tor zist\u00ed probl\u00e9my s majstrom a aktualizuje topol\u00f3giu nie viac ako za 10 sek\u00fand;\n<\/li>\n<li>automaticky sa spust\u00ed proced\u00fara obnovy: zmen\u00ed sa sie\u0165ov\u00e1 konfigur\u00e1cia, rola majstra prejde na repliku, topol\u00f3gia sa prestav\u00ed;\n<\/li>\n<li>Nov\u00fd master sa stane dostupn\u00fdm pre z\u00e1pis, \u017eiv\u00e9 repliky nebud\u00fa po\u010das prebudovania straten\u00e9;\n<\/li>\n<li>\u00dadaje za\u010dn\u00fa by\u0165 zapisovan\u00e9 do nov\u00e9ho mastera a replikovan\u00e9;\n<\/li>\n<li>Celkov\u00fd \u010das na obnovenie bude maxim\u00e1lne 30 sek\u00fand.\n<\/li>\n<\/ul>\n<p>\nAko viete, syst\u00e9m sa m\u00f4\u017ee v testovacom a produk\u010dnom prostred\u00ed spr\u00e1va\u0165 odli\u0161ne kv\u00f4li odli\u0161nej konfigur\u00e1cii hardv\u00e9ru a siete, rozdielom v syntetickej a re\u00e1lnej z\u00e1\u0165a\u017ei at\u010f. Preto pravidelne vykon\u00e1vame cvi\u010denia v re\u00e1lnych podmienkach, aby sme skontrolovali, ako sa syst\u00e9m spr\u00e1va pri strate sie\u0165ovej konektivity alebo degrad\u00e1cii jeho jednotliv\u00fdch \u010dast\u00ed. V bud\u00facnosti chceme vybudova\u0165 \u00faplne identick\u00fa infra\u0161trukt\u00faru pre obe prostredia a automatizova\u0165 jej testovanie.<\/p>\n<h1>Zhrnutie<\/h1>\n<p>\nFunk\u010dnos\u0165 hlavn\u00e9ho uzla syst\u00e9mu ukladania \u00fadajov je jednou z hlavn\u00fdch \u00faloh t\u00edmu SRE a \u00fadr\u017eby. Zavedenie orchestr\u00e1tora a HA rie\u0161enia na b\u00e1ze VIP umo\u017enilo dosiahnu\u0165 nasleduj\u00face v\u00fdsledky:<\/p>\n<ul>\n<li>spo\u013eahliv\u00e9 zis\u0165ovanie probl\u00e9mov s topol\u00f3giou klastrov DB;\n<\/li>\n<li>automatick\u00e9 a r\u00fdchle reagovanie na incidenty s\u00favisiace s masterom, \u010do zni\u017euje prestoje syst\u00e9mu.\n<\/li>\n<\/ul>\n<p>\nRie\u0161enie m\u00e1 v\u0161ak svoje obmedzenia a nedostatky:<\/p>\n<ul>\n<li>\u0161k\u00e1lovanie HA sch\u00e9my na nieko\u013eko DC vy\u017eaduje existenciu jednotnej L2 siete medzi nimi;\n<\/li>\n<li>pred priraden\u00edm VIP k nov\u00e9mu masteru mus\u00edme uvo\u013eni\u0165 na starom. Proces je sekven\u010dn\u00fd, \u010do predl\u017euje \u010das na obnovu;\n<\/li>\n<li>uvo\u013enenie VIP vy\u017eaduje SSH pr\u00edstup k serveru, alebo in\u00fd sp\u00f4sob volania vzdialen\u00fdch proced\u00far. Ke\u010f\u017ee server alebo DB \u010del\u00ed probl\u00e9mom, ktor\u00e9 spustili proces obnovy, nem\u00f4\u017eeme si by\u0165 ist\u00ed, \u017ee uvo\u013enenie VIP sa vydar\u00ed. To m\u00f4\u017ee vies\u0165 k vzniku dvoch serverov s rovnakou virtu\u00e1lnou IP adresou a k probl\u00e9mu. <code>split brain<\/code>.\n<\/li>\n<\/ul>\n<p>\nAby sme predi\u0161li <code>split brain<\/code>, m\u00f4\u017eeme pou\u017ei\u0165 met\u00f3du <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/STONITH\">STONITH<\/a><\/noindex> (\u201eVystre\u013ete druh\u00fd uzol do hlavy\u201c), ktor\u00e1 \u00faplne izoluje alebo odpoj\u00ed probl\u00e9mov\u00fd uzol. Existuj\u00fa aj in\u00e9 sp\u00f4soby realiz\u00e1cie vysokej dostupnosti klastrov: kombin\u00e1cia VIP a DNS, zis\u0165ovanie slu\u017eieb a proxy slu\u017eby, synchronn\u00e1 replik\u00e1cia a in\u00e9 met\u00f3dy, ktor\u00e9 maj\u00fa svoje nedostatky a v\u00fdhody.<\/p>\n<p>Hovoril som o na\u0161om pr\u00edstupe k vytv\u00e1raniu vysoko dostupn\u00e9ho MySQL clustera. Je jednoduch\u00fd na realiz\u00e1ciu a zabezpe\u010duje prijate\u013en\u00fa \u00farove\u0148 spo\u013eahlivosti v s\u00fa\u010dasn\u00fdch podmienkach. S rastom celej syst\u00e9movej infra\u0161trukt\u00fary sa tento pr\u00edstup ur\u010dite vyvinie.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/491044\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0421\u0438\u0442\u0438\u043c\u043e\u0431\u0438\u043b \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 MySQL \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u0423 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0434 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 \u0446\u0435\u043b\u0438. \u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0435\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439. \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043e\u0442\u043a\u0430\u0437\u0430 \u043c\u0430\u0441\u0442\u0435\u0440\u0430 \u0441\u0438\u043b\u044c\u043d\u043e \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0432\u0440\u0435\u043c\u044f \u0440\u0435\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442 \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":82114,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-82113","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=\"\u0412 \u0421\u0438\u0442\u0438\u043c\u043e\u0431\u0438\u043b \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 MySQL \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.\" \/>\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\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql\" \/>\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\udd47Orchestrator \u0438 VIP \u043a\u0430\u043a HA-\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 MySQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0421\u0438\u0442\u0438\u043c\u043e\u0431\u0438\u043b \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 MySQL \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql\" \/>\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-05-19T11:42:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-19T11:42:51+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\udd47Orchestr\u00e1tor a VIP ako HA rie\u0161enie pre MySQL cluster | ProHoster","description":"V Sitimobile pou\u017e\u00edvame datab\u00e1zu MySQL ako hlavn\u00e9 \u00falo\u017eisko trval\u00fdch d\u00e1t.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","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\udd47Orchestrator \u0438 VIP \u043a\u0430\u043a HA-\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 MySQL | ProHoster","og:description":"\u0412 \u0421\u0438\u0442\u0438\u043c\u043e\u0431\u0438\u043b \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 MySQL \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445.","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","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-05-19T11:42:51+00:00","article:modified_time":"2020-05-19T11:42:51+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"82113","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 15:44:23","updated":"2022-09-28 00:08:45","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\/82113","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=82113"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/82113\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/82114"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=82113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=82113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=82113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}