I-Orchestrator ye-MySQL: kungani ungeke ukwazi ukwakha iphrojekthi ebekezelela amaphutha ngaphandle kwayo

Noma iyiphi iphrojekthi enkulu iqale ngamaseva ambalwa. Ekuqaleni kwakukhona iseva eyodwa ye-DB, kwase kwengezwa izigqila kuyo ukuze kulinganiswe ukufundwa. Bese - yeka! Inye inkosi, kodwa kukhona izinceku eziningi; uma enye yezigqila ishiya, khona-ke konke kuzoba kuhle, kodwa uma inkosi ishiya, kuyoba kubi: isikhathi sokuphumula, ama-admins azama ukuphakamisa iseva. Okufanele ngikwenze? Gcina umpetha. Uzakwethu uPavel usevele wabhala ngalokhu indatshana, ngeke ngikuphinde. Esikhundleni salokho, ngizokutshela ukuthi kungani udinga i-Orchestrator ye-MySQL!

Ake siqale ngombuzo oyinhloko: "Sizoyishintsha kanjani ikhodi emshinini omusha lapho inkosi ihamba?"

  • Ngithanda uhlelo olune-VIP (Virtual IP) kakhulu, sizokhuluma ngalo ngezansi. Kuyinto elula futhi esobala kakhulu, nakuba inomkhawulo osobala: inkosi esizoyigodla kufanele ibe engxenyeni ye-L2 ngomshini omusha, okungukuthi, singakhohlwa nge-DC yesibili. Futhi, ngendlela enokuthula, uma ulandela umthetho wokuthi i-L2 enkulu imbi, ngoba i-L2 iyindawo ngayinye, futhi i-L3 iphakathi kwama-rack, futhi uhlelo olunjalo lunemikhawulo eyengeziwe.
  • Ungabhala igama le-DNS kukhodi bese uyixazulula nge-/etc/hosts. Eqinisweni, ngeke kube khona isixazululo. Inzuzo yohlelo: akukho sici somkhawulo wendlela yokuqala, okungukuthi, kungenzeka ukuhlela i-cross-DC. Kepha bese kuvela umbuzo osobala: singaletha ngokushesha kangakanani ushintsho ku-/etc/hosts nge-Puppet-Ansible?
  • Ungashintsha indlela yesibili kancane: faka i-Caching DNS kuwo wonke amaseva ewebhu, lapho ikhodi izoya khona ku-database enkulu. Ungasetha i-TTL 60 yalokhu kufakwa ku-DNS. Kubonakala sengathi uma isetshenziswa ngendlela efanele, le ndlela yinhle.
  • Uhlelo olunokutholwa kwesevisi, okusho ukusetshenziswa kwe-Consul kanye nokunye.
  • Inketho ethokozisayo nge I-ProxySQL. Udinga ukuhambisa yonke ithrafikhi ku-MySQL nge-ProxySQL; I-ProxySQL ngokwayo inganquma ukuthi ubani oyinhloko. By the way, ungafunda mayelana nenye yezinketho zokusebenzisa lo mkhiqizo wami isihloko.

Umbhali we-Orchestrator, esebenza e-Github, waqala ukusebenzisa uhlelo lokuqala nge-VIP, wabe eseluguqulela ohlelweni oluno-consul.

Isakhiwo sengqalasizinda esijwayelekile:

I-Orchestrator ye-MySQL: kungani ungeke ukwazi ukwakha iphrojekthi ebekezelela amaphutha ngaphandle kwayo
Ngizochaza ngokushesha izimo ezisobala okufanele zicatshangelwe:

  • Ikheli le-VIP akufanele libhaliswe ekucushweni kunoma yiziphi iziphakeli. Ake sicabange ngesimo: inkosi yaqala kabusha, futhi ngenkathi ilayisha, i-Orchestrator yangena kumodi ye-faillover futhi yenza enye yezigqila yaba inkosi; kwabe sekuphakama inkosi endala, futhi manje i-VIP isezimotweni ezimbili. Kubi lokhu.
  • Ku-orchestrator, uzodinga ukubhala iskripthi sokubiza umpetha omdala nomphathi omusha. Ku-master endala udinga ukugijima ifdown, futhi ku-master entsha - ifup vip. Kungaba kuhle futhi ukufaka kulesi skripthi ukuthi uma kwenzeka iphutha, ichweba ekushintsheni kwenkosi endala livele livaliwe ukuze kugwenywe noma yikuphi ukuhlukaniswa kwe-splitbrain.
  • Ngemuva kokuthi i-Orchestrator ibize umbhalo wakho ukuthi ikhiphe kuqala i-VIP kanye/noma icime imbobo emshinini, bese ibiza iskripthi sokukhulisa i-VIP kumphathi omusha, ungakhohlwa ukusebenzisa umyalo we-arping ukutshela wonke umuntu ukuthi i-VIP entsha isikhona. lapha.
  • Zonke izigqila kufanele ngabe zifunde_kuphela=1, futhi lapho nje ukhuphula isigqila enkosini, kwakufanele ngabe ufunde_kuphela=0.
  • Ungakhohlwa ukuthi noma yisiphi isigqila esisikhethele lokhu singaba inkosi (I-Orchestrator inendlela yokukhetha ukuthi yisiphi isigqila okufanele sicatshangelwe njengekhandidethi yenkosi entsha kwasekuqaleni, okwesibili, nokuthi yisiphi isigqila okufanele sicatshangelwe. angakhethwa nhlobo ngaphansi kwanoma yiziphi izimo master). Uma isigqila siba inkosi, khona-ke umthwalo wenceku uyosala phezu kwayo futhi umthwalo wenkosi uyokwengezwa, lokhu kumelwe kucatshangelwe.

Kungani udinga i-Orchestrator uma ungenayo?

  • I-Orchestrator inesithombe esibonakalayo esisebenziseka kalula esibonisa yonke i-topology (bona isithombe-skrini ngezansi).
  • I-Orchestrator ingakwazi ukulandelela ukuthi yiziphi izigqila ezisalele ngemuva, nalapho ukuphindaphinda kuye kwaphuka khona ngokuvamile (sinemibhalo enamathiselwe ku-Orchestrator yokuthumela i-SMS).
  • I-Orchestrator ikutshela ukuthi yiziphi izigqila ezinephutha le-GTID.

I-Orchestrator Interface:

I-Orchestrator ye-MySQL: kungani ungeke ukwazi ukwakha iphrojekthi ebekezelela amaphutha ngaphandle kwayo
Yini iphutha le-GTID?

Kunezidingo ezimbili eziyinhloko ukuze i-Orchestrator isebenze:

  • Kudingeka ukuthi i-GTID mbumbulu ivulwe kuyo yonke imishini eku-MySQL cluster; sine-GTID enikwe amandla.
  • Kudingeka ukuthi kube nohlobo olulodwa lwama-binlogs yonke indawo, ungasebenzisa isitatimende. Sibe nokucushwa lapho inkosi nezigqila eziningi zazinomugqa, futhi ezimbili ngokomlando zahlala kumodi Exubile. Ngenxa yalokho, i-Orchestrator yayingafuni nje ukuxhuma lezi zigqila kunkosi entsha.

Khumbula ukuthi into ebaluleke kakhulu esigqileni sokukhiqiza ukuhambisana kwayo nenkosi! Uma une-Global Transaction ID (GTID) enikwe amandla kukho kokubili inkosi nesigqila sakho, ungasebenzisa umsebenzi we-gtid_subset ukuze uthole ukuthi ingabe izicelo ezifanayo zoshintsho lwedatha ziye zasetshenziswa ngempela yini kule mishini. Ungafunda okwengeziwe ngalokhu lapha.

Ngakho-ke, i-Orchestrator ikukhombisa ngephutha le-GTID ukuthi kukhona ukuthengiselana encekwini okungekho enkosini. Kungani lokhu kwenzeka?

  • I-Read_only=1 ayinikiwe amandla esigqilini, othile uxhume futhi wagcwalisa isicelo sokushintsha idatha.
  • I-Super_read_only=1 ayinikiwe amandla esigqilini, bese umlawuli, edidekile iseva, wangena futhi wenza isicelo lapho.
  • Uma uwacabangele womabili amaphuzu adlule, khona-ke kukhona elinye iqhinga: ku-MySQL, isicelo sokususa ama-binlogs siya ku-binlog, ngakho-ke ekushibilikeni kokuqala, kuzovela iphutha le-GTID kunkosi nakuzo zonke izigqila. Ungakugwema kanjani lokhu? I-Perona-5.7.25-28 yethule ukulungiselelwa kwe-binlog_skip_flush_commands=1, okwenqabela ukubhala okuthi flush kuma-binlogs. Kukhona esunguliwe kuwebhusayithi ye-mysql.com iphutha.

Ake ngifingqe konke lokhu okungenhla. Uma ungafuni ukusebenzisa i-Orchestrator kumodi ye-faillover okwamanje, yibeke kumodi yokubuka. Khona-ke uzohlala phambi kwamehlo akho imephu yokusebenzisana kwemishini ye-MySQL kanye nolwazi olubukwayo mayelana nokuthi yiluphi uhlobo lokuphindaphinda emshinini ngamunye, kungakhathaliseki ukuthi izigqila zisalela ngemuva, futhi okubaluleke kakhulu, ukuthi zihambisana kanjani nenkosi!

Umbuzo osobala uthi: β€œI-Orchestrator kufanele isebenze kanjani?” Kumelwe akhethe inkosi entsha ezigqilini zamanje, abese exhuma kabusha zonke izigqila kuyo (yilokhu i-GTID edingeka kukho; uma usebenzisa indlela endala ene-binlog_name kanye ne-binlog_pos, bese ushintsha isigqila sisuka enkosini yamanje siye kwentsha. akunakwenzeka!). Ngaphambi kokuthi sibe ne-Orchestrator, ngake kwadingeka ngikwenze konke lokhu mathupha. Inkosi endala yayilenga ngenxa yenqola ye-Adaptec; yayinezigqila ezingaba ngu-10. Bengidinga ukudlulisa i-VIP kusuka enkosini ngiyise kwesinye sezigqila futhi ngixhume kabusha zonke ezinye izigqila kuyo. Mangaki ama-consoles okufanele ngiwavule, mingaki imiyalo ngasikhathi sinye engangena... Kwadingeka ngilinde kuze kube ngu-3 ekuseni, ngisuse umthwalo kuzo zonke izigqila ngaphandle kwezimbili, ngenze umshini wokuqala kumakhosi amabili, ngokushesha nginamathisele umshini wesibili. kuyo, ngakho namathisela zonke ezinye izinceku enkosini entsha futhi ubuyisele umthwalo. Sekukonke, kubi...

Isebenza kanjani i-Orchestrator uma ingena kumodi ye-faillover? Lokhu kuboniswa kalula ngesibonelo sesimo lapho sifuna ukwenza uchwepheshe abe umshini onamandla kakhulu, wesimanje kakhulu kunalokho esinakho manje.

I-Orchestrator ye-MySQL: kungani ungeke ukwazi ukwakha iphrojekthi ebekezelela amaphutha ngaphandle kwayo
Umfanekiso ubonisa phakathi nenqubo. Yini kakade eyenziwe kuze kube manje? Sathi sifuna ukwenza isigqila sibe inkosi entsha, i-Orchestrator yaqala ukuvele ixhume zonke ezinye izigqila kuyo, inkosi entsha isebenze njengomshini wokuthutha abantu. Ngalolu hlelo, awekho amaphutha avelayo, zonke izigqila zisebenza, i-Orchestrator isusa i-VIP kunkosi endala, iyidlulisele entsha, yenza i-read_only=0 futhi ikhohlwe ngenkosi endala. Konke! Isikhathi sokuphumula senkonzo yethu yisikhathi sokudlulisa i-VIP, okuyimizuzwana engu-2-3.

Yilokho kuphela okwanamuhla, ngiyabonga wonke umuntu. Kuzoba nesihloko sesibili mayelana ne-Orchestrator maduzane. Efilimu edumile yaseSoviet ethi "Igaraji," omunye umlingiswa wathi, "Angifuni ukuqhubeka nokuhlola naye!" Ngakho-ke, i-Orchestrator, ngizohamba nawe ekuhloleni kabusha!

Source: www.habr.com

Engeza amazwana