Orkestratur u VIP bħala soluzzjoni HA għal cluster MySQL

F'Citymobil nużaw database MySQL bħala l-ħażna tad-dejta persistenti ewlenija tagħna. Għandna diversi clusters ta' database għal diversi servizzi u skopijiet.

Id-disponibbiltà kostanti tal-kaptan hija indikatur kritiku tal-prestazzjoni tas-sistema kollha u l-partijiet individwali tagħha. L-irkupru awtomatiku tal-clusters f'każ ta' falliment ewlieni jnaqqas ħafna l-ħin ta' rispons għall-inċidenti u l-waqfien tas-sistema. F'dan l-artikolu, se nħares lejn disinn ta 'disponibbiltà għolja (HA) għal cluster MySQL ibbażat fuq Orkestratur MySQL u indirizzi IP virtwali (VIP).

Orkestratur u VIP bħala soluzzjoni HA għal cluster MySQL

Soluzzjoni HA bbażata fuq VIP

L-ewwel, jien ser ngħidlek fil-qosor x'inhi s-sistema tagħna ta 'ħażna tad-dejta.

Aħna nużaw skema ta 'replikazzjoni klassika b'master wieħed aċċessibbli għall-kitba u repliki multipli li jinqraw biss. Raggruppament jista' jkun fih master intermedju - node li huwa kemm replika kif ukoll kaptan għal oħrajn. Il-klijenti jaċċessaw repliki permezz ta' HAProxy, li jippermetti distribuzzjoni uniformi tat-tagħbija u skalar faċli. L-użu ta 'HAProxy huwa dovut għal raġunijiet storiċi, u bħalissa qegħdin fil-proċess ta' migrazzjoni lejn ProxySQL.

Ir-replikazzjoni titwettaq f'modalità semi-sinkronika bbażata fuq GTID. Dan ifisser li mill-inqas replika waħda trid tilloggja tranżazzjoni qabel ma titqies bħala suċċess. Dan il-mod ta 'replikazzjoni jipprovdi bilanċ ottimali bejn il-prestazzjoni u s-sikurezza tad-dejta fil-każ ta' falliment tan-node prinċipali. Bażikament il-bidliet kollha huma trasferiti mill-kaptan għall-repliki bl-użu Row Based Replication (RBR), iżda xi nodi jista 'jkollhom mixed binlog format.

L-orkestratur jaġġorna perjodikament l-istat tat-topoloġija tal-cluster, janalizza l-informazzjoni riċevuta, u jekk jinqalgħu problemi, jista 'jniedi proċedura ta' rkupru awtomatiku. L-iżviluppatur huwa responsabbli għall-proċedura nnifisha, peress li tista 'tiġi implimentata b'modi differenti: ibbażata fuq VIP, DNS, bl-użu ta' servizzi ta 'skoperta ta' servizzi jew mekkaniżmi miktuba minnha stess.

Mod wieħed sempliċi biex tirrestawra kaptan jekk jonqos huwa li tuża indirizzi VIP f'wiċċ l-ilma.

Dak li għandek bżonn tkun taf dwar din is-soluzzjoni qabel timxi 'l quddiem:

  • VIP huwa indirizz IP li mhuwiex assoċjat ma 'interface ta' netwerk fiżiku speċifiku. Jekk node jonqos jew waqt il-manutenzjoni skedata, nistgħu naqilbu l-VIP għal riżors ieħor b'waqfien minimu.
  • Il-ħelsien u l-ħruġ ta 'indirizz IP virtwali huwa operazzjoni irħisa u veloċi.
  • Biex taħdem ma 'VIP, għandek bżonn aċċess għas-server permezz ta' SSH, jew l-użu ta 'utilitajiet speċjali, pereżempju, keepalived.

Ejja nħarsu lejn il-problemi possibbli bil-wizard tagħna u nimmaġina kif għandu jaħdem il-mekkaniżmu ta 'rkupru awtomatiku.

Il-konnettività tan-netwerk mal-kaptan sparixxa, jew qamet problema fil-livell tal-ħardwer, u s-server mhux disponibbli

  1. L-orkestratur jaġġorna t-topoloġija tal-cluster, kull replika tirrapporta li l-kaptan mhux disponibbli. L-orkestratur jibda l-proċess li jagħżel replika adattata għar-rwol tal-kaptan il-ġdid u jibda l-irkupru.
  2. Qed nippruvaw inneħħu l-VIP mill-kaptan antik - mingħajr suċċess.
  3. Ir-replika taqleb għar-rwol ta’ kaptan. It-topoloġija qed tinbena mill-ġdid.
  4. Żieda ta 'interface ta' netwerk ġdid ma 'VIP. Peress li ma kienx possibbli li titneħħa l-VIP, nibdew perjodikament nibagħtu talba fl-isfond ARP bla ħlas. Dan it-tip ta 'talba/rispons jippermettilek taġġorna t-tabella tal-immappjar tal-indirizz IP u MAC fuq is-swiċċijiet konnessi, u b'hekk tinnotifikak li l-VIP tagħna ċaqlaq. Dan jimminimizza l-probabbiltà split brain meta tirritorna l-kaptan antik.
  5. Il-konnessjonijiet il-ġodda kollha jiġu diretti mill-ġdid lill-kaptan il-ġdid. Konnessjonijiet qodma ifallu u sejħiet ripetuti għad-database isiru fil-livell tal-applikazzjoni.

Is-server qed jopera fil-modalità normali, seħħet falliment fil-livell DBMS

L-algoritmu huwa simili għall-każ preċedenti: l-aġġornament tat-topoloġija u l-bidu tal-proċess ta 'rkupru. Peress li s-server huwa disponibbli, aħna nirrilaxxaw b'suċċess il-VIP fuq il-kaptan l-antik, nittrasferih għal dak il-ġdid, u nibagħtu diversi talbiet ARP. Ir-ritorn possibbli tal-kaptan antik m'għandux jaffettwa l-cluster mibni mill-ġdid u l-operat tal-applikazzjoni.

Problemi oħra

Nuqqas ta' repliki jew masters intermedji ma jwassalx għal azzjonijiet awtomatiċi u teħtieġ intervent manwali.

Interface tan-netwerk virtwali dejjem tiżdied temporanjament, jiġifieri, wara reboot tas-server, il-VIP ma jiġix assenjat awtomatikament. Kull istanza tad-database tibda fil-modalità ta 'qari biss b'mod awtomatiku, l-orkestratur awtomatikament jaqleb il-kaptan il-ġdid biex jikteb u jipprova jinstalla read only fuq il-kaptan antik. Dawn l-azzjonijiet huma mmirati biex inaqqsu l-probabbiltà split brain.

Jistgħu jinqalgħu problemi matul il-proċess ta 'rkupru, li għandu wkoll jiġi nnotifikat permezz tal-UI tal-orkestratur flimkien mal-għodod ta' monitoraġġ standard. Espandejna l-API REST billi żidna din il-karatteristika (PR bħalissa taħt reviżjoni).

Id-dijagramma ġenerali tas-soluzzjoni HA hija ppreżentata hawn taħt.

Orkestratur u VIP bħala soluzzjoni HA għal cluster MySQL

Għażla ta 'kaptan ġdid

L-orkestratur huwa intelliġenti biżżejjed u jipprova jagħżel l-aktar replika adattata bħala kaptan ġdid skont il-kriterji li ġejjin:

  • ir-replika għadha lura wara l-kaptan;
  • Verżjoni MySQL tal-kaptan u replika;
  • tip ta' replikazzjoni (RBR, SBR jew imħallat);
  • post fl-istess ċentri tad-dejta jew differenti;
  • disponibbiltà errant GTID — tranżazzjonijiet li ġew esegwiti fuq ir-replika u mhumiex fuq il-kaptan;
  • regoli tal-għażla tad-dwana jitqiesu wkoll.

Mhux kull cue huwa kandidat ideali għal kaptan. Per eżempju, replika tista 'tintuża biex tagħmel backup tad-dejta, jew is-server għandu konfigurazzjoni ta' hardware aktar dgħajfa. Orkestratur jappoġġja regoli manwali li bihom tista’ tippersonalizza l-preferenzi tal-għażla tal-kandidati tiegħek mill-aktar preferuti għal injorati.

Ħin ta 'rispons u rkupru

F'każ ta' inċident, huwa importanti li jiġi minimizzat il-perijodi ta' waqfien tas-sistema, allura ejja nikkunsidraw il-parametri MySQL li jaffettwaw il-ħolqien u l-aġġornament tat-topoloġija tal-cluster mill-orkestratur:

  • slave_net_timeout — in-numru ta’ sekondi li matulhom ir-replika tistenna li tasal dejta ġdida jew sinjal ta’ taħbit tal-qalb mill-kaptan qabel ma l-konnessjoni tiġi rikonoxxuta bħala mitlufa u konnessa mill-ġdid. Iktar ma jkun baxx il-valur, aktar malajr ir-replika tista 'tiddetermina li l-komunikazzjoni mal-kaptan tinkiser. Aħna nissettjaw dan il-valur għal 5 sekondi.
  • MASTER_CONNECT_RETRY — numru ta' sekondi bejn tentattivi ta' konnessjoni mill-ġdid. Fil-każ ta 'problemi tan-netwerk, valur baxx għal dan il-parametru se jippermetti konnessjoni mill-ġdid malajr u jipprevjeni l-proċess ta' rkupru tal-cluster milli jibda. Il-valur rakkomandat huwa 1 sekonda.
  • MASTER_RETRY_COUNT — numru massimu ta' tentattivi ta' konnessjoni mill-ġdid.
  • MASTER_HEARTBEAT_PERIOD — intervall f'sekondi li warajh il-kaptan jibgħat sinjal tat-taħbit tal-qalb. Defaults għal nofs il-valur slave_net_timeout.

Parametri tal-orkestratur:

  • DelayMasterPromotionIfSQLThreadNotUpToDate - jekk ugwali true, allura r-rwol prinċipali ma jiġix applikat fuq ir-replika tal-kandidat sakemm il-ħajta SQL tar-replika tkun lesta t-tranżazzjonijiet kollha mhux applikati mir-Relay Log. Aħna nużaw din l-għażla biex nevitaw li nitilfu t-tranżazzjonijiet meta r-repliki kollha tal-kandidati jaqgħu lura.
  • InstancePollSeconds — il-frekwenza tal-bini u l-aġġornament tat-topoloġija.
  • RecoveryPollSeconds — frekwenza ta' analiżi tat-topoloġija. Jekk tinstab problema, jinbeda l-irkupru tat-topoloġija. Dan kostanti, ugwali għal 1 sekonda.

Kull node cluster jiġi mistħarrġa mill-orkestratur darba kull InstancePollSeconds sekondi Meta tinstab problema, l-istat tal-cluster jiġi sfurzat aġġornata, u mbagħad tittieħed id-deċiżjoni finali biex jitwettaq l-irkupru. Billi esperimentaw b'database differenti u parametri tal-orkestratur, stajna nnaqqsu l-ħin tar-rispons u l-irkupru għal 30 sekonda.

Stand tat-test

Bdejna nittestjaw l-iskema HA bl-iżvilupp ta’ lokali bank tat-test u aktar implimentazzjoni f'ambjenti ta' ttestjar u produzzjoni. L-istand lokali huwa kompletament awtomatizzat ibbażat fuq Docker u jippermettilek tesperimenta bil-konfigurazzjoni tal-orkestratur u n-netwerk, tiskala l-cluster minn 2-3 servers għal diversi għexieren, u twettaq eżerċizzji f'ambjent sikur.

Matul l-eżerċizzji, nagħżlu wieħed mill-metodi ta 'emulazzjoni tal-problema: istantanjament rimja lill-kaptan bl-użu kill -9, ittemm bil-mod il-proċess u waqqaf is-server (docker-compose stop), jissimulaw problemi tan-netwerk bl-użu iptables -j REJECT jew iptables -j DROP. Nistennew ir-riżultati li ġejjin:

  • l-orkestratur jiskopri problemi mal-kaptan u jaġġorna t-topoloġija f'mhux aktar minn 10 sekondi;
  • il-proċedura ta 'rkupru se tibda awtomatikament: il-konfigurazzjoni tan-netwerk se tinbidel, ir-rwol tal-kaptan jgħaddi għar-replika, it-topoloġija terġa' tinbena;
  • il-kaptan il-ġdid se jsir writable, repliki ħajjin mhux se jintilfu matul il-proċess tal-bini mill-ġdid;
  • id-data se tibda tinkiteb lill-kaptan il-ġdid u tiġi replikata;
  • Il-ħin totali ta 'rkupru ma jkunx aktar minn 30 sekonda.

Kif tafu, is-sistema tista 'tġib ruħha b'mod differenti f'ambjenti ta' test u produzzjoni minħabba ħardwer differenti u konfigurazzjonijiet tan-netwerk, differenzi fit-tagħbija sintetika u reali, eċċ. Għalhekk, perjodikament nagħmlu eżerċizzji f'kundizzjonijiet reali, u niċċekkjaw kif is-sistema taġixxi meta tintilef il-konnettività tan-netwerk jew il-partijiet individwali tagħha jiġu degradati. Fil-futur, irridu nibnu infrastruttura kompletament identika għaż-żewġ ambjenti u nawtomatizzaw l-ittestjar tagħha.

Sejbiet

Is-saħħa tan-node prinċipali tas-sistema tal-ħażna hija waħda mill-kompiti ewlenin tal-SRE u t-tim tal-operazzjonijiet. L-implimentazzjoni tal-orkestratur u s-soluzzjoni HA bbażata fuq VIP ippermettilna niksbu r-riżultati li ġejjin:

  • sejbien affidabbli ta' problemi bit-topoloġija tal-cluster tad-database;
  • reazzjoni awtomatika u rapida għal inċidenti relatati mal-kaptan, li tnaqqas il-perijodi ta 'waqfien tas-sistema.

Madankollu, is-soluzzjoni għandha l-limitazzjonijiet u l-iżvantaġġi tagħha:

  • l-iskala tal-iskema HA għal diversi ċentri tad-dejta se teħtieġ netwerk L2 wieħed bejniethom;
  • Qabel ma jassenjaw VIP fuq il-kaptan il-ġdid, irridu nirrilaxxawha fuq il-qadim. Il-proċess huwa sekwenzjali, li jżid il-ħin ta 'rkupru;
  • ir-rilaxx tal-VIP jeħtieġ aċċess SSH għas-server, jew kwalunkwe metodu ieħor ta 'sejħa ta' proċeduri remoti. Peress li s-server jew id-database qed jesperjenza problemi li kkawżaw il-proċess ta 'rkupru, ma nistgħux inkunu ċerti li t-tneħħija VIP titlesta b'suċċess. U dan jista 'jwassal għad-dehra ta' żewġ servers bl-istess indirizz IP virtwali u problema split brain.

Tevita split brain, tista 'tuża l-metodu STONITH (“Shot The Other Node In The Head”), li jiżola kompletament jew jiskonnettja n-nodu problema. Hemm modi oħra biex tiġi implimentata disponibbiltà għolja ta 'cluster: taħlita ta' VIP u DNS, servizzi ta 'skoperta ta' servizzi u prokura, replikazzjoni sinkronika u metodi oħra li għandhom l-iżvantaġġi u l-vantaġġi tagħhom stess.

Tkellimt dwar l-approċċ tagħna għall-ħolqien ta 'cluster ta' failover MySQL. Huwa faċli li jiġi implimentat u jipprovdi livell aċċettabbli ta 'affidabbiltà taħt il-kundizzjonijiet attwali. Hekk kif is-sistema kollha b'mod ġenerali u l-infrastruttura b'mod partikolari jiżviluppaw, dan l-approċċ bla dubju se jevolvi.

Sors: www.habr.com

Żid kumment