Orchestrator ee MySQL: sababta aadan u dhisi karin mashruuc u dulqaadan kara la'aantiis

Mashruuc kasta oo weyn wuxuu ku bilaabmay dhowr server. Markii hore waxaa jiray hal server oo DB ah, ka dib addoomo ayaa lagu daray si ay u cabbiraan akhriska. Ka dibna - jooji! Waxaa jira sayid keliya, laakiin waxaa jira addoommo badan; haddii mid ka mid ah addoommada uu tago, markaa wax walbaa way fiicnaan doonaan, laakiin haddii sayidku baxo, way xumaan doontaa: waqti-dhiman, maamulayaashu waxay isku dayayaan inay kor u qaadaan server-ka. Maxaa la sameeyaa? Keydso sayid. Saaxiibkay Pavel ayaa hore wax uga qoray arrintan maqaal, ku celin maayo. Taa bedelkeeda, waxaan kuu sheegi doonaa sababta aad ugu baahan tahay Orchestrator ee MySQL!

Aan ku bilowno su'aasha ugu muhiimsan: "Sideen ugu beddelnaa koodhka mashiinka cusub marka sayidku baxo?"

  • Aad ayaan ugu jeclahay nidaamka VIP (Virtual IP), hoos ayaan uga hadli doonaa. Waa tan ugu fudud oo ugu cad, in kasta oo ay leedahay xaddidaad cad: sayidkii aan ilaalin doono waa inuu ku jiraa qaybta L2 ee mashiinka cusub, taas oo ah, waxaan illoobi karnaa DC-ga labaad. Iyo, si naxariis leh, haddii aad raacdo qaanuunka in L2 weyni uu shar yahay, sababtoo ah L2 waa kaliya raakidhkiiba, L3na wuxuu u dhexeeyaa khaanadaha, nidaamkan oo kale wuxuu leeyahay xannibaadyo badan.
  • Waxaad ku qori kartaa magaca DNS koodka oo aad ku xalliso /etc/hosts. Dhab ahaantii, ma jiri doono xal. Faa'iidada nidaamka: ma jirto sifo xaddidan oo ka mid ah habka ugu horreeya, taas oo ah, waxaa suurtagal ah in la abaabulo iskutallaab-DC. Laakiin markaa su'aasha cad ayaa soo baxaysa: sida ugu dhakhsaha badan ayaan isbeddelka ugu gudbin karnaa /etc/hosts via Puppet-Ansible?
  • Waxaad wax yar ka beddeli kartaa habka labaad: ku rakib DNS caching dhammaan server-yada webka, kaas oo koodku aadi doono kaydka xogta. Waxaad u dejisan kartaa TTL 60 gelitaankan gudaha DNS. Waxay u muuqataa in haddii si sax ah loo fuliyo, habka uu yahay mid wanaagsan.
  • Nidaam leh helitaan adeeg, oo tilmaamaya isticmaalka Qunsulka iyo iwm.
  • Doorasho xiiso leh oo leh ProxySQL. Waxaad u baahan tahay inaad dhammaan taraafikada u mariso MySQL adoo sii maraya ProxySQL; ProxySQL lafteedu waxay go'aamin kartaa cidda sayidka ah. Jid ahaan, waxaad ka akhrisan kartaa mid ka mid ah xulashooyinka isticmaalka alaabtan gudahayga maqaal.

Qoraaga Orchestrator, oo ka shaqaynayay Github, ayaa markii ugu horaysay hirgaliyay qorshaha ugu horeeya ee VIP-da, ka dibna waxa uu u bedelay qorshe qunsul leh.

Qaabaynta kaabayaasha caadiga ah:

Orchestrator ee MySQL: sababta aadan u dhisi karin mashruuc u dulqaadan kara la'aantiis
Waxaan isla markiiba qeexi doonaa xaaladaha muuqda ee u baahan in la tixgeliyo:

  • Ciwaanka VIP-da waa in aan laga diwaan gashanayn habaynta server-yada midkood. Aynu qiyaasno xaalad: sayidku dib buu u bilaabay, oo markii la soo shubayay, Orchestrator wuxuu galay qaab guul-darro ah wuxuuna ka dhigay mid ka mid ah addoommadii sayid; dabadeed sayidkii hore wuu kacay, imminkana VIP-du waxay saaran tahay laba baabuur. Tani waa xun.
  • Abaabulaha, waxaad u baahan doontaa inaad qorto qoraal aad ugu yeedhayso sayidkii hore iyo kan cusub. Sayidka hore waxaad u baahan tahay inaad ku ordo ifdown, iyo sayid cusub - ifup vip. Way fiicnaan lahayd in sidoo kale lagu daro qoraalkan in haddii ay dhacdo guuldarro, dekedda ku taal beddelka hore ee sayidku si fudud ayaa loo dami doonaa si looga fogaado wax kasta oo kala qaybsan.
  • Ka dib markii Orchestrator uu wacay qoraalkaaga si uu marka hore meesha ka saaro VIP-da iyo/ama dami dekedda shilka, ka dibna loogu yeero qoraalka kor u qaadista VIP ee sayid cusub, ha iloobin inaad isticmaasho amarka qaylo-dhaanta si aad qof walba ugu sheegto in VIP-da cusub ay hadda tahay. halkan.
  • Dhammaan addoomadu waa inay akhriyaan_only=1, oo isla markaad addoonka u dalacsiiyaan sayidkiisa, waa inay akhriyaan_only=0.
  • Ha iloobin in addoon kasta oo aan u dooranay kan uu noqon karo sayid (Orchestrator wuxuu leeyahay farsamo door ah oo dhan kaas oo addoonku u tixgeliyo musharaxa sayid cusub marka hore, kaas oo ku jira booska labaad, iyo addoonkee waa in la tixgeliyaa. sinaba looma dooranin si kastaba ha ahaatee. Haddii addoonku sayid noqdo, markaas rarka addoonku waa ku sii jirayaa oo rarka sayidku waa lagu darayaa, taas waa in la tixgeliyo.

Maxaad ugu baahan tahay Orchestrator haddii aadan mid lahayn?

  • Orchestrator waxa uu leeyahay is-dhexgal garaafeed saaxiibtinimo-u-saaxiibtinimo leh oo muujiya dhammaan topology-ga (eeg sawirka hoose).
  • Orchestrator waxa uu la socon kara kuwa ka dambeeya addoommada, iyo halka ay ku celcelintu guud ahaan burburtay (waxa aanu haynaa qoraallo ku lifaaqan Orchestrator dirida SMS).
  • Orchestrator ayaa kuu sheegaya adoomaha haysta khaladka GTID.

Interface Orchestrator:

Orchestrator ee MySQL: sababta aadan u dhisi karin mashruuc u dulqaadan kara la'aantiis
Waa maxay khaladka GTID?

Waxaa jira laba shuruudood oo waaweyn oo Orchestrator uu ku shaqeeyo:

  • Waa lagama maarmaan in GTID been abuur ah laga furo dhammaan mishiinnada ku jira kutlada MySQL; waxaanu awoodnay GTID.
  • Waa lagama maarmaan in uu jiro hal nooc oo binlogs ah meel kasta, waxaad isticmaali kartaa bayaan. Waxaan haysanay qaabayn kaas oo sayidkii iyo addoommadii ugu badnaa ay lahaayeen Row, iyo laba taariikhi ah ayaa ku hadhay qaabka isku dhafan. Natiijo ahaan, Orchestrator si fudud ma rabin inuu ku xidho addoommadan sayidkii cusub.

Xusuusnow in waxa ugu muhiimsan ee addoonka wax-soo-saarka uu yahay mid joogto ah oo uu la socdo sayidkiisa! Haddii aad haysato Aqoonsiga Ganacsiga Caalamiga ah (GTID) oo karti u leh labadaba sayidkaaga iyo addoonkaaga, markaa waxaad isticmaali kartaa shaqada gtid_subset si aad u ogaatid in codsiyada isku midka ah ee isbeddelka xogta lagu fuliyay mishiinadan. Wax badan oo arrintan ku saabsan ayaad ka akhrisan kartaa halkan.

Markaa, Orchestrator wuxuu ku tusayaa khaladka GTID in ay jiraan wax kala iibsi oo addoonka ah oo aan ku jirin sayidkii. Maxay tani u dhacaysaa?

  • Read_only=1 kuma shaqayn addoonka, qof ayaa ku xidhay oo dhammaystiray codsi ah in la beddelo xogta.
  • Super_read_only=1 kuma shaqayn addoonka, ka bacdi maamuluhu, isaga oo khalday seerfarka, ayaa galay oo halkaas ka fuliyay codsigii.
  • Haddii aad xisaabta ku dartey labada qodob ee hore, markaa waxaa jira hal khiyaamo oo kale: MySQL, codsi ah in lagu daadiyo binlogs sidoo kale wuxuu aadaa binlog-ga, markaa marka ugu horeysa, qaladka GTID wuxuu ka muuqan doonaa sayidkiisa iyo dhammaan addoommada. Sidee looga fogaado tan? Perona-5.7.25-28 waxay soo bandhigtay binlog_skip_flush_commands=1 dejinta, kaas oo mamnuucaya in wax lagu qoro binlogs. Mid la aasaasay ayaa ku yaal mareegta mysql.com bug.

Aan soo koobo dhamaan inta kor ku xusan. Haddii aadan rabin inaad u isticmaasho Orchestrator qaabka guuldarreysiga weli, ka dibna ku dheji qaabka indho-indheynta. Markaa waxaad had iyo jeer haysan doontaa indhahaaga hortooda khariidad is dhexgalka mashiinnada MySQL iyo macluumaadka muuqaalka ah ee ku saabsan nooca ku celcelinta mashiinka kasta, haddii addoommadii ay dib u dhacayaan, iyo tan ugu muhiimsan, sida ay ula socdaan sayidkii!

Su'aasha iska cad ayaa ah: "Sidee waa in Orchestrator u shaqeeyo?" Waa inuu ka doortaa sayid cusub oo ka mid ah addoommada hadda jira, ka dibna dib ugu xidhid dhammaan addoommada (tani waa waxa GTID loo baahan yahay; haddii aad isticmaasho farsamadii hore ee binlog_name iyo binlog_pos, ka dibna addoon ka beddelka sayidkii hadda oo aad u beddesho mid cusub). waa wax aan macquul aheyn!). Kahor intaanan yeelan Orchestrator, mar waxay ahayd inaan waxan oo dhan gacanta ku sameeyo. Sayidkii hore waxa uu laadlaadsanaa kontaroolaha Adaptec oo buggy; waxa uu lahaa ilaa 10 addoomo ah. Waxaan u baahday in aan VIP ka soo wareejiyo sayidkii oo aan ku wareejiyo mid ka mid ah addoommadii oo aan dib ugu xidho dhammaan addoommadii kale. Immisa konsole ayaan furay, imisa amar oo isku mar ah ayaan soo galay isaga, sidaas darteed addoommada kale oo dhan ku xidha sayidkaaga cusub oo u soo celi rarka. Guud ahaan, aad u xun...

Sidee ayuu Orchestrator u shaqeeyaa marka uu galo qaabka fashilka? Tan waxaa si fudud u muujinaya tusaale xaalad ah oo aan rabno inaan ka dhigno sayid mashiin ka awood badan, oo casri ah oo ka badan inta aan hadda haysanno.

Orchestrator ee MySQL: sababta aadan u dhisi karin mashruuc u dulqaadan kara la'aantiis
Jaantusku wuxuu muujinayaa habka dhexe ee hawsha. Maxaa horey loo qabtay ilaa heerkan? Waxaan sheegnay inaan dooneyno inaan ka dhigno qaar addoon ah sayid cusub, Orchestrator wuxuu bilaabay inuu si fudud dib ugu xidho dhammaan addoommadii kale, iyadoo sayidkii cusubi uu u dhaqmayo sidii mishiinka gaadiidka. Nidaamkan, wax qalad ah ma dhaco, dhammaan addoommada ayaa shaqeeya, Orchestrator wuxuu ka saaraa VIP-dii hore, wuxuu u wareejiyaa midka cusub, wuxuu sameeyaa read_only=0 oo wuxuu ilaaway sayidkii hore. Dhammaan! Wakhtiga hoos u dhaca adeegayagu waa wakhtiga wareejinta VIP, kaas oo ah 2-3 ilbiriqsi.

Waa intaas maanta, mahadsanid dhammaan. Waxa jiri doona maqaal labaad oo ku saabsan Orchestrator dhawaan. Filimka caanka ah ee Soofiyeedka "Garage", hal jilaa ayaa yiri, "Ma aadi doono sahaminta isaga!" Markaa, Orchestrator, waxaan ku raaci lahaa sahan!

Source: www.habr.com

Add a comment