Ko te Orchestrator me te VIP hei otinga HA mo te roopu MySQL

I te Citymobil ka whakamahia e matou he papaa raraunga MySQL hei rokiroki raraunga tuuturu. He maha a matou kohinga putunga raraunga mo nga momo ratonga me nga kaupapa.

Ko te waatea tonu o te rangatira he tohu nui mo te mahi o te punaha katoa me ona waahanga takitahi. Ko te whakaora kapoi aunoa mena ka rahua te rangatira ka tino whakaitihia te wa whakautu maiki me te waatea o te punaha. I roto i tenei tuhinga, ka titiro ahau ki te hoahoa teitei (HA) mo te huinga MySQL i runga MySQL Orchestrator me nga wahitau IP mariko (VIP).

Ko te Orchestrator me te VIP hei otinga HA mo te roopu MySQL

otinga HA i runga i te VIP

Tuatahi, ka korero poto ahau ki a koe he aha ta matou punaha rokiroki raraunga.

Ka whakamahia e matou he kaupapa tukurua matarohia me te rangatira kotahi e uru ana ki te tuhi me nga tauira panui-anake maha. Kei roto i te tautau he ariki takawaenga - he node he tauira me te ariki mo etahi atu. Ka uru atu nga kaihoko ki nga tauira na roto i te HAProxy, ka taea te tohatoha kawenga me te ngawari ki te tauine. Ko te whakamahi i te HAProxy na nga take o mua, kei te haere tonu matou ki te heke ki ProxySQL.

Ka mahia te tukurua i roto i te aratau ahua-tukutahi i runga GTID. Ko te tikanga kia kotahi neke atu te tauira me tuhi i tetahi tauwhitinga i mua i te whakaaro kua angitu. Ko tenei aratau tukurua e whakarato ana i te taurite tino pai i waenga i te mahinga me te haumarutanga raraunga mena ka rahua te kopuku matua. Ko te tikanga ka whakawhitia nga huringa katoa mai i te rangatira ki nga tauira e whakamahi ana Row Based Replication (RBR), engari kei etahi pona mixed binlog format.

I ia wa ka whakahouhia e te kaitoi te ahua o te topology tautau, ka tātari i nga korero kua tae mai, a ki te puta he raru, ka taea e ia te whakarewa i tetahi tikanga whakaora aunoa. Ko te kaiwhakawhanake te kawenga mo te tikanga ake, na te mea ka taea te whakatinana i nga huarahi rereke: i runga i te VIP, DNS, ma te whakamahi i nga ratonga rapu ratonga, i nga tikanga tuhi-tuhi ranei.

Ko tetahi huarahi ngawari ki te whakahoki mai i te rangatira mena ka taka ko te whakamahi i nga wahitau VIP maanu.

He aha e hiahia ana koe ki te mohio mo tenei otinga i mua i te anga whakamua:

  • Ko te VIP he wahitau IP kaore i te hono ki tetahi atanga whatunga tinana motuhake. Mena ka rahua tetahi node, i te wa ranei o te tiaki kua whakaritea, ka taea e tatou te huri i te VIP ki tetahi atu rauemi me te iti o te wa heke.
  • Ko te tuku me te tuku i tetahi wahitau IP mariko he mahi iti me te tere.
  • Hei mahi tahi me te VIP, me uru koe ki te tūmau ma te SSH, te whakamahi ranei i nga taputapu motuhake, hei tauira, keepalived.

Me titiro ki nga raru pea me to maatau ruānuku me te whakaaro me pehea te mahi o te tikanga whakaora aunoa.

Kua ngaro te hononga whatunga ki te rangatira, kua ara ake ranei he raru i te taumata taputapu, kaore i te waatea te tūmau

  1. Ka whakahōuhia e te kaitoi te topology tautau, e kii ana ia tauira kaore i te waatea te rangatira. Ka timata te kaitoi te mahi ki te whiriwhiri i tetahi tauira e tika ana mo te mahi a te rangatira hou ka timata te whakaora.
  2. Kei te ngana matou ki te tango i te VIP mai i te rangatira tawhito - kaore he angitu.
  3. Ka huri te tauira ki te mahi rangatira. Kei te hanga ano te topology.
  4. Te taapiri i tetahi atanga whatunga hou me te VIP. I te mea kaore i taea te tango i te VIP, ka tiimata taatau ki te tuku tono ki muri ARP kore utu. Ko tenei momo tono/whakautu ka taea e koe te whakahou i te tepu maapeta IP me te MAC i runga i nga huringa hono, na reira ka whakamohio atu kua neke to tatou VIP. Ma tenei ka whakaiti i te tupono split brain i te hokinga mai o te rangatira tawhito.
  5. Ka tukuna nga hononga hou katoa ki te rangatira hou. Ka rahua nga hononga tawhito me nga waea tukurua ki te papaunga raraunga kei te taumata tono.

Kei te mahi te tūmau i roto i te aratau noa, he rahunga i te taumata DBMS

He rite te algorithm ki te keehi o mua: te whakahou i te topology me te timata i te tukanga whakaora. I te mea kei te waatea te tūmau, ka tukuna e matou te VIP i runga i te rangatira tawhito, ka whakawhiti ki te mea hou, ka tukuna etahi tono ARP. Ko te hokinga mai o te rangatira tawhito kaua e pa ki te kahui kua oti te hanga me te mahi o te tono.

Ētahi atu raru

Ko te kore o nga tauira, o nga rangatira takawaenga ranei e kore e arahi ki nga mahi aunoa me te wawaotanga a-ringa.

Ka taapirihia he atanga whatunga mariko mo te wa poto, ara, i muri i te whakaara ano i te tūmau, karekau te VIP i tohua aunoa. Ka timata ia tauira raraunga ki te aratau panui-anake ma te taunoa, ka huri aunoa te kaitoi i te rangatira hou ki te tuhi me te ngana ki te whakauru. read only i runga i te rangatira tawhito. Ko enei mahi e whai ana ki te whakaiti i te tupono split brain.

Ka ara ake pea nga raru i te wa o te mahi whakaora, me whakamohio ano ma te UI orchestrator hei taapiri i nga taputapu aro turuki. Kua whakawhānuihia e matou te REST API ma te taapiri i tenei waahanga (PR kei te arotakehia inaianei).

Ko te hoahoa whanui o te otinga HA kei raro iho nei.

Ko te Orchestrator me te VIP hei otinga HA mo te roopu MySQL

Te whiriwhiri rangatira hou

He maamaa te kaitoi, ka ngana ki te whiriwhiri te tauira tino pai hei rangatira hou i runga i nga paearu e whai ake nei:

  • kei muri te tauira i te rangatira;
  • MySQL putanga o te ariki me te tauira;
  • momo tukurua (RBR, SBR, whakauru ranei);
  • te waahi i roto i nga pokapū raraunga kotahi, rereke ranei;
  • wātea errant GTID - nga whakawhitinga i mahia i runga i te tauira kaore i runga i te rangatira;
  • ka whakaarohia ano nga ture whiriwhiri ritenga.

Ehara nga tohu katoa he kaitono pai mo te rangatira. Hei tauira, ka taea te whakamahi i tetahi tauira ki te taapiri i nga raraunga, he ngoikore ake ranei te whirihoranga taputapu a te tūmau. Kaiparapara tautoko ture ā-ringa e taea ai e koe te whakarite i o manakohanga whiriwhiri kaitono mai i te nuinga o te waa ki te warewarehia.

Te whakautu me te wa whakaora

Mena ka puta mai he aitua, he mea nui ki te whakaiti i te wa paheketanga o te punaha, no reira me whakaaro tatou ki nga tawhā MySQL e pa ana ki te hanga me te whakahou i te topology tautau e te kaitoi:

  • slave_net_timeout — te maha o nga hēkona i te wa e tatari ana te tauira mo nga raraunga hou, he tohu manawa ranei kia tae mai i te rangatira i mua i te mohio kua ngaro, kua honoa ano te hononga. Ko te iti ake o te uara, ko te tere ake ka taea e te tauira te whakatau kua pakaru te korero me te rangatira. Ka tautuhia e matou tenei uara ki te 5 hēkona.
  • MASTER_CONNECT_RETRY — te maha o nga hēkona i waenga i nga nganatanga hono. Mena he raruraru whatunga, he iti te uara mo tenei tawhā ka taea te hono tere me te aukati i te tukanga whakaora tautau mai i te tiimata. Ko te uara e taunaki ana he 1 hēkona.
  • MASTER_RETRY_COUNT — te maha morahi o nga ngana hono ano.
  • MASTER_HEARTBEAT_PERIOD — te wa i roto i nga hēkona i muri mai ka tukuna e te rangatira he tohu manawa. Taunoa ki te haurua o te uara slave_net_timeout.

Ko nga whiringa kaitoi:

  • DelayMasterPromotionIfSQLThreadNotUpToDate - ki te rite true, ka kore e whakamahia te mahi matua ki te tauira tauira kia oti ra ano i te miro SQL o te tauira nga whakawhitinga katoa kaore i whakamahia mai i te Relay Log. Ka whakamahia e matou tenei whiringa hei karo i te ngaro o nga tauwhitinga ina taka nga tauira kaitono katoa.
  • InstancePollSeconds — auau o te hanga me te whakahou i te topology.
  • RecoveryPollSeconds - auau o te tātari topology. Mena ka kitea he raru, ka timatahia te whakaora topology. Tenei mau tonu, rite ki te 1 hēkona.

Ka pootihia ia node kahui e te kaitarai i ia wa InstancePollSeconds hēkona Ina kitea he raru, ka pehia te ahua o te tautau whakahoutia, katahi ka puta te whakatau whakamutunga ki te mahi whakaora. Na roto i te whakamatautau i nga papaaarangi rereke me nga tawhā orchestrator, i taea e matou te whakaiti i te whakautu me te wa whakaora ki te 30 hēkona.

pae whakamatautau

I timata matou ki te whakamatautau i te kaupapa HA me te whakawhanaketanga o te rohe pae whakamatautau me te whakatinanatanga ano i roto i nga taiao whakamatautau me te whakaputa. Ko te tuunga o te rohe he tino aunoa i runga i te Docker ka taea e koe te whakamatautau me te whirihoranga o te kaitoi me te whatunga, te tauine i te kahui mai i nga kaitoro 2-3 ki etahi tatini, me te whakahaere i nga mahi i roto i te taiao haumaru.

I te wa o nga mahi whakangungu, ka kowhiria e matou tetahi o nga tikanga whakatauira raru: kopere tonu te rangatira ma te whakamahi kill -9, whakamutua ngawari te tukanga ka whakamutua te tūmau (docker-compose stop), whakataurite i nga raru whatunga ma te whakamahi iptables -j REJECT ranei iptables -j DROP. Kei te tumanako matou ki nga hua e whai ake nei:

  • ka kitea e te kaitoi nga raruraru me te rangatira me te whakahou i te topology i roto i te 10 hēkona;
  • ka timata te tikanga whakaora: ka huri te whirihoranga whatunga, ka tukuna te mahi a te rangatira ki te tauira, ka hangaia ano te topology;
  • ka taea te tuhi te rangatira hou, e kore e ngaro nga tauira ora i te wa e hanga ana;
  • ka timata nga raraunga ki te tuhi ki te rangatira hou me te tukurua;
  • Ko te katoa o te wa whakaora kia kaua e neke ake i te 30 hēkona.

Kei te mohio koe, he rereke te ahua o te punaha i roto i nga whakamatautau me nga taiao whakaputa na te rereke o nga taputapu me nga whirihoranga whatunga, nga rereketanga o te hangai me te kawenga tuuturu, aha atu. Na reira, ka whakahaerehia e matou nga whakangungu i ia wa i roto i nga ahuatanga tuuturu, te tirotiro i te ahuatanga o te punaha ka ngaro te hononga whatunga, ka whakahekehia ranei ona waahanga takitahi. I te wa kei te heke mai, e hiahia ana matou ki te hanga i tetahi hanganga tino rite mo nga taiao e rua me te whakaaunoa i ana whakamatautau.

kitenga

Ko te hauora o te punaha rokiroki matua tetahi o nga mahi matua a te SRE me te roopu whakahaere. Ko te whakatinanatanga o te kaitoi me te otinga HA i runga i te VIP ka taea e matou te whakatutuki i nga hua e whai ake nei:

  • te kitenga pono o nga raru me te topology o te kahui papaa raraunga;
  • te whakautu aunoa me te tere ki nga maiki e pa ana ki te rangatira, te whakaiti i te wa o te punaha.

Heoi ano, he herenga me nga ngoikoretanga o te otinga:

  • ko te whakarahi i te kaupapa HA ki te maha o nga pokapū raraunga ka hiahiatia he whatunga L2 kotahi i waenganui i a raatau;
  • I mua i te tuku VIP i runga i te rangatira hou, me tuku atu ki runga i te mea tawhito. He raupapa te tukanga, e whakanui ana i te wa whakaora;
  • Ko te tuku i te VIP me uru te SSH ki te tūmau, ki tetahi atu tikanga mo te waea i nga tikanga mamao. I te mea kei te raru te tūmau, te pātengi raraunga rānei i raru ai te tukanga whakaora, karekau e tino mohio ka oti pai te tangohanga VIP. Na tenei ka arahi ki te ahua o nga kaitoro e rua me te wahitau IP mariko kotahi me te raru split brain.

Hei karo split brain, ka taea e koe te whakamahi i te tikanga KOTONITI ("Koperea Tetahi atu Node ki te Upoko"), ka tino wehe, ka mono ranei i te node raru. He huarahi ke atu hei whakatinana i te waatea o te roopu: he huinga o te VIP me te DNS, te rapu ratonga me nga ratonga takawaenga, te tukutahi me etahi atu tikanga kei a raatau ake nga ngoikoretanga me nga painga.

I korero ahau mo to maatau huarahi ki te hanga i te roopu failover MySQL. He ngawari ki te whakatinana me te whakarato i te taumata pono e manakohia ana i raro i nga ahuatanga o naianei. I te wa e whanake ana te katoa o te punaha me nga hanganga, kare e kore ka tipu haere tenei huarahi.

Source: will.com

Tāpiri i te kōrero