Orchestrator for MySQL: chifukwa chake simungapange projekiti yololera zolakwika popanda izo

Ntchito iliyonse yayikulu idayamba ndi ma seva angapo. Poyamba panali seva imodzi ya DB, kenako akapolo adawonjezedwa kuti awerenge kuwerenga. Ndiyeno - imani! Mbuye alipo mmodzi, koma akapolo alipo ambiri; ngati mmodzi wa akapolo achoka, ndiye kuti zonse zidzakhala bwino, koma ngati mbuye achoka, zidzakhala zoipa: nthawi yopuma, admins akuyesera kukweza seva. Zoyenera kuchita? Sungani mbuye. Mnzanga Pavel analemba kale za izi nkhani, sindidzabwereza. M'malo mwake, ndikuwuzani chifukwa chomwe mukufunira Orchestrator ya MySQL!

Tiyeni tiyambe ndi funso lalikulu: "Kodi tingasinthire bwanji code ku makina atsopano pamene mbuye achoka?"

  • Ndimakonda chiwembu chokhala ndi VIP (Virtual IP) kwambiri, tikambirana pansipa. Ndilosavuta komanso lodziwikiratu, ngakhale lili ndi malire odziwikiratu: mbuye omwe tidzawasungira ayenera kukhala mu gawo la L2 ndi makina atsopano, ndiko kuti, tikhoza kuiwala za DC yachiwiri. Ndipo, mwamtendere, ngati mutatsatira lamulo loti L2 yaikulu ndi yoipa, chifukwa L2 ili pa rack yokha, ndipo L3 ili pakati pa ma racks, ndipo ndondomeko yotereyi imakhala ndi zoletsa zambiri.
  • Mutha kulemba dzina la DNS mu code ndikuyithetsa kudzera /etc/hosts. M'malo mwake, sipadzakhala chisankho. Ubwino wa chiwembu: palibe malire a njira yoyamba, ndiye kuti, ndizotheka kukonza mtanda wa DC. Koma ndiye funso lodziwikiratu likubuka: titha bwanji kutumiza kusintha kwa / etc / makamu kudzera pa Chidole-chosavomerezeka?
  • Mutha kusintha njira yachiwiri pang'ono: ikani caching DNS pa ma seva onse apa intaneti, pomwe codeyo imapita ku database yayikulu. Mutha kukhazikitsa TTL 60 pazolowera izi mu DNS. Zikuwoneka kuti ngati agwiritsidwa ntchito moyenera, njirayo ndi yabwino.
  • Chiwembu chopezeka ndi ntchito, kutanthauza kugwiritsa ntchito Consul ndi etcd.
  • Njira yosangalatsa ndi ProxySQL. Muyenera kuyendetsa magalimoto onse kupita ku MySQL kudzera pa ProxySQL; ProxySQL yokha imatha kudziwa yemwe ali mbuye. Mwa njira, mukhoza kuwerenga za imodzi mwa njira ntchito mankhwala anga nkhani.

Wolemba Orchestrator, akugwira ntchito ku Github, adayambitsa chiwembu choyamba ndi VIP, kenako adachisintha kukhala chiwembu ndi consul.

Mawonekedwe a zomangamanga:

Orchestrator for MySQL: chifukwa chake simungapange projekiti yololera zolakwika popanda izo
Ndikufotokozerani zochitika zodziwikiratu zomwe ziyenera kuganiziridwa:

  • Adilesi ya VIP sayenera kulembetsedwa mu config pa seva iliyonse. Tiyeni tiyerekeze mkhalidwe: mbuye anayambiranso, ndipo pamene akutsegula, Orchestrator anapita mu failover mode ndi kupanga mmodzi wa akapolo mbuye; ndiye mbuye wakale ananyamuka, ndipo tsopano VIP ili pa magalimoto awiri. Izi ndi zoipa.
  • Kwa oimba, muyenera kulemba script kuti muyitane mbuye wakale ndi mbuye watsopano. Pa mbuye wakale muyenera kuthamanga ifdown, ndipo pa mbuye watsopano - ifup vip. Zingakhale zabwino kuphatikizanso mu script iyi kuti pakagwa failover, doko pa kusintha kwa mbuye wakale amangozimitsidwa kuti apewe kugawanika kulikonse.
  • Pambuyo Orchestrator waitana script yanu kuti choyamba kuchotsa VIP ndi / kapena kuzimitsa doko pa chosinthira, ndiyeno amatchedwa VIP kukweza script pa mbuye watsopano, musaiwale kugwiritsa ntchito arping lamulo kuuza aliyense kuti VIP latsopano tsopano. Pano.
  • Akapolo onse amayenera kuwerenga_okha=1, ndipo mukangokweza kapoloyo kwa mbuye wake, adayenera kuwerenga_only=0.
  • Musaiwale kuti kapolo aliyense yemwe tasankha izi akhoza kukhala mbuye (Orchestrator ali ndi njira zonse zokonda zomwe kapolo angaganizire ngati wofuna kukhala mbuye watsopano, yemwe kachiwiri, ndi kapolo yemwe ayenera osasankhidwa konse muzochitika zilizonse mbuye). Ngati kapoloyo atakhala mbuye, ndiye kuti katundu wa kapoloyo adzakhalabe pa iye ndipo katundu wa mbuyeyo adzawonjezedwa, izi ziyenera kuganiziridwa.

Chifukwa chiyani mukufunikira Orchestrator ngati mulibe?

  • Orchestrator ili ndi mawonekedwe osavuta kugwiritsa ntchito omwe amawonetsa topology yonse (onani chithunzi pansipa).
  • Oyimba amatha kutsata akapolo omwe akutsalira, komanso komwe kubwereza kwawonongeka (tili ndi zolemba zomwe zimayikidwa ku Orchestrator potumiza SMS).
  • Oimba akukuuzani kuti ndi akapolo ati omwe ali ndi vuto la GTID.

Chiyankhulo cha Orchestrator:

Orchestrator for MySQL: chifukwa chake simungapange projekiti yololera zolakwika popanda izo
Kodi cholakwika cha GTID ndi chiyani?

Pali zofunika ziwiri kuti Orchestrator azigwira ntchito:

  • Ndikofunikira kuti pseudo GTID iziyatsidwa pamakina onse omwe ali mugulu la MySQL; tili ndi GTID yoyatsidwa.
  • Ndikofunikira kuti pakhale mtundu umodzi wa binlogs kulikonse, mutha kugwiritsa ntchito mawu. Tinali ndi kasinthidwe komwe mbuye ndi akapolo ambiri anali ndi Row, ndipo awiri m'mbiri adatsalira mu Mixed mode. Zotsatira zake, Orchestrator sanafune kulumikiza akapolowa ndi mbuye watsopanoyo.

Kumbukirani kuti chinthu chofunikira kwambiri pa kapolo wopanga ndi kugwirizana kwake ndi mbuye! Ngati muli ndi ID ya Global Transaction ID (GTID) pa mbuye wanu ndi kapolo wanu, mutha kugwiritsa ntchito gtid_subset kuti mudziwe ngati zopempha zomwezo zakusintha kwa data zachitikadi pamakinawa. Mutha kuwerenga zambiri za izi apa.

Chifukwa chake, Orchestrator amakuwonetsani kudzera pa GTID errant kuti pali zochitika pa kapolo zomwe sizili pa mbuye. N’chifukwa chiyani zimenezi zikuchitika?

  • Kuwerenga_only=1 sikuyatsidwa pa kapolo, wina adalumikiza ndikumaliza pempho losintha deta.
  • Super_read_only=1 sinagwiritsidwe ntchito pa kapoloyo, ndiye woyang'anira, atasokoneza seva, adalowa ndikuchita zomwe adapempha pamenepo.
  • Ngati mumaganizira mfundo zonse zam'mbuyomu, ndiye kuti pali chinyengo chimodzi: mu MySQL, pempho lothamangitsa ma binlogs limapitanso ku binlog, kotero pakuthamanga koyamba, cholakwika cha GTID chidzawonekera pa mbuye ndi akapolo onse. Kodi kupewa izi? Perona-5.7.25-28 adayambitsa binlog_skip_flush_commands=1 zoikamo, zomwe zimaletsa kulembera ma binlogs. Pali yokhazikika patsamba la mysql.com cholakwika.

Ndiloleni ndifotokoze mwachidule zonsezi. Ngati simukufuna kugwiritsa ntchito Orchestrator mufailover mode, ndiye ikani mumayendedwe owonera. Ndiye nthawi zonse mudzakhala ndi pamaso panu mapu a kuyanjana kwa makina a MySQL ndi zowoneka bwino za mtundu wanji wa kubwereza komwe kuli pamakina aliwonse, kaya akapolo akutsalira kumbuyo, ndipo chofunika kwambiri, momwe amakhalira ndi mbuye!

Funso lodziwikiratu ndilakuti: "Kodi Orchestrator iyenera kugwira ntchito bwanji?" Ayenera kusankha mbuye watsopano kuchokera kwa akapolo omwe alipo, ndikugwirizanitsa akapolo onse kwa iye (izi ndi zomwe GTID imafunikira; ngati mugwiritsa ntchito makina akale ndi binlog_name ndi binlog_pos, ndiyeno kusintha kapolo kuchokera kwa mbuye wamakono kupita kwa watsopano. zosatheka!). Tisanakhale ndi Orchestrator, nthawi ina ndimayenera kuchita zonsezi pamanja. Mbuye wakaleyo anali atapachikidwa chifukwa cha wowongolera ngolo ya Adaptec; anali ndi akapolo pafupifupi 10. Ndidafunikira kusamutsa VIP kuchokera kwa mbuye kupita kwa m'modzi wa akapolo ndikulumikizanso akapolo ena onse. Ndi ma console angati omwe ndimayenera kutsegula, ndi malamulo angati omwe ndinalowa nawo nthawi imodzi ... Ndinayenera kuyembekezera mpaka 3 koloko, kuchotsa katundu kwa akapolo onse kupatula awiri, kupanga makina oyambirira kuchokera kwa ambuye awiri, nthawi yomweyo sungani makina achiwiri. pamenepo, muphatikize akapolo ena onse kwa mbuye watsopanoyo, ndi kubweza katunduyo. Ponseponse, zoyipa ...

Kodi Orchestrator imagwira ntchito bwanji ikalowa mu failover mode? Izi zikuwonetseredwa mosavuta ndi chitsanzo cha nthawi yomwe tikufuna kupanga mbuye makina amphamvu kwambiri, amakono kuposa momwe tilili tsopano.

Orchestrator for MySQL: chifukwa chake simungapange projekiti yololera zolakwika popanda izo
Chithunzichi chikuwonetsa pakati pa ndondomekoyi. Kodi chachitika kale chiyani mpaka pano? Tinanena kuti tikufuna kupanga kapolo mbuye watsopano, Orchestrator anayamba kungogwirizanitsa akapolo ena onse, ndi mbuye watsopanoyo kukhala ngati makina odutsa. Ndi chiwembu ichi, palibe zolakwika zomwe zimachitika, akapolo onse amagwira ntchito, Orchestrator amachotsa VIP kwa mbuye wakale, amasamutsira kwa watsopano, amapanga read_only = 0 ndikuyiwala za mbuye wakale. Zonse! The downtime of our service is a VIP transfer time, which is 2-3 seconds.

Ndizo zonse za lero, zikomo nonse. Pakhala nkhani yachiwiri yokhudza Orchestrator posachedwa. Mufilimu yotchuka ya Soviet "Garage," munthu wina anati, "Sindingapite naye kukafufuza!" Chifukwa chake, Orchestrator, ndikadapita nanu pakuzindikira!

Source: www.habr.com

Kuwonjezera ndemanga