{"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\/cs\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","title":{"rendered":"Orchestrator a VIP jako HA \u0159e\u0161en\u00ed pro cluster MySQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ve Sitimobil pou\u017e\u00edv\u00e1me datab\u00e1zi MySQL jako hlavn\u00ed \u00falo\u017ei\u0161t\u011b trval\u00fdch dat. M\u00e1me n\u011bkolik datab\u00e1zov\u00fdch cluster\u016f pro r\u016fzn\u00e9 slu\u017eby a \u00fa\u010dely.<\/p>\n<p>Trval\u00e1 dostupnost hlavn\u00edho uzlu je kritick\u00fdm ukazatelem funk\u010dnosti cel\u00e9ho syst\u00e9mu a jeho jednotliv\u00fdch \u010d\u00e1st\u00ed. Automatick\u00e9 zotaven\u00ed clusteru v p\u0159\u00edpad\u011b selh\u00e1n\u00ed hlavn\u00edho uzlu v\u00fdrazn\u011b sni\u017euje \u010das reakce na incident a prostoje syst\u00e9mu. V tomto \u010dl\u00e1nku se budu zab\u00fdvat sch\u00e9matem zaji\u0161t\u011bn\u00ed vysok\u00e9 dostupnosti (HA) clusteru MySQL na z\u00e1klad\u011b <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\">MySQL Orchestrator<\/a><\/noindex> a virtu\u00e1ln\u00edch IP adres (VIP).<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator a VIP jako HA \u0159e\u0161en\u00ed pro cluster 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 \u0159e\u0161en\u00ed na z\u00e1klad\u011b VIP<\/h1>\n<p>\nNejprve se kr\u00e1tce zm\u00edn\u00edm o tom, jak\u00fd je n\u00e1\u0161 syst\u00e9m ukl\u00e1d\u00e1n\u00ed dat.<\/p>\n<p>Pou\u017e\u00edv\u00e1me klasick\u00e9 sch\u00e9ma replikace s jedn\u00edm hlavn\u00edm uzlem, kter\u00fd je dostupn\u00fd pro z\u00e1pis, a mnoha replikami, kter\u00e9 se pou\u017e\u00edvaj\u00ed pouze pro \u010dten\u00ed. Cluster m\u016f\u017ee obsahovat mezilehl\u00fd hlavn\u00ed uzel \u2013 uzel, kter\u00fd je sou\u010dasn\u011b replika i hlavn\u00ed uzel pro jin\u00e9. Klienti se obracej\u00ed na repliky prost\u0159ednictv\u00edm HAProxy, co\u017e umo\u017e\u0148uje vyrovn\u00e1vat z\u00e1t\u011b\u017e a snadno \u0161k\u00e1lovat. Pou\u017eit\u00ed HAProxy m\u00e1 historick\u00e9 d\u016fvody a nyn\u00ed jsme v procesu migrace na ProxySQL.<\/p>\n<p>Replikace se prov\u00e1d\u00ed v polosesynchronn\u00edm re\u017eimu na z\u00e1klad\u011b <code>GTID<\/code>. To znamen\u00e1, \u017ee alespo\u0148 jedna replika mus\u00ed zapsat transakci do protokolu, ne\u017e bude uzn\u00e1na za \u00fasp\u011b\u0161nou. Tento re\u017eim replikace zaji\u0161\u0165uje optim\u00e1ln\u00ed rovnov\u00e1hu mezi v\u00fdkonem a zachov\u00e1n\u00edm dat v p\u0159\u00edpad\u011b selh\u00e1n\u00ed hlavn\u00edho uzlu. V\u0161echny zm\u011bny se obvykle p\u0159en\u00e1\u0161ej\u00ed od hlavn\u00edho uzlu k replik\u00e1m prost\u0159ednictv\u00edm <code>Row Based Replication (RBR)<\/code>, ale n\u011bkter\u00e9 uzly mohou m\u00edt <code>mixed binlog format<\/code>.<\/p>\n<p>Orkestr\u00e1tor pravideln\u011b aktualizuje stav topologie clusteru, analyzuje z\u00edskan\u00e9 informace a v p\u0159\u00edpad\u011b probl\u00e9m\u016f m\u016f\u017ee spustit proceduru automatick\u00e9ho zotaven\u00ed. O samotnou proceduru se star\u00e1 v\u00fdvoj\u00e1\u0159, nebo\u0165 ji lze implementovat r\u016fzn\u00fdmi zp\u016fsoby: na z\u00e1klad\u011b VIP, DNS, pomoc\u00ed slu\u017eeb pro objevov\u00e1n\u00ed slu\u017eeb (service discovery) nebo vlastn\u00edch mechanism\u016f. <\/p>\n<p>Jedn\u00edm z jednoduch\u00fdch zp\u016fsob\u016f, jak obnovit hlavn\u00ed uzel v p\u0159\u00edpad\u011b jeho selh\u00e1n\u00ed, je pou\u017eit\u00ed plovouc\u00edch VIP adres.<\/p>\n<p>Co je t\u0159eba v\u011bd\u011bt o tomto \u0159e\u0161en\u00ed, ne\u017e budeme pokra\u010dovat:<\/p>\n<ul>\n<li>VIP je IP adresa, kter\u00e1 nen\u00ed v\u00e1z\u00e1na na konkr\u00e9tn\u00ed fyzick\u00e9 s\u00ed\u0165ov\u00e9 rozhran\u00ed. P\u0159i selh\u00e1n\u00ed uzlu nebo pl\u00e1novan\u00fdch prac\u00edch m\u016f\u017eeme p\u0159epnout VIP na jin\u00fd zdroj s minim\u00e1ln\u00edm v\u00fdpadkem.\n<\/li>\n<li>Uvoln\u011bn\u00ed a p\u0159id\u011blen\u00ed virtu\u00e1ln\u00ed IP adresy jsou levn\u00e9 a rychl\u00e9 operace.\n<\/li>\n<li>Pro pr\u00e1ci s VIP je pot\u0159eba p\u0159\u00edstup k serveru p\u0159es SSH nebo pou\u017eit\u00ed speci\u00e1ln\u00edch utilit, nap\u0159\u00edklad, <code>keepalived<\/code>.\n<\/li>\n<\/ul>\n<p>\nZv\u00e1\u017e\u00edme mo\u017en\u00e9 probl\u00e9my s na\u0161\u00edm mistrem a p\u0159edstav\u00edme si, jak by m\u011bl fungovat mechanismus automatick\u00e9ho obnoven\u00ed.<\/p>\n<h4>Ztratila se s\u00ed\u0165ov\u00e1 konektivita k mistrovi, nebo do\u0161lo k probl\u00e9mu na \u00farovni 'hardwaru', a server nen\u00ed dostupn\u00fd.<\/h4>\n<p><\/p>\n<ol>\n<li>Orkestr\u00e1tor aktualizuje topologii clustera, ka\u017ed\u00e1 replikant hl\u00e1s\u00ed nedostupnost mistra. Orkestr\u00e1tor zahajuje proces v\u00fdb\u011bru repliky vhodn\u00e9 pro roli nov\u00e9ho mistra a za\u010d\u00edn\u00e1 obnovu.\n<\/li>\n<li>Sna\u017e\u00edme se odebrat VIP ze star\u00e9ho mistra \u2014 bez \u00fasp\u011bchu.\n<\/li>\n<li>Replika se p\u0159ep\u00edn\u00e1 na roli mistra. Topologie se p\u0159estavuje.\n<\/li>\n<li>P\u0159id\u00e1v\u00e1me nov\u00e9 s\u00ed\u0165ov\u00e9 rozhran\u00ed s VIP. Proto\u017ee se nepoda\u0159ilo odebrat VIP, na pozad\u00ed spou\u0161t\u00edme periodick\u00e9 odes\u00edl\u00e1n\u00ed po\u017eadavku <b>gratuitous ARP<\/b>. Tento typ po\u017eadavku\/odpov\u011bdi umo\u017e\u0148uje aktualizovat na p\u0159ipojen\u00fdch p\u0159ep\u00edna\u010d\u00edch tabulku shody mezi IP a MAC adresami, \u010d\u00edm\u017e informuje o p\u0159esunu na\u0161eho VIP. To minimalizuje pravd\u011bpodobnost <code>split brain<\/code> p\u0159i n\u00e1vratu star\u00e9ho mistra. \n<\/li>\n<li>V\u0161echny nov\u00e9 spojen\u00ed jsou okam\u017eit\u011b p\u0159esm\u011brov\u00e1ny na nov\u00e9ho mistra. Star\u00e9 spojen\u00ed kon\u010d\u00ed ne\u00fasp\u011b\u0161n\u011b, prob\u00edhaj\u00ed opakovan\u00e9 po\u017eadavky na DB na \u00farovni aplikace.\n<\/li>\n<\/ol>\n<p><\/p>\n<h4>Server pracuje v norm\u00e1ln\u00edm re\u017eimu, nastala porucha na \u00farovni DBMS.<\/h4>\n<p>\nAlgoritmus je podobn\u00fd p\u0159edchoz\u00edmu p\u0159\u00edpadu: aktualizace topologie a zah\u00e1jen\u00ed procesu obnovy. Proto\u017ee je server dostupn\u00fd, \u00fasp\u011b\u0161n\u011b uvol\u0148ujeme VIP na star\u00e9m mistrovi, p\u0159ev\u00e1d\u00edme ho na nov\u00fd a pos\u00edl\u00e1me n\u011bkolik ARP po\u017eadavk\u016f. Mo\u017en\u00fd n\u00e1vrat star\u00e9ho mistra by nem\u011bl ovlivnit p\u0159estav\u011bn\u00fd cluster a provoz aplikace.<\/p>\n<h4>Dal\u0161\u00ed probl\u00e9my<\/h4>\n<p>\nSelh\u00e1n\u00ed replik nebo mezi\u010dl\u00e1nkov\u00fdch mistr\u016f <em>nevede<\/em> k automatick\u00fdm akc\u00edm a vy\u017eaduje manu\u00e1ln\u00ed z\u00e1sah.<\/p>\n<p>Virtu\u00e1ln\u00ed s\u00ed\u0165ov\u00e9 rozhran\u00ed je v\u017edy p\u0159id\u00e1v\u00e1no do\u010dasn\u011b, co\u017e znamen\u00e1, \u017ee po restartu serveru VIP nen\u00ed automaticky p\u0159id\u011bleno. Ka\u017ed\u00e1 instance datab\u00e1ze je ve v\u00fdchoz\u00edm nastaven\u00ed spu\u0161t\u011bna v re\u017eimu pouze pro \u010dten\u00ed, orchestr\u00e1tor automaticky p\u0159ep\u00edn\u00e1 nov\u00e9ho mastera na z\u00e1pis a pokou\u0161\u00ed se nastavit <code>pouze pro \u010dten\u00ed<\/code> na star\u00e9m masteru. Tyto akce jsou zam\u011b\u0159eny na sn\u00ed\u017een\u00ed pravd\u011bpodobnosti <code>split brain<\/code>.<\/p>\n<p>B\u011bhem obnovy mohou nastat probl\u00e9my, o kter\u00fdch je tak\u00e9 dobr\u00e9 informovat prost\u0159ednictv\u00edm u\u017eivatelsk\u00e9ho rozhran\u00ed orchestr\u00e1toru vedle standardn\u00edch monitorovac\u00edch n\u00e1stroj\u016f. Roz\u0161\u00ed\u0159ili jsme REST API o tuto mo\u017enost (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/pull\/1088\">PR<\/a><\/noindex> nyn\u00ed je v posuzov\u00e1n\u00ed).<\/p>\n<p>Celkov\u00e1 sch\u00e9ma HA \u0159e\u0161en\u00ed je uvedena n\u00ed\u017ee.<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator a VIP jako HA \u0159e\u0161en\u00ed pro cluster MySQL\" src=\"\/wp-content\/uploads\/2020\/05\/485dbbc8f2b1a7595f5fa4f36ad92f7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h1>V\u00fdb\u011br nov\u00e9ho mastera<\/h1>\n<p>\nOrchestr\u00e1tor je dost inteligentn\u00ed a sna\u017e\u00ed se vybrat <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/blob\/5126b849ae4f655e1cbe0fbddfa0d7299674f712\/go\/inst\/instance_utils.go#L112\">nejvhodn\u011bj\u0161\u00ed replikaci<\/a><\/noindex> jako nov\u00fd master podle n\u00e1sleduj\u00edc\u00edch krit\u00e9ri\u00ed:<\/p>\n<ul>\n<li>zpo\u017ed\u011bn\u00ed repliky za masterem;\n<\/li>\n<li>verze MySQL mastera a repliky;\n<\/li>\n<li>typ replikace (RBR, SBR nebo sm\u00ed\u0161en\u00fd);\n<\/li>\n<li>um\u00edst\u011bn\u00ed v jednom nebo r\u016fzn\u00fdch datov\u00fdch centrech;\n<\/li>\n<li>p\u0159\u00edtomnost <code>chyb\u011bj\u00edc\u00ed GTID<\/code> \u2014 transakce, kter\u00e9 byly provedeny na replikaci a na masteru chyb\u00ed;\n<\/li>\n<li>tak\u00e9 se zohled\u0148uj\u00ed u\u017eivatelsk\u00e9 pravidla v\u00fdb\u011bru.\n<\/li>\n<\/ul>\n<p>\nNe ka\u017ed\u00e1 replikace je ide\u00e1ln\u00edm kandid\u00e1tem na roli mastera. Nap\u0159\u00edklad replikace m\u016f\u017ee b\u00fdt pou\u017e\u00edv\u00e1na pro z\u00e1lohov\u00e1n\u00ed dat, nebo server m\u00e1 slab\u0161\u00ed konfiguraci 'hardwaru'. Orchestr\u00e1tor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/blob\/master\/docs\/topology-recovery.md#adding-promotion-rules\">srcset<\/a><\/noindex> ru\u010dn\u00ed pravidla, pomoc\u00ed nich\u017e m\u016f\u017eete nastavit sv\u00e9 preference pro v\u00fdb\u011br kandid\u00e1ta od nejv\u00edce preferovan\u00fdch po ignorovan\u00e9.<\/p>\n<h1>Doba reakce a obnoven\u00ed<\/h1>\n<p>\nV p\u0159\u00edpad\u011b incidentu je d\u016fle\u017eit\u00e9 minimalizovat dobu v\u00fdpadku syst\u00e9mu, proto zva\u017ete parametry MySQL, kter\u00e9 ovliv\u0148uj\u00ed budov\u00e1n\u00ed a aktualizaci topologie clusteru orchestr\u00e1torem:<\/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 sekund, po kter\u00e9 replikace \u010dek\u00e1 na p\u0159\u00edjem nov\u00fdch dat nebo heartbeat sign\u00e1lu od mastera, ne\u017e je spojen\u00ed pova\u017eov\u00e1no za ztracen\u00e9 a prob\u011bhne op\u011btovn\u00e9 p\u0159ipojen\u00ed. \u010c\u00edm men\u0161\u00ed je hodnota, t\u00edm rychleji replikace zjist\u00ed, \u017ee spojen\u00ed s masterem bylo p\u0159eru\u0161eno. Nastavujeme tuto hodnotu na 5 sekund.\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 sekund mezi pokusy o obnoven\u00ed p\u0159ipojen\u00ed. V p\u0159\u00edpad\u011b s\u00ed\u0165ov\u00fdch probl\u00e9m\u016f n\u00edzk\u00e1 hodnota tohoto parametru umo\u017en\u00ed rychl\u00e9 p\u0159ipojen\u00ed a zabr\u00e1n\u00ed spu\u0161t\u011bn\u00ed procesu obnovy klastru. Doporu\u010den\u00e1 hodnota je 1 sekunda.\n<\/li>\n<li><code>MASTER_RETRY_COUNT<\/code> \u2014 maxim\u00e1ln\u00ed po\u010det pokus\u016f o obnoven\u00ed p\u0159ipojen\u00ed. \n<\/li>\n<li><code>MASTER_HEARTBEAT_PERIOD<\/code> \u2014 interval v sekund\u00e1ch, po kter\u00e9m master pos\u00edl\u00e1 heartbeat sign\u00e1l. V\u00fdchoz\u00ed hodnota je polovina hodnoty <code>slave_net_timeout<\/code>.\n<\/li>\n<\/ul>\n<p>\nParametry orchestr\u00e1toru:<\/p>\n<ul>\n<li><code>DelayMasterPromotionIfSQLThreadNotUpToDate<\/code> \u2014 pokud je roven <code>true<\/code>, role master nebude aplikov\u00e1na na kandid\u00e1tn\u00ed repliku, dokud SQL vl\u00e1kno repliky neprovedlo v\u0161echny neaplikovan\u00e9 transakce z Relay Log. Tuto mo\u017enost pou\u017e\u00edv\u00e1me, abychom neztratili transakce v podm\u00ednk\u00e1ch zpo\u017ed\u011bn\u00ed v\u0161ech kandid\u00e1tsk\u00fdch replik.\n<\/li>\n<li><code>InstancePollSeconds<\/code> \u2014 frekvence vytv\u00e1\u0159en\u00ed a aktualizace topologie.\n<\/li>\n<li><code>RecoveryPollSeconds<\/code> \u2014 frekvence anal\u00fdzy topologie. P\u0159i zji\u0161t\u011bn\u00ed probl\u00e9mu se spust\u00ed obnova topologie. To je<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\/blob\/548265494b3107ca2581d6ccee059e062a759b77\/go\/config\/config.go#L45\"> konstanta<\/a><\/noindex>, rovna 1 sekund\u011b.\n<\/li>\n<\/ul>\n<p>\nKa\u017ed\u00fd uzel klastru je orchestr\u00e1torem dotazov\u00e1n jednou za <code>InstancePollSeconds<\/code> sekund. P\u0159i zji\u0161t\u011bn\u00ed probl\u00e9mu se stav klastru vynut\u00ed<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\/blob\/548265494b3107ca2581d6ccee059e062a759b77\/go\/logic\/topology_recovery.go#L1409\"> aktualizovat<\/a><\/noindex>, a pot\u00e9 se p\u0159ijme kone\u010dn\u00e9 rozhodnut\u00ed o proveden\u00ed obnovy. Experimentov\u00e1n\u00edm s r\u016fzn\u00fdmi parametry DB a orchestr\u00e1toru se n\u00e1m poda\u0159ilo sn\u00ed\u017eit dobu reakce a obnovy na 30 sekund.<\/p>\n<h1>Testovac\u00ed stanice<\/h1>\n<p>\nTestov\u00e1n\u00ed HA sch\u00e9matu jsme za\u010dali vytvo\u0159en\u00edm m\u00edstn\u00edho <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ParshinPavel\/mysql-ha-sandbox\">testovac\u00edho stendu<\/a><\/noindex> a jeho n\u00e1sledn\u00fdm nasazen\u00edm do testovac\u00edho a v\u00fdrobn\u00edho prost\u0159ed\u00ed. M\u00edstn\u00ed stend je pln\u011b automatizov\u00e1n na z\u00e1klad\u011b Dockeru a umo\u017e\u0148uje experimentovat s konfigurac\u00ed orchestr\u00e1toru a s\u00edt\u011b, \u0161k\u00e1lovat klastr od 2-3 server\u016f na n\u011bkolik des\u00edtek a prov\u00e1d\u011bt cvi\u010den\u00ed v bezpe\u010dn\u00e9m prost\u0159ed\u00ed. <\/p>\n<p>B\u011bhem cvi\u010den\u00ed si vyb\u00edr\u00e1me jednu z metod simulace probl\u00e9mu: okam\u017eit\u011b zastavit master pomoc\u00ed <code>kill -9<\/code>, jemn\u011b ukon\u010dit proces a zastavit server (<code>docker-compose stop<\/code>), simulovat probl\u00e9my se s\u00edt\u00ed pomoc\u00ed <code>iptables -j REJECT<\/code> nebo <code>iptables -j DROP<\/code>. O\u010dek\u00e1v\u00e1me takov\u00e9 v\u00fdsledky:<\/p>\n<ul>\n<li>orchestr\u00e1tor zjist\u00ed probl\u00e9my s masterem a aktualizuje topologii za m\u00e9n\u011b ne\u017e 10 sekund;\n<\/li>\n<li>automaticky se spust\u00ed postup obnovy: zm\u011bn\u00ed se s\u00ed\u0165ov\u00e1 konfigurace, role master p\u0159ejde na repliku, topologie se p\u0159estav\u00ed;\n<\/li>\n<li>nov\u00fd master bude dostupn\u00fd pro z\u00e1pis, \u017eiv\u00e9 repliky nebudou b\u011bhem p\u0159estavby ztraceny;\n<\/li>\n<li>data za\u010dnou b\u00fdt zapisov\u00e1na do nov\u00e9ho masteru a replikov\u00e1na;\n<\/li>\n<li>celkov\u00fd \u010das obnoven\u00ed nep\u0159es\u00e1hne 30 sekund.\n<\/li>\n<\/ul>\n<p>\nJak v\u00edte, syst\u00e9m se m\u016f\u017ee chovat r\u016fzn\u011b v testovac\u00edm a produk\u010dn\u00edm prost\u0159ed\u00ed kv\u016fli r\u016fzn\u00fdm konfigurac\u00edm \u201ehardwaru\u201c a s\u00edt\u011b, rozd\u00edl\u016fm v syntetick\u00e9m a re\u00e1ln\u00e9m zat\u00ed\u017een\u00ed atd. Proto periodicky prov\u00e1d\u00edme cvi\u010den\u00ed v re\u00e1ln\u00fdch podm\u00ednk\u00e1ch, abychom ov\u011b\u0159ili, jak syst\u00e9m reaguje na ztr\u00e1tu s\u00ed\u0165ov\u00e9 konektivity nebo degradaci n\u011bkter\u00fdch jeho \u010d\u00e1st\u00ed. V budoucnu bychom cht\u011bli vybudovat zcela identickou infrastrukturu pro ob\u011b prost\u0159ed\u00ed a automatizovat jej\u00ed testov\u00e1n\u00ed.<\/p>\n<h1>Z\u00e1v\u011bry<\/h1>\n<p>\nFungov\u00e1n\u00ed hlavn\u00edho uzlu syst\u00e9mu ukl\u00e1d\u00e1n\u00ed dat je jedn\u00edm z hlavn\u00edch \u00fakol\u016f t\u00fdmu SRE a provozu. Zaveden\u00ed orchestr\u00e1toru a HA \u0159e\u0161en\u00ed na b\u00e1zi VIP umo\u017enilo dos\u00e1hnout n\u00e1sleduj\u00edc\u00edch v\u00fdsledk\u016f:<\/p>\n<ul>\n<li>spolehliv\u00e9 odhalen\u00ed probl\u00e9m\u016f s topologi\u00ed DB clusteru;\n<\/li>\n<li>automatick\u00e1 a rychl\u00e1 reakce na incidenty t\u00fdkaj\u00edc\u00ed se masteru, co\u017e sni\u017euje prostoje syst\u00e9mu.\n<\/li>\n<\/ul>\n<p>\nNicm\u00e9n\u011b \u0159e\u0161en\u00ed m\u00e1 sv\u00e1 omezen\u00ed a nev\u00fdhody:<\/p>\n<ul>\n<li>\u0161k\u00e1lov\u00e1n\u00ed HA sch\u00e9matu na n\u011bkolik datov\u00fdch center vy\u017eaduje existenci jednotn\u00e9 L2 s\u00edt\u011b mezi nimi;\n<\/li>\n<li>p\u0159ed p\u0159id\u011blen\u00edm VIP na nov\u00e9m masteru mus\u00edme uvolnit star\u00fd. Proces je sekven\u010dn\u00ed, co\u017e zvy\u0161uje \u010das obnovy;\n<\/li>\n<li>uvoln\u011bn\u00ed VIP vy\u017eaduje SSH p\u0159\u00edstup k serveru nebo jin\u00fd zp\u016fsob vol\u00e1n\u00ed vzd\u00e1len\u00fdch procedur. Vzhledem k tomu, \u017ee server nebo DB m\u00e1 probl\u00e9my, kter\u00e9 vedly k procesu obnovy, nem\u016f\u017eeme si b\u00fdt jisti, \u017ee zru\u0161en\u00ed VIP prob\u011bhne \u00fasp\u011b\u0161n\u011b. To m\u016f\u017ee v\u00e9st k situaci, kdy existuj\u00ed dva servery se stejnou virtu\u00e1ln\u00ed IP adresou a probl\u00e9mem. <code>split brain<\/code>.\n<\/li>\n<\/ul>\n<p>\nAbychom se vyhnuli <code>split brain<\/code>, m\u016f\u017eeme pou\u017e\u00edt metodu <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/STONITH\">STONITH<\/a><\/noindex> (\u201eShoot The Other Node In The Head\u201c), kter\u00e1 zcela izoluje nebo odpojuje probl\u00e9mov\u00fd uzel. Existuj\u00ed i jin\u00e9 zp\u016fsoby, jak realizovat vysokou dostupnost clusteru: kombinace VIP a DNS, detekce slu\u017eeb a proxy slu\u017eby, synchronn\u00ed replikace a dal\u0161\u00ed metody, kter\u00e9 maj\u00ed sv\u00e9 nedostatky a v\u00fdhody.<\/p>\n<p>Hovo\u0159il jsem o na\u0161em p\u0159\u00edstupu k vytv\u00e1\u0159en\u00ed odoln\u00e9ho MySQL clusteru. Je snadno realizovateln\u00fd a poskytuje p\u0159ijatelnou \u00farove\u0148 spolehlivosti v aktu\u00e1ln\u00edch podm\u00ednk\u00e1ch. Jak cel\u00fd syst\u00e9m, tak i infrastruktura se vyv\u00edjej\u00ed, tento p\u0159\u00edstup se nepochybn\u011b vyvine.<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.3 - 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\/cs\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Orchestrator a VIP jako HA \u0159e\u0161en\u00ed pro MySQL cluster | ProHoster","description":"V Sitimobil pou\u017e\u00edv\u00e1me datab\u00e1zi MySQL jako hlavn\u00ed \u00falo\u017ei\u0161t\u011b trval\u00fdch dat.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/82113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=82113"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/82113\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/82114"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=82113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=82113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=82113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}