Nayiphi na iprojekthi enkulu iqale ngeeseva ezimbalwa. Ekuqaleni kwakukho iseva ye-DB enye, emva koko amakhoboka ongezwa kuyo ukulinganisa ukufundwa. Kwaye ke - yima! Inye inkosi, kodwa kukho amakhoboka amaninzi; ukuba elinye lamakhoboka lihamba, ke yonke into iya kulunga, kodwa ukuba inkosi ishiya, kuya kuba kubi: ixesha lokuphumla, i-admins izama ukuphakamisa umncedisi. Kwenziwe ntoni? Gcina inkosi. Umlingane wam uPavel sele ebhale malunga noku , andiyi kuphinda. Endaweni yoko, ndiza kukuxelela ukuba kutheni ufuna iOkhestra yeMySQL!
Masiqale ngombuzo ophambili: "Siza kuyitshintshela njani ikhowudi kumatshini omtsha xa inkosi ishiya?"
- Ndiyathanda iskimu ngeVIP (Virtual IP) kakhulu, siya kuthetha ngayo ngezantsi. Yeyona nto ilula kwaye icacile, nangona inomda ocacileyo: inkosi esiya kuyigcina kufuneka ibe kwicandelo le-L2 kunye nomatshini omtsha, oko kukuthi, sinokulibala malunga ne-DC yesibini. Kwaye, ngendlela enobubele, ukuba ulandela umgaqo wokuba i-L2 enkulu ingendawo, kuba i-L2 i-rack kuphela, kwaye i-L3 iphakathi kwee-racks, kwaye isicwangciso esinjalo sinezithintelo ezingaphezulu.
- Ungabhala igama le-DNS kwikhowudi kwaye uyisombulule nge-/etc/hosts. Enyanisweni, akuyi kubakho isisombululo. Inzuzo yeskimu: akukho phawu lokukhawulelana kwendlela yokuqala, oko kukuthi, kunokwenzeka ukuba uququzelele i-cross-DC. Kodwa ke umbuzo ocacileyo uyavela: sinokukhawuleza kangakanani ukuhambisa utshintsho kwi-/etc/hosts ngePuppet-Ansible?
- Unokutshintsha indlela yesibini kancinane: faka i-Caching DNS kuzo zonke iiseva zewebhu, apho ikhowudi iya kuya kwi-database enkulu. Uyakwazi ukuseta TTL 60 kolu ngeno kwi DNS. Kubonakala ngathi ukuba iphunyezwe ngokuchanekileyo, indlela ilungile.
- Iskimu esinokufunyanwa kwenkonzo, okuthetha ukusetyenziswa kwe-Consul kunye etcd.
- Inketho enomdla nge . Kufuneka ulandele yonke i-traffic kwi-MySQL ngokusebenzisa i-ProxySQL ngokwayo inokugqiba ukuba ngubani ophetheyo. Ngendlela, unokufunda malunga nenye yeenketho zokusebenzisa le mveliso yam .
Umbhali we-Orchestrator, esebenza kwi-Github, waqala ukuphumeza iskimu sokuqala kunye ne-VIP, kwaye emva koko wayiguqulela kwisikimu kunye ne-consul.
Uyilo lweziseko ezingundoqo:

Ndiza kuchaza ngokukhawuleza iimeko ezicacileyo ekufuneka zithathelwe ingqalelo:
- Idilesi ye-VIP akufanele ibhaliswe kwi-config nakweyiphi na iseva. Makhe sibe nomfanekiso-ngqondweni wemeko: inkosi yaphinda yaqalisa, kwaye ngelixa yayilayisha, iOkhestra yangena kwimowudi ye-faillover kwaye yenza enye yamakhoboka inkosi; kwaphakama inkosi endala, kwaye ngoku iVIP ikwiimoto ezimbini. Oku kubi.
- Kwiokhestra, kuya kufuneka ubhale iskripthi sokubiza inkosi endala kunye nenkosi entsha. Kwinkosi endala kufuneka ubaleke ifdown, kwaye kwinkosi entsha – ifup vip. Kuya kuba kuhle ukubandakanya kule script ukuba xa kwenzeka i-failover, i-port kwi-switch yenkosi endala icinyiwe nje ukuphepha nayiphi na i-splitbrain.
- Emva kokuba i-Orchestrator ibize iscript sakho ukuba iqale ukususa i-VIP kunye / okanye ukucima izibuko kwi-switch, kwaye emva koko ibize i-VIP yokunyusa iscript kwinkosi entsha, ungalibali ukusebenzisa umyalelo we-arping ukuxelela wonke umntu ukuba i-VIP entsha ngoku. Apha.
- Onke amakhoboka afanele ukuba afunde_kuphela=1, kwaye kamsinya nje wakuba unyusele ikhoboka enkosini, bekufanele ukuba ufunde_kuphela=0.
- Ungalibali ukuba naliphi na ikhoboka esilikhethele oku linokuba yinkosi (I-Orchestrator inendlela ekhethiweyo yokukhetha ukuba leliphi ikhoboka elinokuthi lithathelwe ingqalelo njengomgqatswa wenkosi entsha kwindawo yokuqala, kwindawo yesibini, kwaye leliphi ikhoboka ekufuneka liqwalaselwe. ungakhethwa kwaphela phantsi kwazo naziphi na iimeko inkosi). Ukuba ikhoboka liba yinkosi, umthwalo wekhoboka uya kuhlala phezu kwalo yaye umthwalo wenkosi uya kongezelelwa, oku kumele kuthatyathelwe ingqalelo.
Kutheni ufuna iOkhestra ukuba akunayo?
- IOkhestra inonxibelelwano lomzobo olusebenziseka lula olubonisa yonke itopology (jonga umfanekiso weskrini ongezantsi).
- I-Okhestrator inokulandelela ukuba ngawaphi amakhoboka asalelayo, kwaye apho ukuphindaphinda kuye kwaphulwa ngokubanzi (sinemibhalo eqhotyoshelwe kwi-Orchestrator yokuthumela iSMS).
- Iokhestra ikuxelela ukuba ngawaphi amakhoboka anesiphoso kwi-GTID.
Ujongano Lweokhestra:

Yintoni impazamo ye-GTID?
Kukho izinto ezimbini ezifunekayo ukuze iOkhestra isebenze:
- Kuyimfuneko ukuba ipseudo GTID yenziwe ukuba isebenze kubo bonke oomatshini abakwiqela le-MySQL esine-GTID esebenzayo.
- Kuyimfuneko ukuba kubekho uhlobo olunye lwe-binlogs kuyo yonke indawo, ungasebenzisa ingxelo. Sasinobumbeko apho inkosi kunye namakhoboka amaninzi ayenayo iRow, kwaye ezimbini ngokwembali zahlala kwimodi exutywe. Ngenxa yoko, iOrchestrator ayizange ifune ukudibanisa la makhoboka kwinkosi entsha.
Khumbula ukuba eyona nto ibalulekileyo kwikhoboka lemveliso kukuhambelana kwayo nenkosi! Ukuba une-ID ye-Global Transaction ID (GTID) eyenziwe yasebenza kuzo zombini inkosi yakho kunye nekhoboka, ngoko ungasebenzisa umsebenzi we-gtid_subset ukufumanisa ukuba izicelo ezifanayo zotshintsho lwedatha ziye zenziwa ngokwenene kwaba matshini. Unokufunda ngakumbi malunga noku .
Ke, i-Orchestrator ikubonisa nge-GTID errant ukuba kukho ukuthengiselana kwikhoboka elingekho kwinkosi. Kutheni kusenzeka oku?
- I-Read_only=1 ayivulwanga kwikhoboka, umntu uqhagamshele kwaye wagqiba isicelo sokutshintsha idatha.
- Super_read_only=1 ayenziwanga isebenze kwikhoboka, emva koko umlawuli, ebhidanise umncedisi, wangena wenza isicelo apho.
- Ukuba uthathele ingqalelo amanqaku angaphambili, ke kukho elinye iqhinga: kwi-MySQL, isicelo sokugungxula ii-binlogs siya kwi-binlog, ngoko ke ekugungxuleni kokuqala, impazamo ye-GTID iya kuvela kwinkosi nakuwo onke amakhoboka. Ukuphepha njani oku? I-Perona-5.7.25-28 yazise i-binlog_skip_flush_commands=1 isicwangciso, esithintela ukubhala ngokugungxulelwayo kwiibhlogs. Kukho enye esekiweyo kwiwebhusayithi ye-mysql.com .
Makhe ndishwankathele konke oku kungasentla. Ukuba awufuni ukusebenzisa iOkhestra kwimowudi yokuhluleka, yibeke kwindlela yokujonga. Emva koko uya kuhlala uphambi kwamehlo akho imephu yokusebenzisana koomatshini be-MySQL kunye nolwazi olubonakalayo malunga nokuba luhlobo luni lokuphindaphinda kumatshini ngamnye, nokuba ngaba amakhoboka asala ngasemva, kwaye okona kubaluleke kakhulu, indlela ahambelana ngayo nenkosi!
Umbuzo ocacileyo ngulo: "Ifanele isebenze njani iOkhestra?" Kufuneka akhethe inkosi entsha kumakhoboka angoku, aze aphinde aqhagamshele onke amakhoboka kuyo (yilento i-GTID ifunekayo; ukuba usebenzisa indlela endala nge binlog_name kunye ne binlog_pos, ngoku utshintshela ikhoboka ukusuka kwinkosi yangoku ukuya kwentsha. akunakwenzeka!). Phambi kokuba sibe neOkhestra, ndakhe ndakwenza konke oku ngesandla. Inkosi endala yayijinga ngenxa ye-buggy ye-Adaptec isilawuli yayinamakhoboka amalunga ne-10. Kwakufuneka nditshintshe i-VIP ukusuka kwinkosi ukuya kwelinye lamakhoboka kwaye ndidibanise onke amanye amakhoboka kuyo. Zingaphi ii-consoles endizivule, zingaphi imiyalelo edibeneyo endiyifakileyo ... kwafuneka ndilinde kude kube ngu-3 ekuseni, ndisuse umthwalo kuwo onke amakhoboka ngaphandle kwababini, ndenze umatshini wokuqala weenkosi ezimbini, ngokukhawuleza udibanise umatshini wesibini. Ngoko ke onke amanye amakhoboka uwaqhoboshele enkosini entsha, uwubuyisele umthwalo. Lilonke, libi...
Isebenza njani iOkhestra xa ingena kwimowudi ye-faillover? Oku kubonakaliswa ngokulula ngomzekelo wemeko apho sifuna ukwenza inkosi ibe ngumatshini onamandla ngakumbi, wale mihla kunangoku.

Umfanekiso ubonisa umbindi wenkqubo. Yintoni esele yenziwe ukuza kuthi ga ngoku? Sathi sifuna ukwenza ikhoboka inkosi entsha, iOrchestrator yaqala ukudibanisa onke amanye amakhoboka kuyo, inkosi entsha isebenze njengomatshini wokuhamba. Ngesi sikimu, akukho ziphoso ezenzekayo, zonke izigqila zisebenza, i-Orchestrator isusa i-VIP kwinkosi endala, idlulisele entsha, yenza ukufunda_kuphela = 0 kwaye ikhohlwe malunga nenkosi endala. Konke! Ixesha lokunciphisa inkonzo yethu lixesha lokudluliselwa kwe-VIP, eyi-2-3 imizuzwana.
Kuphelele apho namhlanje, enkosi nonke. Kuya kubakho inqaku lesibini malunga neOkhestra kungekudala. Kwifilimu edumileyo yaseSoviet "Igaraji," omnye umlingiswa wathi, "Andiyi kuphinda ndiqhubele phambili kunye naye!" Ngoko ke, uMculi weOkhestra, ndingahamba nawe xa kujongwa kwakhona!
umthombo: www.habr.com
