{"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\/sq\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","title":{"rendered":"Orchestrator dhe VIP si zgjidhje HA p\u00ebr klasterin MySQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>N\u00eb Sitimobil p\u00ebrdorim baz\u00ebn e t\u00eb dh\u00ebnave MySQL si depozitat kryesore t\u00eb t\u00eb dh\u00ebnave t\u00eb q\u00ebndrueshme. Kemi disa klastera t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave p\u00ebr sh\u00ebrbime dhe q\u00ebllime t\u00eb ndryshme.<\/p>\n<p>Disponueshm\u00ebria e vazhdueshme e masterit \u00ebsht\u00eb nj\u00eb tregues kritik i funksionimit t\u00eb sistemit t\u00eb t\u00ebr\u00ebsish\u00ebm dhe pjes\u00ebve t\u00eb tij. Rind\u00ebrtimi automatik i klasterit n\u00eb rast t\u00eb d\u00ebshtimit t\u00eb masterit zvog\u00eblon ndjesh\u00ebm koh\u00ebn e reagimit ndaj incidenteve dhe koh\u00ebn e pushimit t\u00eb sistemit. N\u00eb k\u00ebt\u00eb artikull do t\u00eb shqyrtoj skem\u00ebn e siguris\u00eb s\u00eb disponueshm\u00ebris\u00eb s\u00eb lart\u00eb (HA) t\u00eb klasterit MySQL mbi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\">MySQL Orchestrator<\/a><\/noindex> dhe adresat IP virtuale (VIP).<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator dhe VIP si zgjidhje HA p\u00ebr klasterin 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>Zgjidhja HA mbi VIP<\/h1>\n<p>\nFillimisht do t\u00eb flas shkurtimisht mbi at\u00eb q\u00eb p\u00ebrfaq\u00ebson sistemi yn\u00eb i ruajtjes s\u00eb t\u00eb dh\u00ebnave.<\/p>\n<p>Ne p\u00ebrdorim nj\u00eb skem\u00eb klasike replikimi me nj\u00eb master t\u00eb vet\u00ebm, i cili \u00ebsht\u00eb n\u00eb dispozicion p\u00ebr shk writing dhe shum\u00eb replika q\u00eb p\u00ebrdoren vet\u00ebm p\u00ebr lexim. Klasteri mund t\u00eb p\u00ebrmbaj\u00eb nj\u00eb master nd\u00ebrmjet\u00ebs \u2014 nj\u00eb nyj\u00eb q\u00eb \u00ebsht\u00eb nj\u00ebkoh\u00ebsisht replik\u00eb dhe master p\u00ebr t\u00eb tjer\u00ebt. Klient\u00ebt qasen n\u00eb replikat p\u00ebrmes HAProxy, q\u00eb lejon shp\u00ebrndarjen e barabart\u00eb t\u00eb ngarkes\u00ebs dhe leht\u00ebsin\u00eb n\u00eb shkall\u00ebzim. P\u00ebrdorimi i HAProxy ka shkak historik dhe tani jemi n\u00eb procesin e migrimit n\u00eb ProxySQL.<\/p>\n<p>Replikimi realizohet n\u00eb m\u00ebnyr\u00eb gjysm\u00eb-sinkrone n\u00eb baz\u00eb t\u00eb <code>GTID<\/code>. Do t\u00eb thot\u00eb, s\u00eb paku nj\u00eb replik\u00eb duhet t\u00eb regjistroj\u00eb transaksionin n\u00eb log, p\u00ebrpara se t\u00eb pranohet si e suksesshme. Ky mod i replikimit siguron nj\u00eb balancim optimal midis performanc\u00ebs dhe ruajtjes s\u00eb t\u00eb dh\u00ebnave n\u00eb rast d\u00ebshtimi t\u00eb nyj\u00ebs kryesore. N\u00eb p\u00ebrgjith\u00ebsi, t\u00eb gjitha ndryshimet d\u00ebrgohen nga masteri te replikat p\u00ebrmes <code>Row Based Replication (RBR)<\/code>, por disa nyje mund t\u00eb ken\u00eb <code>mixed binlog format<\/code>.<\/p>\n<p>Orkestratori p\u00ebrdit\u00ebson periodikisht gjendjen e topologjis\u00eb s\u00eb klasterit, analizon informacionin e marr\u00eb dhe n\u00eb rast problemeve mund t\u00eb filloj\u00eb procedur\u00ebn e rind\u00ebrtimit automatik. Vet\u00eb procedura \u00ebsht\u00eb p\u00ebrgjegj\u00ebsi e zhvilluesit, pasi mund t\u00eb realizohet n\u00eb shum\u00eb m\u00ebnyra: mbi VIP, DNS, duke p\u00ebrdorur sh\u00ebrbime zbulimi (service discovery) ose mekanizma t\u00eb shkruar vet\u00eb. <\/p>\n<p>Nj\u00eb nga m\u00ebnyrat e thjeshta p\u00ebr t\u00eb rind\u00ebrtuar masterin n\u00eb rast t\u00eb d\u00ebshtimit t\u00eb tij \u00ebsht\u00eb p\u00ebrdorimi i adresave VIP lundruese.<\/p>\n<p>\u00c7far\u00eb duhet t\u00eb dini mbi k\u00ebt\u00eb zgjidhje para se t\u00eb vazhdoni m\u00eb tutje:<\/p>\n<ul>\n<li>VIP \u2014 \u00ebsht\u00eb nj\u00eb adres\u00eb IP q\u00eb nuk \u00ebsht\u00eb e lidhur me nj\u00eb nd\u00ebrfaqe fizike t\u00eb caktuar rrjeti. Kur nj\u00eb nyje d\u00ebshton ose gjat\u00eb punimeve t\u00eb planifikuara, ne mund ta kalojm\u00eb VIP n\u00eb nj\u00eb burim tjet\u00ebr me nj\u00eb koh\u00eb t\u00eb minimizuar ndalimi.\n<\/li>\n<li>Largimi dhe dh\u00ebnia e nj\u00eb adrese IP virtuale jan\u00eb operacione t\u00eb lira dhe t\u00eb shpejta.\n<\/li>\n<li>P\u00ebr t\u00eb punuar me VIP, k\u00ebrkohet akses n\u00eb server p\u00ebrmes SSH, ose p\u00ebrdorimi i utilitareve speciale, p\u00ebr shembull, <code>keepalived<\/code>.\n<\/li>\n<\/ul>\n<p>\nT\u00eb shqyrtojm\u00eb problemet e mundshme me masterin ton\u00eb dhe t\u00eb paraqesim se si duhet t\u00eb funksionoj\u00eb mekanizmi i rikuperimit automatik.<\/p>\n<h4>Lidhja rrjet\u00eb \u00ebsht\u00eb humbur me masterin, ose ka ndodhur nj\u00eb problem n\u00eb nivelin e \"harduerit\", dhe serveri nuk \u00ebsht\u00eb i aksesuesh\u00ebm.<\/h4>\n<p><\/p>\n<ol>\n<li>Orkestratori p\u00ebrdit\u00ebson topologjin\u00eb e klasterit, \u00e7do riprodhim raporton p\u00ebr munges\u00ebn e masterit. Orkestratori nis procesin e zgjedhjes s\u00eb nj\u00eb riprodhimi t\u00eb p\u00ebrshtatsh\u00ebm p\u00ebr rolin e masterit t\u00eb ri dhe fillon rikuperimin.\n<\/li>\n<li>P\u00ebrpiqemi t\u00eb heqim VIP nga masteri i vjet\u00ebr \u2014 pa sukses.\n<\/li>\n<li>Riprodhimi kalon n\u00eb rolin e masterit. Topologjia ristrukturohet.\n<\/li>\n<li>Shtojm\u00eb nj\u00eb nd\u00ebrfaqe t\u00eb re rrjeti me VIP. Duke qen\u00eb se nuk arrit\u00ebm ta heqim VIP, n\u00eb sfond nisemi me d\u00ebrgimin e periudhsh\u00ebm t\u00eb k\u00ebrkes\u00ebs <b>gratuitous ARP<\/b>. Ky lloj k\u00ebrkese\/ndjelljeje lejon p\u00ebrdit\u00ebsimin n\u00eb switch-\u00ebt e lidhur t\u00eb tabel\u00ebs s\u00eb p\u00ebrputhjes s\u00eb adresave IP dhe MAC, duke njoftuar k\u00ebshtu p\u00ebr l\u00ebvizjen e VIP ton\u00eb. Kjo minimizon probabilitetin e <code>split brain<\/code> n\u00eb rastin e rikthimit t\u00eb masterit t\u00eb vjet\u00ebr. \n<\/li>\n<li>T\u00eb gjitha lidhjet e reja menj\u00ebher\u00eb drejtohen n\u00eb masterin e ri. Lidhjet e vjetra p\u00ebrfundojn\u00eb pa sukses, duke b\u00ebr\u00eb apel t\u00eb p\u00ebrs\u00ebritur n\u00eb DB n\u00eb nivelin e aplikacionit.\n<\/li>\n<\/ol>\n<p><\/p>\n<h4>Serveri punon n\u00eb m\u00ebnyr\u00eb normale, ka ndodhur nj\u00eb d\u00ebshtim n\u00eb nivelin e DBMS.<\/h4>\n<p>\nAlgoritmi \u00ebsht\u00eb i ngjash\u00ebm me rastin e m\u00ebparsh\u00ebm: p\u00ebrdit\u00ebsimi i topologjis\u00eb dhe nisja e procesit t\u00eb rikuperimit. Duke qen\u00eb se serveri \u00ebsht\u00eb i aksesuesh\u00ebm, ne me sukses lirojm\u00eb VIP-n\u00eb nga masteri i vjet\u00ebr, e transferojm\u00eb n\u00eb t\u00eb riun dhe d\u00ebrgojm\u00eb disa k\u00ebrkesa ARP. Rikthimi i mundsh\u00ebm i masterit t\u00eb vjet\u00ebr nuk duhet t\u00eb ndikoje n\u00eb klasterin e ristrukturuar dhe pun\u00ebn e aplikacionit.<\/p>\n<h4>Probleme t\u00eb tjera<\/h4>\n<p>\nD\u00ebshtimi i riprodhimeve ose i master\u00ebve t\u00eb p\u00ebrkohsh\u00ebm <em>nuk sjell<\/em> veprime automatike dhe k\u00ebrkon nd\u00ebrhyrje manuale.<\/p>\n<p>Interfejsi virtual rrjetit gjithmon\u00eb shtohet p\u00ebrkoh\u00ebsisht, q\u00eb do t\u00eb thot\u00eb se pas rinisjes s\u00eb serverit, VIP nuk shenjohet automatikisht. \u00c7do instanc\u00eb e DB fillon n\u00eb m\u00ebnyr\u00eb standarde n\u00eb modalitetin vet\u00ebm p\u00ebr lexim, orkestratori automatikisht kalon master-in e ri n\u00eb t\u00eb shkruajtur dhe p\u00ebrpiqet t\u00eb vendos\u00eb <code>vet\u00ebm p\u00ebr lexim<\/code> n\u00eb master-in e vjet\u00ebr. K\u00ebto veprime jan\u00eb t\u00eb orientuara p\u00ebr t\u00eb reduktuar probabilitetin <code>split brain<\/code>.<\/p>\n<p>Gjat\u00eb procesit t\u00eb rikuperimit mund t\u00eb ndodhin probleme, p\u00ebr t\u00eb cilat gjithashtu duhet t\u00eb njoftoni p\u00ebrmes UI t\u00eb orkestratorit, p\u00ebrve\u00e7 mjeteve standarde t\u00eb monitorimit. Ne kemi zgjeruar REST API duke shtuar k\u00ebt\u00eb mund\u00ebsi (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/pull\/1088\">PR<\/a><\/noindex> aktualisht \u00ebsht\u00eb n\u00eb shqyrtim).<\/p>\n<p>Schema e p\u00ebrgjithshme e zgjidhjes HA \u00ebsht\u00eb e paraqitur m\u00eb posht\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Orchestrator dhe VIP si zgjidhje HA p\u00ebr klasterin MySQL\" src=\"\/wp-content\/uploads\/2020\/05\/485dbbc8f2b1a7595f5fa4f36ad92f7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h1>Zgjedhja e master-it t\u00eb ri<\/h1>\n<p>\nOrkestratori \u00ebsht\u00eb mjaft i men\u00e7ur dhe p\u00ebrpiqet t\u00eb zgjedh\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/blob\/5126b849ae4f655e1cbe0fbddfa0d7299674f712\/go\/inst\/instance_utils.go#L112\">repik\u00ebn m\u00eb t\u00eb p\u00ebrshtatshme<\/a><\/noindex> si master t\u00eb ri sipas k\u00ebtyre kritereve:<\/p>\n<ul>\n<li>mungesa e repik\u00ebs nga master-i;\n<\/li>\n<li>versioni i MySQL i master-it dhe repik\u00ebs;\n<\/li>\n<li>tipi i repikimit (RBR, SBR ose miks);\n<\/li>\n<li>vler\u00ebsimi n\u00eb nj\u00eb ose m\u00eb shum\u00eb qendra t\u00eb t\u00eb dh\u00ebnave;\n<\/li>\n<li>pranin\u00eb <code>GTID i gabuar<\/code> \u2014 transaksionet q\u00eb jan\u00eb kryer n\u00eb repik\u00eb dhe mungojn\u00eb n\u00eb master;\n<\/li>\n<li>po ashtu merren parasysh rregullat e p\u00ebrdoruesve p\u00ebr zgjedhjen.\n<\/li>\n<\/ul>\n<p>\nJo \u00e7do repik\u00eb \u00ebsht\u00eb kandidati ideal p\u00ebr rolin e master-it. P\u00ebr shembull, repika mund t\u00eb p\u00ebrdoret p\u00ebr kopjimin e t\u00eb dh\u00ebnave, ose serveri ka nj\u00eb konfigurim m\u00eb t\u00eb dob\u00ebt t\u00eb \"harduerit\". Orkestratori <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/openark\/orchestrator\/blob\/master\/docs\/topology-recovery.md#adding-promotion-rules\">mb\u00ebshtet<\/a><\/noindex> rregulla manuale, me ndihm\u00ebn e t\u00eb cilave mund t\u00eb rregulloni preferencat tuaja p\u00ebr zgjedhjen e kandidat\u00ebve nga m\u00eb t\u00eb preferuarit deri te ata t\u00eb injoruar.<\/p>\n<h1>Koha e reagimit dhe rikuperimit<\/h1>\n<p>\nN\u00eb rastin e nj\u00eb incidenti, \u00ebsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb minimizohet koha e ndalimit t\u00eb sistemit, prandaj do t\u00eb shqyrtojm\u00eb parametrat e MySQL q\u00eb ndikojn\u00eb n\u00eb nd\u00ebrtimin dhe p\u00ebrdit\u00ebsimin e topologjis\u00eb s\u00eb klasit nga orkestratori:<\/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 numri i sekondave, p\u00ebr t\u00eb cilat repika pret ardhjen e t\u00eb dh\u00ebnave t\u00eb reja ose sinjalit heartbeat nga master-i, para se lidhja t\u00eb njihet si e humbur dhe t\u00eb kryhet rip\u00ebrcaktimi. Sa m\u00eb i vog\u00ebl t\u00eb jet\u00eb ky vler\u00eb, aq m\u00eb shpejt repika do t\u00eb jet\u00eb n\u00eb gjendje t\u00eb p\u00ebrcaktoj\u00eb se lidhja me master-in \u00ebsht\u00eb shkeputur. Ne e vendosim k\u00ebt\u00eb vler\u00eb t\u00eb jet\u00eb 5 sekonda.\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 numri i sekondave midis p\u00ebrpjekjeve p\u00ebr rikthim. N\u00eb rast t\u00eb problemeve n\u00eb rrjet, nj\u00eb vler\u00eb e ul\u00ebt e k\u00ebtij parametri do t\u00eb lejoj\u00eb rikthim t\u00eb shpejt\u00eb dhe do t\u00eb parandaloj\u00eb nisjen e procesit t\u00eb rim\u00ebk\u00ebmbjes s\u00eb klasterit. Vlera e rekomanduar \u00ebsht\u00eb 1 sekond\u00eb.\n<\/li>\n<li><code>MASTER_RETRY_COUNT<\/code> \u2014 numri maximal i p\u00ebrpjekjeve p\u00ebr rikthim. \n<\/li>\n<li><code>MASTER_HEARTBEAT_PERIOD<\/code> \u2014 intervali n\u00eb sekonda, pas t\u00eb cilit master-i d\u00ebrgon nj\u00eb sinjal heartbeat. N\u00eb parazgjedhje, \u00ebsht\u00eb e barabart\u00eb me gjysm\u00ebn e vler\u00ebs <code>slave_net_timeout<\/code>.\n<\/li>\n<\/ul>\n<p>\nParametrat e orkestratorit:<\/p>\n<ul>\n<li><code>DelayMasterPromotionIfSQLThreadNotUpToDate<\/code> \u2014 n\u00ebse \u00ebsht\u00eb i barabart\u00eb me <code>true<\/code>, at\u00ebher\u00eb roli i master-it nuk do t\u00eb zbatohet n\u00eb replik\u00ebn-kandidate derisa rrjedha SQL e replik\u00ebs t\u00eb p\u00ebrfundoj\u00eb t\u00eb gjitha transaksionet e pap\u00ebrfunduara nga Relay Log. Ne e p\u00ebrdorim k\u00ebt\u00eb opsion p\u00ebr t\u00eb mos humbur transaksionet n\u00eb kushte vonese t\u00eb t\u00eb gjitha replikave-kandidate.\n<\/li>\n<li><code>InstancePollSeconds<\/code> \u2014 frekuenca e nd\u00ebrtimit dhe azhurnimit t\u00eb topologjis\u00eb.\n<\/li>\n<li><code>RecoveryPollSeconds<\/code> \u2014 frekuenca e analiz\u00ebs s\u00eb topologjis\u00eb. N\u00eb rast se zbulohet nj\u00eb problem, niset rikthimi i topologjis\u00eb. Kjo \u00ebsht\u00eb<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\/blob\/548265494b3107ca2581d6ccee059e062a759b77\/go\/config\/config.go#L45\"> nje konstant\u00eb<\/a><\/noindex>, e barabart\u00eb me 1 sekond\u00eb.\n<\/li>\n<\/ul>\n<p>\n\u00c7do nod n\u00eb klasteri pyetet nga orkestratori nj\u00eb her\u00eb n\u00eb <code>InstancePollSeconds<\/code> sekonda. N\u00eb rast se zbulohet ndonj\u00eb problem, gjendja e klasterit detyrohet<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/github\/orchestrator\/blob\/548265494b3107ca2581d6ccee059e062a759b77\/go\/logic\/topology_recovery.go#L1409\"> azhornohet<\/a><\/noindex>, dhe m\u00eb pas merret nj\u00eb vendim p\u00ebrfundimtar p\u00ebr t\u00eb realizuar rikthimin. Duke eksperimentuar me parametra t\u00eb ndrysh\u00ebm t\u00eb DB dhe orkestratorit, kemi arritur t\u00eb ulemi koh\u00ebn e reagimit dhe rikthimit n\u00eb 30 sekonda.<\/p>\n<h1>Standi i testimit<\/h1>\n<p>\nTestimi i skem\u00ebs HA e filluam me zhvillimin e nj\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ParshinPavel\/mysql-ha-sandbox\">t\u00eb testimit lokal<\/a><\/noindex> dhe m\u00eb pas implementimin n\u00eb mjedise testimi dhe prodhimi. Stenda lokale \u00ebsht\u00eb plot\u00ebsisht e automatizuar mbi baz\u00ebn e Docker-it dhe lejon t\u00eb eksperimentojm\u00eb me konfigurimin e orkestratorit dhe rrjetit, t\u00eb shkall\u00ebzojm\u00eb klasterin nga 2-3 servera n\u00eb disa dhjet\u00ebra dhe t\u00eb zhvillojm\u00eb ushtrime n\u00eb nj\u00eb mjedis t\u00eb sigurt. <\/p>\n<p>Gjat\u00eb ushtrimeve ne zgjedhim nj\u00eb nga metodat e imitim t\u00eb problemeve: t\u00eb qet\u00ebsojm\u00eb menj\u00ebher\u00eb master-in me <code>kill -9<\/code>, t\u00eb p\u00ebrfundojm\u00eb but\u00eb procesin dhe t\u00eb ndalojm\u00eb serverin (<code>docker-compose stop<\/code>), t\u00eb imitojm\u00eb probleme me rrjetin me <code>iptables -j REJECT<\/code> ose <code>iptables -j DROP<\/code>. Ne presim k\u00ebto rezultate:<\/p>\n<ul>\n<li>orkestratori do t\u00eb zbuloj\u00eb probleme me master-in dhe do t\u00eb azhurnoj\u00eb topologjin\u00eb p\u00ebr m\u00eb pak se 10 sekonda;\n<\/li>\n<li>procedura e rikthimit do t\u00eb nis\u00eb automatikisht: do t\u00eb ndryshoj\u00eb konfigurimi i rrjetit, roli i master-it do t\u00eb kaloj\u00eb n\u00eb replik\u00eb, topologjia do t\u00eb rinovohet;\n<\/li>\n<li>masteri i ri do t\u00eb jet\u00eb i disponuesh\u00ebm p\u00ebr regjistrim, replikat e drejtp\u00ebrdrejta nuk do t\u00eb humbasin gjat\u00eb procesit t\u00eb rind\u00ebrtimit;\n<\/li>\n<li>t\u00eb dh\u00ebnat do t\u00eb fillojn\u00eb t\u00eb regjistrohen n\u00eb masterin e ri dhe t\u00eb replikohen;\n<\/li>\n<li>koha totale e rikuperimit do t\u00eb jet\u00eb jo m\u00eb shum\u00eb se 30 sekonda.\n<\/li>\n<\/ul>\n<p>\nSi\u00e7 e dini, sistemi mund t\u00eb sillej ndryshe n\u00eb mjediset e testimit dhe n\u00eb ato t\u00eb prodhimit p\u00ebr shkak t\u00eb konfigurimeve t\u00eb ndryshme t\u00eb \u2018harduerit\u2019 dhe rrjetit, dallimeve n\u00eb ngarkesat sintetike dhe reale, etj. Prandaj, her\u00eb pas here ne kryejm\u00eb ushtrime n\u00eb kushte reale, duke kontrolluar se si sillej sistemi n\u00eb rast t\u00eb humbjes s\u00eb lidhjes rrjet dhe degradimit t\u00eb disa pjes\u00ebve t\u00eb tij. N\u00eb t\u00eb ardhmen d\u00ebshirojm\u00eb t\u00eb nd\u00ebrtuam nj\u00eb infrastruktur\u00eb krejt\u00ebsisht identike p\u00ebr t\u00eb dy mjediset dhe ta automatizojm\u00eb testimin e saj.<\/p>\n<h1>P\u00ebrfundimet<\/h1>\n<p>\nFunksionaliteti i nod\u00ebs kryesore t\u00eb sistemit t\u00eb ruajtjes s\u00eb t\u00eb dh\u00ebnave \u00ebsht\u00eb nj\u00eb nga detyrat kryesore t\u00eb ekipit SRE dhe t\u00eb operacioneve. Zbatimi i orkestratorit dhe zgjidhjes HA t\u00eb bazuar n\u00eb VIP ka sjell\u00eb rezultatet e m\u00ebposhtme:<\/p>\n<ul>\n<li>zbulesa e besueshme e problemeve me topologjin\u00eb e klasterit t\u00eb DB;\n<\/li>\n<li>reaksion automatik dhe t\u00eb shpejt\u00eb n\u00eb incidentet e lidhura me masterin, duke reduktuar koh\u00ebn e papun\u00ebsis\u00eb s\u00eb sistemit.\n<\/li>\n<\/ul>\n<p>\nMegjithat\u00eb, zgjidhja ka kufizimet dhe disavantazhet e saj:<\/p>\n<ul>\n<li>zhvillimi i skem\u00ebs HA n\u00eb disa Qendra t\u00eb Dh\u00ebnash do t\u00eb k\u00ebrkoj\u00eb nj\u00eb rrjet L2 t\u00eb p\u00ebrbashk\u00ebt nd\u00ebrmjet tyre;\n<\/li>\n<li>para se t\u00eb em\u00ebrojm\u00eb VIP n\u00eb masterin e ri, na nevojitet t\u00eb lirohet ai n\u00eb t\u00eb vjetrin. Procesi \u00ebsht\u00eb sekuencial, gj\u00eb q\u00eb rrit koh\u00ebn e rikuperimit;\n<\/li>\n<li>lirimi i VIP k\u00ebrkon qasje SSH n\u00eb serverin, ose \u00e7do m\u00ebnyr\u00eb tjet\u00ebr p\u00ebr thirrjen e procedurave t\u00eb distancuara. Duke qen\u00eb se serveri ose DB \u00ebsht\u00eb duke p\u00ebrjetuar probleme q\u00eb shkaktuan procesin e rikuperimit, nuk mund t\u00eb jemi t\u00eb sigurt se lirimi i VIP do t\u00eb p\u00ebrfundoj\u00eb me sukses. Dhe kjo mund t\u00eb \u00e7oj\u00eb n\u00eb dy servera me t\u00eb nj\u00ebjtin adres\u00eb IP virtuale dhe nj\u00eb problem <code>split brain<\/code>.\n<\/li>\n<\/ul>\n<p>\nP\u00ebr t\u00eb shmangur <code>split brain<\/code>, mund t\u00eb p\u00ebrdoret metoda <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/STONITH\">STONITH<\/a><\/noindex> ('Q\u00eblloni Nod\u00ebn Tjet\u00ebr N\u00eb Kok\u00eb'), e cila izolon plot\u00ebsisht ose fik nod\u00ebn problematike. Ka edhe m\u00ebnyra t\u00eb tjera p\u00ebr realizimin e disponueshm\u00ebris\u00eb s\u00eb lart\u00eb t\u00eb klasterit: kombinimi i VIP dhe DNS, zbulimi i sh\u00ebrbimeve dhe sh\u00ebrbimet proxy, replikimi sinkron dhe metoda t\u00eb tjera, t\u00eb cilat kan\u00eb disavantazhet dhe avantazhet e tyre.<\/p>\n<p>Kam tregova p\u00ebr qasjen ton\u00eb n\u00eb krijimin e nj\u00eb klasteri MySQL me toleranc\u00eb p\u00ebr d\u00ebshtime. Ai \u00ebsht\u00eb i leht\u00eb p\u00ebr t'u zbatuar dhe ofron nj\u00eb nivel t\u00eb pranuesh\u00ebm besueshm\u00ebrie n\u00eb kushtet aktuale. Nd\u00ebrsa sistemi zhvillohet si nj\u00eb e t\u00ebr\u00eb dhe infrastruktura n\u00eb ve\u00e7anti, ky qasje do t\u00eb evoluoj\u00eb pa dyshim.<br \/>\n<br \/>Burimi: <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.2 - 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\/sq\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/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\udd47Orkestratori dhe VIP si zgjidhje HA p\u00ebr klasterin MySQL | ProHoster","description":"N\u00eb Sitimobil p\u00ebrdorim baz\u00ebn e t\u00eb dh\u00ebnave MySQL si magazin\u00ebn kryesore p\u00ebr t\u00eb dh\u00ebnat e q\u00ebndrueshme.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/orchestrator-i-vip-kak-ha-reshenie-dlya-klastera-mysql","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/82113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=82113"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/82113\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/82114"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=82113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=82113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=82113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}