Orchestrator da VIP azaman maganin HA don gungu na MySQL

A Citymobil muna amfani da bayanan MySQL azaman babban ma'ajiyar bayanan mu. Muna da tarin tarin bayanai da yawa don ayyuka da dalilai daban-daban.

Kasancewar maigidan akai-akai alama ce mai mahimmanci na aikin gabaɗayan tsarin da sassansa guda ɗaya. Farfadowa tari ta atomatik a yayin babban gazawar na rage yawan lokacin amsa lamarin da lokacin ragewar tsarin. A cikin wannan labarin, zan duba babban samuwa (HA) ƙira don gungu na MySQL dangane da MySQL Orchestrator da kuma adiresoshin IP na kama-da-wane (VIP).

Orchestrator da VIP azaman maganin HA don gungu na MySQL

HA bayani dangane da VIP

Na farko, a takaice zan gaya muku menene tsarin ajiyar bayanan mu.

Muna amfani da tsarin kwafi na yau da kullun tare da babban mai iya rubutawa guda ɗaya da kwafi-kawai da yawa. Tari na iya ƙunsar maigidan tsaka-tsaki - kumburin da yake duka kwafi ne da kuma na musamman ga wasu. Abokan ciniki suna samun damar kwafi ta hanyar HAProxy, wanda ke ba da damar ko da rarraba kaya da sauƙi mai sauƙi. Amfani da HAProxy saboda dalilai na tarihi ne, kuma a halin yanzu muna kan aiwatar da ƙaura zuwa ProxySQL.

Ana yin maimaitawa a cikin yanayin daidaita-daidaitacce bisa ga GTID. Wannan yana nufin cewa aƙalla kwafi ɗaya dole ne ya shiga ciniki kafin a yi la'akari da nasara. Wannan yanayin maimaitawa yana ba da ma'auni mafi kyau tsakanin aiki da amincin bayanai a yayin da ya sami gazawar kumburin kumburi. Ainihin duk canje-canje ana canjawa wuri daga maigida zuwa kwafi ta amfani da su Row Based Replication (RBR), amma wasu nodes na iya samun mixed binlog format.

Mai tsara makaɗa lokaci-lokaci yana sabunta yanayin cluster topology, yana nazarin bayanan da aka karɓa, kuma idan matsaloli suka taso, zai iya ƙaddamar da hanyar dawo da kai tsaye. Mai haɓakawa yana da alhakin tsarin kanta, tun da ana iya aiwatar da shi ta hanyoyi daban-daban: dangane da VIP, DNS, ta amfani da sabis na gano sabis ko hanyoyin da aka rubuta.

Hanya ɗaya mai sauƙi don dawo da maigida idan ya gaza shine amfani da adiresoshin VIP masu iyo.

Abin da kuke buƙatar sani game da wannan maganin kafin ci gaba:

  • VIP adireshin IP ne wanda bashi da alaƙa da takamaiman hanyar sadarwa ta zahiri. Idan kumburi ya gaza ko lokacin kulawar da aka tsara, za mu iya canza VIP zuwa wani albarkatu tare da ɗan gajeren lokaci.
  • Sakewa da bayar da adireshin IP mai kama-da-wane aiki ne mai arha da sauri.
  • Don aiki tare da VIP, kuna buƙatar samun dama ga uwar garken ta hanyar SSH, ko amfani da kayan aiki na musamman, misali, keepalived.

Bari mu duba yiwuwar matsaloli tare da mu wizard da kuma tunanin yadda atomatik dawo da inji kamata aiki.

Haɗin hanyar sadarwa zuwa maigida ya ɓace, ko matsala ta taso a matakin kayan aikin, kuma uwar garken ba ta samuwa.

  1. Mawallafin makaɗa na sabunta gungun topology, kowane kwafi ya ba da rahoton cewa babu maigidan. Mawaƙin ya fara aiwatar da zaɓin kwafin da ya dace da aikin sabon maigidan kuma ya fara farfadowa.
  2. Muna ƙoƙarin cire VIP daga tsohon maigidan - ba tare da nasara ba.
  3. Kwafi ya canza zuwa matsayin maigida. Ana sake gina topology.
  4. Ƙara sabon hanyar sadarwa tare da VIP. Tun da ba zai yiwu a cire VIP ba, muna fara aika buƙatu lokaci-lokaci a bango ARP kyauta. Irin wannan buƙatun / amsa yana ba ku damar sabunta teburin taswirar adireshin IP da MAC akan maɓallan da aka haɗa, ta haka za ku sanar da ku cewa VIP ɗinmu ya motsa. Wannan yana rage yuwuwar split brain lokacin dawowar tsohon maigida.
  5. Ana tura duk sabbin hanyoyin haɗin kai nan da nan zuwa sabon maigidan. Tsoffin haɗin haɗin gwiwa sun gaza kuma ana yin kira akai-akai zuwa ma'ajin bayanai a matakin aikace-aikacen.

Sabar tana aiki a yanayin al'ada, gazawar ta faru a matakin DBMS

Algorithm yayi kama da shari'ar da ta gabata: sabunta topology da fara tsarin dawowa. Tunda uwar garken yana samuwa, mun sami nasarar sakin VIP akan tsohon maigidan, canza shi zuwa sabon, kuma aika buƙatun ARP da yawa. Yiwuwar dawowar tsohon maigidan bai kamata ya shafi rukunin da aka sake ginawa da aikin aikace-aikacen ba.

Sauran matsaloli

Kasawar kwafi ko matsakaicin masters ba ya jagoranci zuwa ayyuka na atomatik kuma yana buƙatar sa hannun hannu.

A koyaushe ana ƙara ƙirar hanyar sadarwa ta hanyar sadarwa na ɗan lokaci, wato, bayan sake kunna uwar garken, VIP ɗin ba a sanya shi ta atomatik ba. Kowane misali na bayanai yana farawa a yanayin karantawa kawai ta tsohuwa, mawallafin makaɗa ta atomatik ya canza sabon uban don rubutawa kuma yayi ƙoƙarin shigarwa. read only akan tsohon maigida. Waɗannan ayyukan suna da nufin rage yuwuwar split brain.

Matsaloli na iya tasowa yayin aikin farfadowa, wanda kuma yakamata a sanar da su ta hanyar UI na ƙungiyar makaɗa baya ga daidaitattun kayan aikin sa ido. Mun faɗaɗa REST API ta ƙara wannan fasalin (PR a halin yanzu ana dubawa).

An gabatar da zane na gaba ɗaya na maganin HA a ƙasa.

Orchestrator da VIP azaman maganin HA don gungu na MySQL

Zabar sabon ubangida

Mawaƙin yana da wayo sosai kuma yana ƙoƙarin zaɓar mafi dacewa kwafi a matsayin sabon maigida bisa ga ka'idoji masu zuwa:

  • Kwafin yana bayan maigidan;
  • MySQL version na master da kwafi;
  • nau'in maimaitawa (RBR, SBR ko gauraye);
  • wuri a cikin guda ɗaya ko cibiyoyin bayanai daban-daban;
  • samuwa errant GTID - ma'amaloli da aka kashe a kan kwafi kuma ba a kan maigidan ba;
  • Hakanan ana la'akari da dokokin zaɓi na al'ada.

Ba kowace alama ce ta dace ɗan takara ga maigida ba. Misali, ana iya amfani da kwafi don adana bayanai, ko uwar garken yana da ƙarancin sanyin kayan masarufi. Mawaƙa goyon bayan dokokin hannu waɗanda za ku iya keɓance zaɓin zaɓin ɗan takarar ku daga mafi fifiko zuwa waɗanda aka yi watsi da su.

Amsa da lokacin dawowa

A cikin abin da ya faru, yana da mahimmanci don rage lokacin raguwar tsarin, don haka bari mu yi la'akari da sigogin MySQL waɗanda ke shafar ƙirƙira da sabunta tarin topology ta ƙungiyar makaɗa:

  • slave_net_timeout - adadin daƙiƙai a lokacin da kwafin yana jiran sabon bayanai ko siginar bugun zuciya ya zo daga maigidan kafin a gane haɗin a matsayin ɓacewa kuma a sake haɗawa. Ƙarƙashin ƙimar, da sauri kwafin zai iya ƙayyade cewa sadarwa tare da maigida ya karye. Mun saita wannan darajar zuwa 5 seconds.
  • MASTER_CONNECT_RETRY - adadin daƙiƙa tsakanin yunƙurin sake haɗawa. Idan akwai matsalolin cibiyar sadarwa, ƙarancin ƙima na wannan siga zai ba da damar haɗawa da sauri kuma ya hana tsarin dawo da gungu daga farawa. Ƙimar da aka ba da shawarar ita ce 1 seconds.
  • MASTER_RETRY_COUNT - matsakaicin adadin ƙoƙarin sake haɗawa.
  • MASTER_HEARTBEAT_PERIOD - tazara a cikin dakika bayan haka maigidan ya aika da siginar bugun zuciya. Matsakaicin zuwa rabin ƙimar slave_net_timeout.

Sigar mawaƙa:

  • DelayMasterPromotionIfSQLThreadNotUpToDate - idan daidai true, to ba za a yi amfani da aikin maigida a kan kwafin ɗan takarar ba har sai zaren SQL na kwafi ya kammala duk ma'amaloli da ba a yi amfani da su ba daga Log ɗin Relay. Muna amfani da wannan zaɓi don guje wa asarar ma'amaloli lokacin da duk kwafin ɗan takara ya faɗi a baya.
  • InstancePollSeconds - mita na ginawa da sabunta topology.
  • RecoveryPollSeconds - yawan bincike na topology. Idan an gano matsala, an fara dawo da topology. Wannan m, daidai da daƙiƙa 1.

Mawaƙan ƙungiyar makaɗa ce ke kadawa kowane kulli sau ɗaya kowane InstancePollSeconds seconds Lokacin da aka gano matsala, ana tilastawa jihar tari sabunta, sa'an nan kuma an yanke shawarar ƙarshe don yin farfadowa. Ta hanyar gwaji tare da mabambantan bayanai da sigogin mawaƙa, mun sami damar rage amsawa da lokacin dawowa zuwa 30 seconds.

Gwajin tsayawa

Mun fara gwada tsarin HA tare da haɓaka na gida gwajin benci da ci gaba da aiwatarwa a cikin gwaji da yanayin samarwa. Tsayin gida yana da cikakken sarrafa kansa bisa Docker kuma yana ba ku damar gwaji tare da daidaitawar ƙungiyar makaɗa da hanyar sadarwa, auna gungu daga sabar 2-3 zuwa dozin da yawa, da gudanar da atisaye a cikin amintaccen muhalli.

A lokacin darussan, mun zaɓi ɗayan hanyoyin kwaikwayon matsala: harbi maigida nan take ta amfani da kill -9, a hankali ƙare aikin kuma dakatar da uwar garken (docker-compose stop), kwaikwayi matsalolin hanyar sadarwa ta amfani da iptables -j REJECT ko iptables -j DROP. Muna sa ran sakamako mai zuwa:

  • makada zai gano matsaloli tare da maigidan kuma ya sabunta topology a cikin fiye da 10 seconds;
  • hanyar dawowa za ta fara ta atomatik: saitin hanyar sadarwa zai canza, aikin maigidan zai wuce zuwa kwafi, za a sake gina topology;
  • sabon maigidan zai zama mai iya rubutu, ba za a rasa kwafi masu rai ba yayin aikin sake ginawa;
  • za a fara rubuta bayanai zuwa ga sabon maigidan kuma a maimaita su;
  • Jimlar lokacin dawowa ba zai wuce daƙiƙa 30 ba.

Kamar yadda ka sani, tsarin zai iya zama daban-daban a cikin gwaji da kuma samar da yanayi saboda daban-daban hardware da saitunan cibiyar sadarwa, bambance-bambance a cikin roba da ainihin kaya, da dai sauransu. Don haka, muna gudanar da atisaye lokaci-lokaci a cikin yanayi na gaske, muna duba yadda tsarin ke aiki lokacin da haɗin hanyar sadarwa ya ɓace ko ɓangarorinsa guda ɗaya sun lalace. A nan gaba, muna son gina ababen more rayuwa iri ɗaya ga mahalli biyu da sarrafa gwajin sa.

binciken

Lafiyar babban kullin tsarin ajiya shine ɗayan manyan ayyuka na SRE da ƙungiyar aiki. Aiwatar da mawaƙa da maganin HA dangane da VIP sun ba mu damar cimma sakamako masu zuwa:

  • ingantaccen gano matsaloli tare da topology na tarin bayanai;
  • amsa ta atomatik da sauri ga abubuwan da suka shafi maigidan, rage raguwar tsarin lokaci.

Duk da haka, maganin yana da gazawa da rashin amfani:

  • ƙaddamar da makircin HA zuwa cibiyoyin bayanai da yawa zai buƙaci hanyar sadarwar L2 guda ɗaya a tsakanin su;
  • Kafin sanya VIP akan sabon master, muna buƙatar sakin shi akan tsohon. Tsarin yana da tsari, wanda ke ƙara lokacin dawowa;
  • sakin VIP yana buƙatar samun damar SSH zuwa uwar garken, ko wata hanyar kiran hanyoyin nesa. Tun da uwar garken ko bayanai suna fuskantar matsalolin da suka haifar da tsarin dawowa, ba za mu iya tabbatar da cewa cirewar VIP zai kammala nasara ba. Kuma wannan na iya haifar da bayyanar sabar guda biyu tare da adireshin IP iri ɗaya da matsala split brain.

Don gujewa split brain, zaka iya amfani da hanyar STONITH ("Shoot The Other Node In the Head"), wanda ke keɓewa gaba ɗaya ko ya hana kumburin matsalar. Akwai wasu hanyoyi don aiwatar da babban wadatar tari: haɗin VIP da DNS, gano sabis da sabis na wakili, kwafi na aiki tare da sauran hanyoyin da ke da nasu lahani da fa'idodi.

Na yi magana game da tsarinmu don ƙirƙirar tarin gazawar MySQL. Yana da sauƙin aiwatarwa kuma yana ba da matakin yarda da aminci a ƙarƙashin yanayi na yanzu. Yayin da gabaɗayan tsarin gabaɗaya da kayan more rayuwa musamman ke haɓaka, wannan hanyar ba shakka za ta haɓaka.

source: www.habr.com

Add a comment