{"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\/hu\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","title":{"rendered":"Orchestrator \u00e9s VIP mint HA megold\u00e1s a MySQL klaszter sz\u00e1m\u00e1ra","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A SitiMobiln\u00e1l az MySQL adatb\u00e1zist haszn\u00e1ljuk alapvet\u0151 t\u00e1rol\u00f3k\u00e9nt. Sz\u00e1mos adatb\u00e1zis klaszter\u00fcnk van k\u00fcl\u00f6nf\u00e9le szolg\u00e1ltat\u00e1sok \u00e9s c\u00e9lok sz\u00e1m\u00e1ra.<\/p>\n<p>A mester folyamatos el\u00e9rhet\u0151s\u00e9ge kritikus teljes\u00edtm\u00e9nymutat\u00f3ja a rendszer \u00e9s a benne tal\u00e1lhat\u00f3 egyes r\u00e9szek m\u0171k\u00f6d\u00e9s\u00e9nek. A mester le\u00e1ll\u00e1sa eset\u00e9n a klaszter automatikus helyre\u00e1ll\u00edt\u00e1sa jelent\u0151sen cs\u00f6kkenti a v\u00e1laszid\u0151t \u00e9s a le\u00e1ll\u00e1si id\u0151t. Ebben a cikkben a MySQL klasterek magas rendelkez\u00e9sre \u00e1ll\u00e1s\u00e1nak (HA) biztos\u00edt\u00e1si schem\u00e1j\u00e1t fogom t\u00e1rgyalni <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\">MySQL Orchestrator<\/a><\/noindex> \u00e9s virtu\u00e1lis IP-c\u00edmek (VIP).<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator \u00e9s VIP mint HA megold\u00e1s a MySQL klaszter sz\u00e1m\u00e1ra\" 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>VIP-alap\u00fa HA-megold\u00e1s<\/h1>\n<p>\nEl\u0151sz\u00f6r is, r\u00f6viden elmondom, hogy milyen a t\u00e1rol\u00f3rendszer\u00fcnk.<\/p>\n<p>Hagyom\u00e1nyos replik\u00e1ci\u00f3s s\u00e9m\u00e1t haszn\u00e1lunk egyetlen \u00edr\u00e1sra el\u00e9rhet\u0151 mesterrel \u00e9s sok replik\u00e1val, amelyek kiz\u00e1r\u00f3lag olvas\u00e1sra szolg\u00e1lnak. A klaszter tartalmazhat k\u00f6zbens\u0151 mestert \u2014 olyan csom\u00f3pontot, amely egyszerre replikak\u00e9nt \u00e9s m\u00e1sok mesterek\u00e9nt m\u0171k\u00f6dik. Az \u00fcgyfelek a replik\u00e1khoz HAProxy-n kereszt\u00fcl f\u00e9rnek hozz\u00e1, ami lehet\u0151v\u00e9 teszi a terhel\u00e9s egyenletes eloszl\u00e1s\u00e1t \u00e9s a k\u00f6nny\u0171 m\u00e9retezhet\u0151s\u00e9get. Az HAProxy haszn\u00e1lata t\u00f6rt\u00e9neti okokb\u00f3l ered, \u00e9s jelenleg \u00e1t\u00e1ll\u00e1s folyamatban van a ProxySQL-ra.<\/p>\n<p>A replik\u00e1ci\u00f3 f\u00e9lszinkron m\u00f3dban t\u00f6rt\u00e9nik a k\u00f6vetkez\u0151 alapj\u00e1n <code>GTID<\/code>. Ez azt jelenti, hogy legal\u00e1bb egy replik\u00e1nak fel kell vennie a tranzakci\u00f3t a napl\u00f3ba, miel\u0151tt azt sikeresnek nyilv\u00e1n\u00edtj\u00e1k. Ez a replik\u00e1ci\u00f3s m\u00f3d optim\u00e1lis egyens\u00falyt biztos\u00edt a teljes\u00edtm\u00e9ny \u00e9s az adatbiztons\u00e1g k\u00f6z\u00f6tt a f\u0151 csom\u00f3pont meghib\u00e1sod\u00e1sa eset\u00e9n. A m\u00f3dos\u00edt\u00e1sok t\u00f6bbs\u00e9ge a mestert\u0151l a replik\u00e1khoz a k\u00f6vetkez\u0151kkel ker\u00fcl \u00e1tad\u00e1sra <code>Row Based Replication (RBR)<\/code>, de n\u00e9h\u00e1ny csom\u00f3pont vegyes <code>binlog form\u00e1tummal rendelkezhet<\/code>.<\/p>\n<p>Az Orchestr\u00e1tor rendszeresen friss\u00edti a klaszter topol\u00f3gi\u00e1j\u00e1nak \u00e1llapot\u00e1t, elemzi a kapott inform\u00e1ci\u00f3kat, \u00e9s probl\u00e9m\u00e1k eset\u00e9n elind\u00edthatja az automatikus helyre\u00e1ll\u00edt\u00e1si elj\u00e1r\u00e1st. Mag\u00e1t az elj\u00e1r\u00e1st a fejleszt\u0151 ir\u00e1ny\u00edtja, mivel k\u00fcl\u00f6nf\u00e9le m\u00f3dokon val\u00f3s\u00edthat\u00f3 meg: VIP, DNS, szolg\u00e1ltat\u00e1skeres\u0151 (service discovery) vagy saj\u00e1t mechanizmusok alapj\u00e1n. <\/p>\n<p>Az egyik egyszer\u0171 m\u00f3dja a mester helyre\u00e1ll\u00edt\u00e1s\u00e1nak a meghib\u00e1sod\u00e1s eset\u00e9n a lebeg\u0151 VIP-c\u00edmek haszn\u00e1lata.<\/p>\n<p>A k\u00f6vetkez\u0151ket kell tudni err\u0151l a megold\u00e1sr\u00f3l, miel\u0151tt tov\u00e1bbl\u00e9pn\u00e9nk:<\/p>\n<ul>\n<li>A VIP \u2014 egy IP-c\u00edm, amely nincs hozz\u00e1rendelve egy konkr\u00e9t fizikai h\u00e1l\u00f3zati interf\u00e9szhez. Ha egy csom\u00f3pont meghib\u00e1sodik, vagy tervezett karbantart\u00e1s t\u00f6rt\u00e9nik, a VIP-t minim\u00e1lis le\u00e1ll\u00e1si id\u0151vel egy m\u00e1sik er\u0151forr\u00e1sra tudjuk \u00e1thelyezni.\n<\/li>\n<li>Egy virtu\u00e1lis IP-c\u00edm felszabad\u00edt\u00e1sa \u00e9s kiad\u00e1sa gyors \u00e9s olcs\u00f3 m\u0171veletek.\n<\/li>\n<li>A VIP haszn\u00e1lat\u00e1hoz SSH-n kereszt\u00fcli hozz\u00e1f\u00e9r\u00e9s sz\u00fcks\u00e9ges a szerverhez, vagy speci\u00e1lis eszk\u00f6z\u00f6k, p\u00e9ld\u00e1ul <code>keepalived<\/code>.\n<\/li>\n<\/ul>\n<p>\nN\u00e9zz\u00fck meg a lehets\u00e9ges probl\u00e9m\u00e1kat a mester\u00fcnkkel, \u00e9s bemutatjuk, hogyan kell m\u0171k\u00f6dnie az automatikus helyre\u00e1ll\u00edt\u00f3 mechanizmusnak.<\/p>\n<h4>Elveszett a h\u00e1l\u00f3zati kapcsolat a mesterhez, vagy probl\u00e9ma l\u00e9pett fel a hardver szintj\u00e9n, \u00e9s a szerver nem el\u00e9rhet\u0151.<\/h4>\n<p><\/p>\n<ol>\n<li>Az orkestr\u00e1tor friss\u00edti a klaszter topol\u00f3gi\u00e1j\u00e1t, minden replik\u00e1t \u00e9rtes\u00edt a mester el\u00e9rhetetlens\u00e9g\u00e9r\u0151l. Az orkestr\u00e1tor elind\u00edtja a replik\u00e1k k\u00f6z\u00fcl a megfelel\u0151 \u00faj mester v\u00e1laszt\u00e1si folyamat\u00e1t \u00e9s megkezdi a helyre\u00e1ll\u00edt\u00e1st.\n<\/li>\n<li>Megpr\u00f3b\u00e1ljuk elt\u00e1vol\u00edtani a VIP-t a r\u00e9gi mesterr\u0151l \u2014 sikertelen\u00fcl.\n<\/li>\n<li>A replik\u00e1t mesterr\u00e9 v\u00e1lt. A topol\u00f3gia \u00e1talakul.\n<\/li>\n<li>\u00daj h\u00e1l\u00f3zati interf\u00e9szt adunk hozz\u00e1 VIP-vel. Mivel a VIP elt\u00e1vol\u00edt\u00e1sa nem siker\u00fclt, a h\u00e1tt\u00e9rben elind\u00edtjuk a peri\u00f3dikus k\u00e9r\u00e9s k\u00fcld\u00e9s\u00e9t <b>gratuitous ARP<\/b>. Ez a k\u00e9rd\u00e9s\/v\u00e1lasz t\u00edpus lehet\u0151v\u00e9 teszi a csatlakoztatott switch-ek sz\u00e1m\u00e1ra, hogy friss\u00edts\u00e9k az IP- \u00e9s MAC-c\u00edmek k\u00f6z\u00f6tti megfeleltet\u00e9si t\u00e1bl\u00e1zatukat, ez\u00e1ltal \u00e9rtes\u00edtve a VIP \u00e1thelyez\u00e9s\u00e9r\u0151l. Ez minimaliz\u00e1lja a val\u00f3sz\u00edn\u0171s\u00e9g\u00e9t <code>split brain<\/code> a r\u00e9gi mester visszat\u00e9rtekor. \n<\/li>\n<li>Minden \u00faj kapcsolat azonnal \u00e1tir\u00e1ny\u00edt\u00e1sra ker\u00fcl az \u00faj mesterhez. A r\u00e9gi kapcsolatok sikertelen\u00fcl z\u00e1r\u00f3dnak, \u00e9s ism\u00e9telt lek\u00e9rdez\u00e9sek t\u00f6rt\u00e9nnek az adatb\u00e1zison a alkalmaz\u00e1s szintj\u00e9n.\n<\/li>\n<\/ol>\n<p><\/p>\n<h4>A szerver norm\u00e1l m\u00f3dban m\u0171k\u00f6dik, a hiba a DB szintj\u00e9n k\u00f6vetkezett be.<\/h4>\n<p>\nAz algoritmus hasonl\u00f3 az el\u0151z\u0151 esethez: a topol\u00f3gia friss\u00edt\u00e9se \u00e9s a helyre\u00e1ll\u00edt\u00e1si folyamat ind\u00edt\u00e1sa. Mivel a szerver el\u00e9rhet\u0151, sikeresen felszabad\u00edtjuk a VIP-t a r\u00e9gi mesterr\u0151l, \u00e1thelyezz\u00fck az \u00fajra, \u00e9s t\u00f6bb ARP-k\u00e9r\u00e9st k\u00fcld\u00fcnk. A r\u00e9gi mester esetleges visszat\u00e9r\u00e9se nem befoly\u00e1solhatja az \u00e1talak\u00edtott klasztert \u00e9s az alkalmaz\u00e1s m\u0171k\u00f6d\u00e9s\u00e9t.<\/p>\n<h4>Egy\u00e9b probl\u00e9m\u00e1k<\/h4>\n<p>\nA replik\u00e1k vagy \u00e1tmeneti mesterek meghib\u00e1sod\u00e1sa <em>nem eredm\u00e9nyez<\/em> automatikus int\u00e9zked\u00e9seket, \u00e9s k\u00e9zi beavatkoz\u00e1st ig\u00e9nyel.<\/p>\n<p>A virtu\u00e1lis h\u00e1l\u00f3zati interf\u00e9szt mindig ideiglenesen adnak hozz\u00e1, teh\u00e1t a VIP automatikusan nem ker\u00fcl hozz\u00e1rendel\u00e9sre a szerver \u00fajraind\u00edt\u00e1sa ut\u00e1n. Minden adatb\u00e1zis p\u00e9ld\u00e1ny alap\u00e9rtelmez\u00e9s szerint csak olvas\u00e1si m\u00f3dban indul el, az orkesztr\u00e1tor automatikusan \u00e1tv\u00e1lt egy \u00faj \u00edr\u00f3 mesterre \u00e9s megpr\u00f3b\u00e1lja be\u00e1ll\u00edtani <code>csak olvas\u00e1s<\/code> a r\u00e9gi mestern\u00e9l. Ezek a l\u00e9p\u00e9sek a val\u00f3sz\u00edn\u0171s\u00e9g cs\u00f6kkent\u00e9s\u00e9re ir\u00e1nyulnak <code>split brain<\/code>.<\/p>\n<p>A helyre\u00e1ll\u00edt\u00e1si folyamat sor\u00e1n felmer\u00fclhetnek probl\u00e9m\u00e1k, amelyeket szint\u00e9n \u00e9rtes\u00edteni kell az orkesztr\u00e1tor UI-j\u00e1n kereszt\u00fcl a szok\u00e1sos monitoroz\u00e1si eszk\u00f6z\u00f6k mellett. Kiterjesztett\u00fck a REST API-t, hogy ezt a lehet\u0151s\u00e9get hozz\u00e1adjuk (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/pull\/1088\">PR<\/a><\/noindex> jelenleg elb\u00edr\u00e1l\u00e1s alatt).<\/p>\n<p>A HA-megold\u00e1s \u00e1ltal\u00e1nos \u00e1br\u00e1zol\u00e1sa al\u00e1bb l\u00e1that\u00f3.<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator \u00e9s VIP mint HA megold\u00e1s a MySQL klaszter sz\u00e1m\u00e1ra\" src=\"\/wp-content\/uploads\/2020\/05\/485dbbc8f2b1a7595f5fa4f36ad92f7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h1>\u00daj mester kiv\u00e1laszt\u00e1sa<\/h1>\n<p>\nAz orkesztr\u00e1tor el\u00e9g intelligens, \u00e9s megpr\u00f3b\u00e1lja kiv\u00e1lasztani <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/blob\/5126b849ae4f655e1cbe0fbddfa0d7299674f712\/go\/inst\/instance_utils.go#L112\">a legmegfelel\u0151bb replik\u00e1t<\/a><\/noindex> mint \u00faj mestert a k\u00f6vetkez\u0151 krit\u00e9riumok alapj\u00e1n:<\/p>\n<ul>\n<li>a replik\u00e1k lemarad\u00e1sa a mestert\u0151l;\n<\/li>\n<li>a MySQL mester \u00e9s replika verzi\u00f3ja;\n<\/li>\n<li>a replik\u00e1ci\u00f3 t\u00edpusa (RBR, SBR vagy vegyes);\n<\/li>\n<li>elhelyezked\u00e9s egy vagy t\u00f6bb adatk\u00f6zpontban;\n<\/li>\n<li>l\u00e9tezik <code>elt\u00e9r\u0151 GTID<\/code> \u2014 tranzakci\u00f3k, amelyeket a replik\u00e1n hajtottak v\u00e9gre, \u00e9s amelyek hi\u00e1nyoznak a mesterr\u0151l;\n<\/li>\n<li>a felhaszn\u00e1l\u00f3i kiv\u00e1laszt\u00e1si szab\u00e1lyokat is figyelembe kell venni.\n<\/li>\n<\/ul>\n<p>\nNem minden replika ide\u00e1lis jel\u00f6lt a mester szerep\u00e9re. P\u00e9ld\u00e1ul egy replika adatment\u00e9sre is haszn\u00e1lhat\u00f3, vagy a szerver gyeng\u00e9bb hardverkonfigur\u00e1ci\u00f3val rendelkezik. Az orkesztr\u00e1tor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/blob\/master\/docs\/topology-recovery.md#adding-promotion-rules\">t\u00e1mogatja<\/a><\/noindex> k\u00e9zi szab\u00e1lyokat is tartalmaz, amelyek seg\u00edts\u00e9g\u00e9vel a felhaszn\u00e1l\u00f3k testre szabhatj\u00e1k jel\u00f6ltv\u00e1laszt\u00e1si preferenci\u00e1ikat a legjobban prefer\u00e1ltakt\u00f3l a figyelmen k\u00edv\u00fcl hagyottakig.<\/p>\n<h1>Reag\u00e1l\u00e1si \u00e9s helyre\u00e1ll\u00edt\u00e1si id\u0151<\/h1>\n<p>\nEgy incidens eset\u00e9n fontos minimaliz\u00e1lni a rendszer le\u00e1ll\u00e1s\u00e1nak idej\u00e9t, ez\u00e9rt vegy\u00fck figyelembe azokat a MySQL param\u00e9tereket, amelyek befoly\u00e1solj\u00e1k az orkesztr\u00e1tor klasztertopol\u00f3giai fel\u00e9p\u00edt\u00e9s\u00e9t \u00e9s friss\u00edt\u00e9s\u00e9t:<\/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 azoknak a m\u00e1sodperceknek a sz\u00e1ma, amelyek alatt a replika v\u00e1rakozik az \u00faj adatok vagy a mestert\u0151l \u00e9rkez\u0151 heartbeat-jelz\u00e9s meg\u00e9rkez\u00e9s\u00e9re, miel\u0151tt a kapcsolat elveszettnek min\u0151s\u00fcl \u00e9s \u00fajracsatlakozik. Min\u00e9l kisebb az \u00e9rt\u00e9k, ann\u00e1l gyorsabban \u00e9szlelheti a replika, hogy a kapcsolat a mesterr\u0151l megszakadt. Ezt az \u00e9rt\u00e9ket 5 m\u00e1sodpercre \u00e1ll\u00edtjuk.\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 m\u00e1sodpercek sz\u00e1ma a pr\u00f3b\u00e1k k\u00f6z\u00f6tti \u00fajrakapcsol\u00f3d\u00e1shoz. H\u00e1l\u00f3zati probl\u00e9m\u00e1k eset\u00e9n az alacsonyabb \u00e9rt\u00e9k lehet\u0151v\u00e9 teszi a gyors \u00fajrakapcsol\u00f3d\u00e1st \u00e9s megakad\u00e1lyozza a klaszter helyre\u00e1ll\u00edt\u00e1si folyamat\u00e1nak elindul\u00e1s\u00e1t. Aj\u00e1nlott \u00e9rt\u00e9k: 1 m\u00e1sodperc.\n<\/li>\n<li><code>MASTER_RETRY_COUNT<\/code> \u2014 a maxim\u00e1lis \u00fajrakapcsol\u00f3d\u00e1si k\u00eds\u00e9rletek sz\u00e1ma. \n<\/li>\n<li><code>MASTER_HEARTBEAT_PERIOD<\/code> \u2014 m\u00e1sodpercekben kifejezett intervallum, amely ut\u00e1n a mester heartbeat jelet k\u00fcld. Alap\u00e9rtelmez\u00e9s szerint \u00e9rt\u00e9ke a <code>slave_net_timeout<\/code>.\n<\/li>\n<\/ul>\n<p>\nOrkesztr\u00e1tor param\u00e9terek:<\/p>\n<ul>\n<li><code>DelayMasterPromotionIfSQLThreadNotUpToDate<\/code> \u2014 ha ez <code>igaz<\/code>, akkor a mester szerep nem alkalmazhat\u00f3 a jel\u00f6lt replik\u00e1n addig, am\u00edg a replik\u00e1k SQL sz\u00e1l\u00e1nak minden nem alkalmazott tranzakci\u00f3j\u00e1t a Relay Log-b\u00f3l v\u00e9grehajtj\u00e1k. Ezt az opci\u00f3t az\u00e9rt haszn\u00e1ljuk, hogy ne vesz\u00edts\u00fck el a tranzakci\u00f3kat a jel\u00f6lt replik\u00e1k lemarad\u00e1sa eset\u00e9n.\n<\/li>\n<li><code>InstancePollSeconds<\/code> \u2014 a topol\u00f3gia lek\u00e9rdez\u00e9s\u00e9nek \u00e9s friss\u00edt\u00e9s\u00e9nek gyakoris\u00e1ga.\n<\/li>\n<li><code>RecoveryPollSeconds<\/code> \u2014 a topol\u00f3gia elemz\u00e9s\u00e9nek gyakoris\u00e1ga. Probl\u00e9ma \u00e9szlel\u00e9se eset\u00e9n a topol\u00f3gia helyre\u00e1ll\u00edt\u00e1sa elindul. Ez egy<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\/blob\/548265494b3107ca2581d6ccee059e062a759b77\/go\/config\/config.go#L45\"> konstans<\/a><\/noindex>, amely 1 m\u00e1sodperc.\n<\/li>\n<\/ul>\n<p>\nMinden klasztercsom\u00f3pontot az orkesztr\u00e1tor egyszer k\u00e9rdez le <code>InstancePollSeconds<\/code> m\u00e1sodpercenk\u00e9nt. Probl\u00e9ma \u00e9szlel\u00e9se eset\u00e9n a klaszter \u00e1llapota k\u00e9nyszer\u00edtett friss\u00edt\u00e9st kap,<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\/blob\/548265494b3107ca2581d6ccee059e062a759b77\/go\/logic\/topology_recovery.go#L1409\"> majd v\u00e9gleges d\u00f6nt\u00e9s sz\u00fcletik a helyre\u00e1ll\u00edt\u00e1s elv\u00e9gz\u00e9s\u00e9r\u0151l. Az adatb\u00e1zis \u00e9s az orkesztr\u00e1tor k\u00fcl\u00f6nb\u00f6z\u0151 param\u00e9tereivel k\u00eds\u00e9rletezve siker\u00fclt a reakci\u00f3id\u0151t \u00e9s a helyre\u00e1ll\u00edt\u00e1st 30 m\u00e1sodpercre cs\u00f6kkenteni.<\/a><\/noindex>A HA s\u00e9ma tesztel\u00e9s\u00e9t egy helyi<\/p>\n<h1>Tesztk\u00f6rnyezet<\/h1>\n<p>\ntesztk\u00f6rnyezet kifejleszt\u00e9s\u00e9vel kezdt\u00fck, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ParshinPavel\/mysql-ha-sandbox\">majd ezt k\u00f6vet\u0151en a teszt- \u00e9s \u00e9les k\u00f6rnyezetbe val\u00f3 bevezet\u00e9s\u00e9vel. A helyi k\u00f6rnyezet teljesen automatiz\u00e1lt, Docker alap\u00fa, \u00e9s lehet\u0151v\u00e9 teszi az orkesztr\u00e1tor \u00e9s a h\u00e1l\u00f3zat konfigur\u00e1ci\u00f3j\u00e1val v\u00e9gzett k\u00eds\u00e9rletez\u00e9st, a klaszter m\u00e9retez\u00e9s\u00e9t 2-3 szervert\u0151l t\u00f6bb tucatig, valamint a gyakorlatok lebonyol\u00edt\u00e1s\u00e1t biztons\u00e1gos k\u00f6rnyezetben.<\/a><\/noindex> A gyakorlatok sor\u00e1n az al\u00e1bbi probl\u00e9mamodellek k\u00f6z\u00fcl v\u00e1lasztunk: a mester azonnali le\u00e1ll\u00edt\u00e1sa a <\/p>\n<p>, a folyamat finom le\u00e1ll\u00edt\u00e1sa \u00e9s a szerver le\u00e1ll\u00edt\u00e1sa ( <code>kill -9<\/code>docker-compose stop<code>), h\u00e1l\u00f3zati probl\u00e9m\u00e1k szimul\u00e1l\u00e1sa az<\/code>iptables -j REJECT <code>iptables -j DROP<\/code> vagy <code>. Az al\u00e1bbi eredm\u00e9nyekre sz\u00e1m\u00edtunk:<\/code>az orkesztr\u00e1tor \u00e9szleli a mesterrel kapcsolatos probl\u00e9m\u00e1kat, \u00e9s a topol\u00f3gi\u00e1t legfeljebb 10 m\u00e1sodpercen bel\u00fcl friss\u00edti;<\/p>\n<ul>\n<li>a helyre\u00e1ll\u00edt\u00e1si elj\u00e1r\u00e1s automatikusan elindul: a h\u00e1l\u00f3zati konfigur\u00e1ci\u00f3 megv\u00e1ltozik, a mester szerepe \u00e1tker\u00fcl a replik\u00e1ra, a topol\u00f3gia \u00fajra\u00e9p\u00fcl;\n<\/li>\n<li>automatikusan elindul a helyre\u00e1ll\u00edt\u00e1si elj\u00e1r\u00e1s: megv\u00e1ltozik a h\u00e1l\u00f3zati konfigur\u00e1ci\u00f3, a mester szerepe \u00e1tker\u00fcl a replik\u00e1ra, a topol\u00f3gia \u00e1talakul;\n<\/li>\n<li>Az \u00faj mester el\u00e9rhet\u0151v\u00e9 v\u00e1lik a felv\u00e9telre, az \u00e9l\u0151 replik\u00e1k nem fognak elveszni az \u00fajra\u00e9p\u00edt\u00e9s sor\u00e1n;\n<\/li>\n<li>az adatok elkezdenek a \u00faj mesterre \u00edr\u00f3dni \u00e9s replik\u00e1l\u00f3dni;\n<\/li>\n<li>a teljes helyre\u00e1ll\u00edt\u00e1si id\u0151 legfeljebb 30 m\u00e1sodperc lesz.\n<\/li>\n<\/ul>\n<p>\nAhogy tudj\u00e1tok, a rendszer k\u00fcl\u00f6nb\u00f6z\u0151k\u00e9ppen viselkedhet teszt- \u00e9s \u00e9les k\u00f6rnyezetekben a k\u00fcl\u00f6nb\u00f6z\u0151 \u201ehardver\u201d \u00e9s h\u00e1l\u00f3zati konfigur\u00e1ci\u00f3k, a szintetikus \u00e9s val\u00f3s terhel\u00e9sek k\u00f6z\u00f6tti elt\u00e9r\u00e9sek miatt, \u00e9s \u00edgy tov\u00e1bb. Ez\u00e9rt id\u0151nk\u00e9nt val\u00f3s k\u00f6r\u00fclm\u00e9nyek k\u00f6z\u00f6tt gyakorlatokat v\u00e9gz\u00fcnk, ellen\u0151rizve, hogyan viselkedik a rendszer a h\u00e1l\u00f3zati kapcsolatok elveszt\u00e9s\u00e9n\u00e9l vagy egyes r\u00e9szeinek degrad\u00e1ci\u00f3j\u00e1n\u00e1l. A j\u00f6v\u0151ben szeretn\u00e9nk teljesen azonos infrastrukt\u00far\u00e1t \u00e9p\u00edteni a k\u00e9t k\u00f6rnyezet sz\u00e1m\u00e1ra, \u00e9s automatiz\u00e1lni a tesztel\u00e9s\u00e9t.<\/p>\n<h1>K\u00f6vetkeztet\u00e9sek<\/h1>\n<p>\nA t\u00e1rol\u00f3rendszer f\u0151 csom\u00f3pontj\u00e1nak m\u0171k\u00f6d\u00e9se az SRE \u00e9s \u00fczemeltet\u00e9si csapat egyik legfontosabb feladata. Az orchestr\u00e1tor \u00e9s a VIP-alap\u00fa HA-megold\u00e1s bevezet\u00e9se az al\u00e1bbi eredm\u00e9nyeket hozta:<\/p>\n<ul>\n<li>megb\u00edzhat\u00f3 probl\u00e9maazonos\u00edt\u00e1s a DB klaszter topol\u00f3gi\u00e1j\u00e1ban;\n<\/li>\n<li>automatikus \u00e9s gyors reag\u00e1l\u00e1s a mesterrel kapcsolatos incidensekre, ami cs\u00f6kkenti a rendszer le\u00e1ll\u00e1si idej\u00e9t.\n<\/li>\n<\/ul>\n<p>\nAzonban a megold\u00e1snak vannak korl\u00e1tai \u00e9s h\u00e1tr\u00e1nyai:<\/p>\n<ul>\n<li>a HA-rendszer t\u00f6bb adatk\u00f6zpontba t\u00f6rt\u00e9n\u0151 sk\u00e1l\u00e1z\u00e1sa egy egys\u00e9ges L2-h\u00e1l\u00f3zat megl\u00e9t\u00e9t ig\u00e9nyli k\u00f6z\u00f6tt\u00fck;\n<\/li>\n<li>miel\u0151tt a VIP-t az \u00faj mesteren hozz\u00e1rendelhetj\u00fck, azt el kell t\u00e1vol\u00edtani a r\u00e9gir\u0151l. A folyamat soros, ami n\u00f6veli a helyre\u00e1ll\u00edt\u00e1si id\u0151t;\n<\/li>\n<li>a VIP elt\u00e1vol\u00edt\u00e1sa SSH-hozz\u00e1f\u00e9r\u00e9st ig\u00e9nyel a szerverhez, vagy b\u00e1rmilyen m\u00e1s m\u00f3don t\u00f6rt\u00e9n\u0151 t\u00e1voli elj\u00e1r\u00e1sok h\u00edv\u00e1s\u00e1ra. Mivel a szerver vagy a DB probl\u00e9m\u00e1kkal k\u00fczd, amelyek a helyre\u00e1ll\u00edt\u00e1si folyamatot okozt\u00e1k, nem biztos, hogy a VIP elt\u00e1vol\u00edt\u00e1sa sikeres lesz. Ez pedig k\u00e9t azonos virtu\u00e1lis IP-c\u00edmmel rendelkez\u0151 szerverhez \u00e9s probl\u00e9m\u00e1khoz vezethet. <code>split brain<\/code>.\n<\/li>\n<\/ul>\n<p>\nA megakad\u00e1lyoz\u00e1s \u00e9rdek\u00e9ben <code>split brain<\/code>, haszn\u00e1lhatjuk a <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/STONITH\">STONITH<\/a><\/noindex> m\u00f3dszert (\"Shoot The Other Node In The Head\"), amely teljesen elszigeteli vagy kikapcsolja a probl\u00e9m\u00e1s csom\u00f3pontot. L\u00e9teznek m\u00e1s megold\u00e1sok is a klaszter magas rendelkez\u00e9sre \u00e1ll\u00e1s\u00e1nak megval\u00f3s\u00edt\u00e1s\u00e1ra: a VIP \u00e9s DNS kombin\u00e1ci\u00f3ja, szolg\u00e1ltat\u00e1sfelfedez\u00e9s \u00e9s proxy-szolg\u00e1ltat\u00e1sok, szinkron replik\u00e1ci\u00f3 \u00e9s egy\u00e9b m\u00f3dszerek, amelyeknek megvannak a h\u00e1tr\u00e1nyaik \u00e9s el\u0151nyeik.<\/p>\n<p>Besz\u00e9ltem arr\u00f3l, hogyan hozunk l\u00e9tre egy megb\u00edzhat\u00f3 MySQL klasztert. K\u00f6nnyen megval\u00f3s\u00edthat\u00f3 \u00e9s elfogadhat\u00f3 szint\u0171 megb\u00edzhat\u00f3s\u00e1got biztos\u00edt a jelenlegi k\u00f6r\u00fclm\u00e9nyek k\u00f6z\u00f6tt. Ahogy az eg\u00e9sz rendszer \u00e9s az infrastrukt\u00fara fejl\u0151dik, ez a megk\u00f6zel\u00edt\u00e9s k\u00e9ts\u00e9gtelen\u00fcl fejl\u0151dni fog.<br \/>\n<br \/>Forr\u00e1s: <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\/hu\/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=\"hu_HU\" \/>\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\/hu\/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 \u00e9s VIP mint HA-megold\u00e1s a MySQL klaszterhez | ProHoster","description":"A Sitymobiln\u00e1l a MySQL adatb\u00e1zist haszn\u00e1ljuk az \u00e1lland\u00f3 adatok f\u0151 t\u00e1rol\u00f3jak\u00e9nt.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/82113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=82113"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/82113\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/82114"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=82113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=82113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=82113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}